From 72d1c47ba932b77af853af924ab3220ee3f3e7ff Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sun, 12 Oct 2025 22:17:20 +0530 Subject: [PATCH 1/5] Move show/hide menu to toolbar right click for discoverability --- src/ui/widget/desktop-widget.cpp | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/ui/widget/desktop-widget.cpp b/src/ui/widget/desktop-widget.cpp index bb7449508a..418b64208a 100644 --- a/src/ui/widget/desktop-widget.cpp +++ b/src/ui/widget/desktop-widget.cpp @@ -27,6 +27,9 @@ #include #include #include +#include +#include +#include "ui/popup-menu.h" #include "conn-avoid-ref.h" #include "document.h" @@ -63,6 +66,32 @@ using Inkscape::UI::Dialog::DialogMultipaned; using Inkscape::UI::Dialog::DialogWindow; using Inkscape::UI::Widget::UnitTracker; +Gtk::PopoverMenu create_toolbar_context_menu() +{ + auto menu = Gio::Menu::create(); + + auto section = Gio::Menu::create(); + section->append_item(Gio::MenuItem::create(_("Commands Bar"), "win.canvas-commands-bar")); + section->append_item(Gio::MenuItem::create(_("Snap Controls Bar"), "win.canvas-snap-controls-bar")); + section->append_item(Gio::MenuItem::create(_("Tool Controls Bar"), "win.canvas-tool-control-bar")); + section->append_item(Gio::MenuItem::create(_("Toolbox"), "win.canvas-toolbox")); + section->append_item(Gio::MenuItem::create(_("Rulers"), "win.canvas-rulers")); + section->append_item(Gio::MenuItem::create(_("Scroll bars"), "win.canvas-scroll-bars")); + section->append_item(Gio::MenuItem::create(_("Palette"), "win.canvas-palette")); + section->append_item(Gio::MenuItem::create(_("Statusbar"), "win.canvas-statusbar")); + menu->append_section(section); + + auto popovermenu = Gtk::PopoverMenu{menu}; + popovermenu.set_has_arrow(false); + return popovermenu; +} + +Gtk::PopoverMenu &get_toolbar_context_menu() +{ + static auto menu = create_toolbar_context_menu(); + return menu; +} + //--------------------------------------------------------------------- /* SPDesktopWidget */ @@ -98,6 +127,17 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) _top_toolbars = Gtk::make_managed(); _top_toolbars->set_name("TopToolbars"); + + auto click = Gtk::GestureClick::create(); + click->set_button(GDK_BUTTON_SECONDARY); + click->set_propagation_phase(Gtk::PropagationPhase::CAPTURE); + click->signal_pressed().connect([this] (int, double x, double y) { + auto &menu = get_toolbar_context_menu(); + menu.set_parent(*_top_toolbars); + UI::popup_at(menu, *_top_toolbars, x, y); + }); + _top_toolbars->add_controller(click); + prepend(*_top_toolbars); /* Toolboxes */ -- GitLab From 384e7ff96b1a237d1d45ca72d2db4e4114246d5c Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sun, 12 Oct 2025 22:19:55 +0530 Subject: [PATCH 2/5] Fix formatting --- src/ui/widget/desktop-widget.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ui/widget/desktop-widget.cpp b/src/ui/widget/desktop-widget.cpp index 418b64208a..6c10ec481e 100644 --- a/src/ui/widget/desktop-widget.cpp +++ b/src/ui/widget/desktop-widget.cpp @@ -26,10 +26,9 @@ #include #include #include -#include #include +#include #include -#include "ui/popup-menu.h" #include "conn-avoid-ref.h" #include "document.h" @@ -43,6 +42,7 @@ #include "ui/dialog/dialog-multipaned.h" #include "ui/dialog/swatches.h" #include "ui/monitor.h" // Monitor aspect ratio +#include "ui/popup-menu.h" #include "ui/themes.h" #include "ui/toolbar/command-toolbar.h" #include "ui/toolbar/snap-toolbar.h" @@ -127,11 +127,11 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) _top_toolbars = Gtk::make_managed(); _top_toolbars->set_name("TopToolbars"); - + auto click = Gtk::GestureClick::create(); click->set_button(GDK_BUTTON_SECONDARY); click->set_propagation_phase(Gtk::PropagationPhase::CAPTURE); - click->signal_pressed().connect([this] (int, double x, double y) { + click->signal_pressed().connect([this](int, double x, double y) { auto &menu = get_toolbar_context_menu(); menu.set_parent(*_top_toolbars); UI::popup_at(menu, *_top_toolbars, x, y); -- GitLab From b0ac46d233e024b7ba7c49698f857a0ac0ba8199 Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Sun, 12 Oct 2025 23:34:58 +0530 Subject: [PATCH 3/5] Change PropagationPhase CAPTURE to BUBBLE --- src/ui/widget/desktop-widget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/widget/desktop-widget.cpp b/src/ui/widget/desktop-widget.cpp index 6c10ec481e..e849770359 100644 --- a/src/ui/widget/desktop-widget.cpp +++ b/src/ui/widget/desktop-widget.cpp @@ -130,7 +130,7 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) auto click = Gtk::GestureClick::create(); click->set_button(GDK_BUTTON_SECONDARY); - click->set_propagation_phase(Gtk::PropagationPhase::CAPTURE); + click->set_propagation_phase(Gtk::PropagationPhase::BUBBLE); click->signal_pressed().connect([this](int, double x, double y) { auto &menu = get_toolbar_context_menu(); menu.set_parent(*_top_toolbars); -- GitLab From 217af35011579cde087da6b75ef359f4e6a8f873 Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Mon, 13 Oct 2025 00:20:21 +0530 Subject: [PATCH 4/5] Add click menu to left side toolbox as well --- src/ui/widget/desktop-widget.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ui/widget/desktop-widget.cpp b/src/ui/widget/desktop-widget.cpp index e849770359..debcd9da27 100644 --- a/src/ui/widget/desktop-widget.cpp +++ b/src/ui/widget/desktop-widget.cpp @@ -86,12 +86,6 @@ Gtk::PopoverMenu create_toolbar_context_menu() return popovermenu; } -Gtk::PopoverMenu &get_toolbar_context_menu() -{ - static auto menu = create_toolbar_context_menu(); - return menu; -} - //--------------------------------------------------------------------- /* SPDesktopWidget */ @@ -132,7 +126,7 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) click->set_button(GDK_BUTTON_SECONDARY); click->set_propagation_phase(Gtk::PropagationPhase::BUBBLE); click->signal_pressed().connect([this](int, double x, double y) { - auto &menu = get_toolbar_context_menu(); + auto menu = create_toolbar_context_menu(); menu.set_parent(*_top_toolbars); UI::popup_at(menu, *_top_toolbars, x, y); }); @@ -162,6 +156,17 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) }; _tbbox->property_position().signal_changed().connect([=](){ adjust_pos(); }); + auto toolbox_click = Gtk::GestureClick::create(); + toolbox_click->set_button(GDK_BUTTON_SECONDARY); + toolbox_click->set_propagation_phase(Gtk::PropagationPhase::BUBBLE); + toolbox_click->signal_pressed().connect([this](int, double x, double y) { + auto menu = create_toolbar_context_menu(); + menu.set_parent(*_tbbox); + UI::popup_at(menu, *_tbbox, x, y); + }); + _tbbox->add_controller(toolbox_click); + + snap_toolbar = std::make_unique(_window); _hbox->append(*snap_toolbar); // May be moved later. -- GitLab From 52dfc954c7ce9d2a439e76a4f261a6672bc97968 Mon Sep 17 00:00:00 2001 From: Heapnotizer Date: Mon, 13 Oct 2025 00:21:08 +0530 Subject: [PATCH 5/5] Fix formatting --- src/ui/widget/desktop-widget.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ui/widget/desktop-widget.cpp b/src/ui/widget/desktop-widget.cpp index debcd9da27..11bf763262 100644 --- a/src/ui/widget/desktop-widget.cpp +++ b/src/ui/widget/desktop-widget.cpp @@ -166,7 +166,6 @@ SPDesktopWidget::SPDesktopWidget(InkscapeWindow *inkscape_window) }); _tbbox->add_controller(toolbox_click); - snap_toolbar = std::make_unique(_window); _hbox->append(*snap_toolbar); // May be moved later. -- GitLab