From 36f616e060283ec1b59111efe04e3b86e8d0702a Mon Sep 17 00:00:00 2001 From: tim_rawlinson Date: Fri, 22 Feb 2019 10:18:03 +0000 Subject: [PATCH 1/3] Make showing the shortcut in dialog title bars optional --- src/ui/dialog/inkscape-preferences.cpp | 3 +++ src/ui/dialog/inkscape-preferences.h | 1 + src/ui/interface.cpp | 19 ++++++++++++------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 1f094abbfd..14b939a16a 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1067,6 +1067,7 @@ void InkscapePreferences::initPageUI() _win_hide_task.init ( _("Dialogs are hidden in taskbar"), "/options/dialogsskiptaskbar/value", true); _win_save_viewport.init ( _("Save and restore documents viewport"), "/options/savedocviewport/value", true); _win_zoom_resize.init ( _("Zoom when window is resized"), "/options/stickyzoom/value", false); + _win_show_shortcut_dialog.init ( _("Show shortcut in dialog title bar (requires restart)"), "/options/shortcutindialogtitle/value", false); _win_ontop_none.init ( C_("Dialog on top", "None"), "/options/transientpolicy/value", 0, false, nullptr); _win_ontop_normal.init ( _("Normal"), "/options/transientpolicy/value", 1, true, &_win_ontop_none); _win_ontop_agressive.init ( _("Aggressive"), "/options/transientpolicy/value", 2, false, &_win_ontop_none); @@ -1144,6 +1145,8 @@ void InkscapePreferences::initPageUI() _("Zoom drawing when document window is resized, to keep the same area visible (this is the default which can be changed in any window using the button above the right scrollbar)")); _page_windows.add_line( true, "", _win_save_viewport, "", _("Save documents viewport (zoom and panning position). Useful to turn off when sharing version controlled files.")); + _page_windows.add_line( true, "", _win_show_shortcut_dialog, "", + _("Show the dialog shortcut in its title bar.")); this->AddPage(_page_windows, _("Windows"), iter_ui, PREFS_PAGE_UI_WINDOWS); // Grids diff --git a/src/ui/dialog/inkscape-preferences.h b/src/ui/dialog/inkscape-preferences.h index a9b485a01c..0a66416717 100644 --- a/src/ui/dialog/inkscape-preferences.h +++ b/src/ui/dialog/inkscape-preferences.h @@ -268,6 +268,7 @@ protected: UI::Widget::PrefCheckButton _win_hide_task; UI::Widget::PrefCheckButton _win_save_viewport; UI::Widget::PrefCheckButton _win_zoom_resize; + UI::Widget::PrefCheckButton _win_show_shortcut_dialog; UI::Widget::PrefSpinButton _win_trans_focus; /**< The dialog transparency setting for when the dialog is focused. */ UI::Widget::PrefSpinButton _win_trans_blur; /**< The dialog transparency setting for when the dialog is out of focus. */ UI::Widget::PrefSpinButton _win_trans_time; /**< How much time to go from one transparency setting to another */ diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index 45736da522..b1480fdfc1 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -186,13 +186,18 @@ sp_ui_dialog_title_string(Inkscape::Verb *verb, gchar *c) g_free(atitle); - shortcut = sp_shortcut_get_primary(verb); - if (shortcut!=GDK_KEY_VoidSymbol) { - gchar* key = sp_shortcut_get_label(shortcut); - s = g_stpcpy(s, " ("); - s = g_stpcpy(s, key); - g_stpcpy(s, ")"); - g_free(key); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool showShortcut = prefs->getBool("/options/shortcutindialogtitle/value", false); + + if (showShortcut) { + shortcut = sp_shortcut_get_primary(verb); + if (shortcut!=GDK_KEY_VoidSymbol) { + gchar* key = sp_shortcut_get_label(shortcut); + s = g_stpcpy(s, " ("); + s = g_stpcpy(s, key); + g_stpcpy(s, ")"); + g_free(key); + } } } -- GitLab From 81f4b0687c791f413509ed6e25946db67ae89407 Mon Sep 17 00:00:00 2001 From: Tim Rawlinson Date: Fri, 22 Feb 2019 12:30:06 +0000 Subject: [PATCH 2/3] Update inkscape-preferences.cpp --- src/ui/dialog/inkscape-preferences.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 14b939a16a..9d9a1eac2a 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -1067,7 +1067,7 @@ void InkscapePreferences::initPageUI() _win_hide_task.init ( _("Dialogs are hidden in taskbar"), "/options/dialogsskiptaskbar/value", true); _win_save_viewport.init ( _("Save and restore documents viewport"), "/options/savedocviewport/value", true); _win_zoom_resize.init ( _("Zoom when window is resized"), "/options/stickyzoom/value", false); - _win_show_shortcut_dialog.init ( _("Show shortcut in dialog title bar (requires restart)"), "/options/shortcutindialogtitle/value", false); + _win_show_shortcut_dialog.init ( _("Show shortcut in dialog title bar"), "/options/shortcutindialogtitle/value", false); _win_ontop_none.init ( C_("Dialog on top", "None"), "/options/transientpolicy/value", 0, false, nullptr); _win_ontop_normal.init ( _("Normal"), "/options/transientpolicy/value", 1, true, &_win_ontop_none); _win_ontop_agressive.init ( _("Aggressive"), "/options/transientpolicy/value", 2, false, &_win_ontop_none); -- GitLab From 32ef640ecf2e2a4f2267e42d0c21f67c93c5d8a5 Mon Sep 17 00:00:00 2001 From: tim_rawlinson Date: Fri, 22 Feb 2019 20:48:54 +0000 Subject: [PATCH 3/3] Add tooltips to dialog grip/title bars --- src/ui/dialog/dialog.cpp | 9 ++++++++- src/ui/dialog/dialog.h | 1 + src/ui/dialog/dock-behavior.cpp | 2 +- src/ui/interface.cpp | 5 +---- src/ui/interface.h | 2 +- src/ui/widget/dock-item.cpp | 8 +++++++- src/ui/widget/dock-item.h | 3 ++- 7 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/ui/dialog/dialog.cpp b/src/ui/dialog/dialog.cpp index 2ba2856ffe..decc18530a 100644 --- a/src/ui/dialog/dialog.cpp +++ b/src/ui/dialog/dialog.cpp @@ -55,18 +55,25 @@ Dialog::Dialog(Behavior::BehaviorFactory behavior_factory, const char *prefs_pat _prefs_path(prefs_path), _verb_num(verb_num), _title(), + _tooltip(), _apply_label(std::move(apply_label)), _desktop(nullptr), _is_active_desktop(true), _behavior(nullptr) { gchar title[500]; + gchar tooltip[500]; if (verb_num) { - sp_ui_dialog_title_string (Inkscape::Verb::get(verb_num), title); + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool showShortcut = prefs->getBool("/options/shortcutindialogtitle/value", false); + + sp_ui_dialog_title_string (Inkscape::Verb::get(verb_num), title, showShortcut); + sp_ui_dialog_title_string (Inkscape::Verb::get(verb_num), tooltip, true); } _title = title; + _tooltip = tooltip; _behavior = behavior_factory(*this); _desktop = SP_ACTIVE_DESKTOP; diff --git a/src/ui/dialog/dialog.h b/src/ui/dialog/dialog.h index 404f4f9a33..03d0da6828 100644 --- a/src/ui/dialog/dialog.h +++ b/src/ui/dialog/dialog.h @@ -116,6 +116,7 @@ protected: Glib::ustring const _prefs_path; int _verb_num; Glib::ustring _title; + Glib::ustring _tooltip; Glib::ustring _apply_label; SPDesktop * _desktop; bool _is_active_desktop; diff --git a/src/ui/dialog/dock-behavior.cpp b/src/ui/dialog/dock-behavior.cpp index 87f312a944..42ba2e18dc 100644 --- a/src/ui/dialog/dock-behavior.cpp +++ b/src/ui/dialog/dock-behavior.cpp @@ -30,7 +30,7 @@ DockBehavior::DockBehavior(Dialog &dialog) : _dock_item(*SP_ACTIVE_DESKTOP->getDock(), Inkscape::Verb::get(dialog._verb_num)->get_id(), dialog._title.c_str(), (Inkscape::Verb::get(dialog._verb_num)->get_image() ? - Inkscape::Verb::get(dialog._verb_num)->get_image() : ""), + Inkscape::Verb::get(dialog._verb_num)->get_image() : ""), dialog._tooltip.c_str(), static_cast( Inkscape::Preferences::get()->getInt(_dialog._prefs_path + "/state", UI::Widget::DockItem::DOCKED_STATE)), diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp index b1480fdfc1..a73ff462bb 100644 --- a/src/ui/interface.cpp +++ b/src/ui/interface.cpp @@ -169,7 +169,7 @@ sp_ui_close_all() void -sp_ui_dialog_title_string(Inkscape::Verb *verb, gchar *c) +sp_ui_dialog_title_string(Inkscape::Verb *verb, gchar *c, bool showShortcut) { SPAction *action; unsigned int shortcut; @@ -186,9 +186,6 @@ sp_ui_dialog_title_string(Inkscape::Verb *verb, gchar *c) g_free(atitle); - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool showShortcut = prefs->getBool("/options/shortcutindialogtitle/value", false); - if (showShortcut) { shortcut = sp_shortcut_get_primary(verb); if (shortcut!=GDK_KEY_VoidSymbol) { diff --git a/src/ui/interface.h b/src/ui/interface.h index 67cb0f3931..a4dfe6a5a8 100644 --- a/src/ui/interface.h +++ b/src/ui/interface.h @@ -54,7 +54,7 @@ void sp_ui_import_files(gchar *buffer); */ unsigned int sp_ui_close_all (); -void sp_ui_dialog_title_string (Inkscape::Verb * verb, char* c); +void sp_ui_dialog_title_string (Inkscape::Verb * verb, char* c, bool showShortcut = false); Glib::ustring getLayoutPrefPath( Inkscape::UI::View::View *view ); diff --git a/src/ui/widget/dock-item.cpp b/src/ui/widget/dock-item.cpp index a02009ab5d..6395d31430 100644 --- a/src/ui/widget/dock-item.cpp +++ b/src/ui/widget/dock-item.cpp @@ -22,7 +22,8 @@ namespace UI { namespace Widget { DockItem::DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& long_name, - const Glib::ustring& icon_name, State state, GdlDockPlacement placement) : + const Glib::ustring& icon_name, const Glib::ustring& tooltip, + State state, GdlDockPlacement placement) : _dock(dock), _prev_state(state), _prev_position(0), @@ -51,6 +52,11 @@ DockItem::DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& l _gdl_dock_item = gdl_dock_item_new(name.c_str(), long_name.c_str(), gdl_dock_behavior); } + GtkWidget *grip = gdl_dock_item_get_grip(GDL_DOCK_ITEM(_gdl_dock_item)); + if (grip) { + gtk_widget_set_tooltip_text(grip, tooltip.c_str()); + } + _frame.set_shadow_type(Gtk::SHADOW_IN); gtk_container_add (GTK_CONTAINER (_gdl_dock_item), GTK_WIDGET (_frame.gobj())); _frame.add(_dock_item_box); diff --git a/src/ui/widget/dock-item.h b/src/ui/widget/dock-item.h index be7ac77d2b..b26a69759c 100644 --- a/src/ui/widget/dock-item.h +++ b/src/ui/widget/dock-item.h @@ -43,7 +43,8 @@ public: ICONIFIED_FLOATING_STATE}; // item iconified in its assigned dock from float DockItem(Dock& dock, const Glib::ustring& name, const Glib::ustring& long_name, - const Glib::ustring& icon_name, State state, GdlDockPlacement placement); + const Glib::ustring& icon_name, const Glib::ustring& tooltip, + State state, GdlDockPlacement placement); ~DockItem(); -- GitLab