From 3229f865ea34e2a168c8c9b86dc044947fc47b20 Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Tue, 20 Jun 2017 11:11:55 +0100 Subject: [PATCH] Fix #492: Shortcut to Hide all sidebars simultaneously https://github.com/BestImageViewer/geeqie/issues/492 Menu item to toggle hiding info, sort, and files panes. Default key is backtick. --- doc/docbook/GuideMainWindowMenus.xml | 8 ++++++ src/layout_util.c | 43 ++++++++++++++++++++++++++++ src/options.c | 1 + src/typedefs.h | 8 ++++++ 4 files changed, 60 insertions(+) diff --git a/doc/docbook/GuideMainWindowMenus.xml b/doc/docbook/GuideMainWindowMenus.xml index edfec796..a0ee5858 100644 --- a/doc/docbook/GuideMainWindowMenus.xml +++ b/doc/docbook/GuideMainWindowMenus.xml @@ -1352,6 +1352,14 @@ Toggles display of the Sort Manager sidebar. + + + Hide Bars + + + This item is intended to be used by its shortcut key - by default this is the backtick key. When pressed, the info sidebar, sort manager and file list will be hidden (if displayed). Pressing backtick again will revert the display to its previous layout. + + Toggle slideshow diff --git a/src/layout_util.c b/src/layout_util.c index 2f340b5f..4495b1e1 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -64,6 +64,7 @@ static gboolean layout_bar_enabled(LayoutWindow *lw); static gboolean layout_bar_sort_enabled(LayoutWindow *lw); +static void layout_bars_hide_toggle(LayoutWindow *lw); static void layout_util_sync_views(LayoutWindow *lw); /* @@ -996,6 +997,13 @@ static void layout_menu_bar_sort_cb(GtkToggleAction *action, gpointer data) layout_bar_sort_toggle(lw); } +static void layout_menu_hide_bars_cb(GtkToggleAction *action, gpointer data) +{ + LayoutWindow *lw = data; + + layout_bars_hide_toggle(lw); +} + static void layout_menu_slideshow_cb(GtkToggleAction *action, gpointer data) { LayoutWindow *lw = data; @@ -1804,6 +1812,7 @@ static GtkToggleActionEntry menu_toggle_entries[] = { { "HideToolbar", NULL, N_("Hide tool_bar"), NULL, N_("Hide toolbar"), CB(layout_menu_toolbar_cb), FALSE }, { "SBar", NULL, N_("_Info sidebar"), "K", N_("Info sidebar"), CB(layout_menu_bar_cb), FALSE }, { "SBarSort", NULL, N_("Sort _manager"), "S", N_("Sort manager"), CB(layout_menu_bar_sort_cb), FALSE }, + { "HideBars", NULL, N_("Hide Bars"), "grave", N_("Hide Bars"), CB(layout_menu_hide_bars_cb), FALSE }, { "SlideShow", GTK_STOCK_MEDIA_PLAY, N_("Toggle _slideshow"), "S", N_("Toggle slideshow"), CB(layout_menu_slideshow_cb), FALSE }, { "UseColorProfiles", GTK_STOCK_SELECT_COLOR, N_("Use _color profiles"), NULL, N_("Use color profiles"), CB(layout_color_menu_enable_cb), FALSE}, { "UseImageProfile", NULL, N_("Use profile from _image"), NULL, N_("Use profile from image"), CB(layout_color_menu_use_image_cb), FALSE}, @@ -2061,6 +2070,7 @@ static const gchar *menu_ui_description = " " " " " " +" " " " " " " " @@ -2940,6 +2950,39 @@ void layout_bar_sort_toggle(LayoutWindow *lw) layout_util_sync_views(lw); } +static void layout_bars_hide_toggle(LayoutWindow *lw) +{ + if (lw->options.bars_state.hidden) + { + lw->options.bars_state.hidden = FALSE; + if (lw->options.bars_state.sort) + { + gtk_widget_show(lw->bar_sort); + } + if (lw->options.bars_state.info) + { + gtk_widget_show(lw->bar); + } + layout_tools_float_set(lw, lw->options.tools_float, + lw->options.bars_state.tools_hidden); + } + else + { + lw->options.bars_state.hidden = TRUE; + lw->options.bars_state.sort = layout_bar_sort_enabled(lw); + lw->options.bars_state.info = layout_bar_enabled(lw); + lw->options.bars_state.tools_float = lw->options.tools_float; + lw->options.bars_state.tools_hidden = lw->options.tools_hidden; + + gtk_widget_hide(lw->bar); + if (lw->bar_sort) + gtk_widget_hide(lw->bar_sort); + layout_tools_float_set(lw, lw->options.tools_float, TRUE); + } + + layout_util_sync_views(lw); +} + void layout_bars_new_image(LayoutWindow *lw) { layout_bar_new_image(lw); diff --git a/src/options.c b/src/options.c index 817969df..24656c33 100644 --- a/src/options.c +++ b/src/options.c @@ -255,6 +255,7 @@ LayoutOptions *init_layout_options(LayoutOptions *options) options->image_overlay.histogram_mode = 1; options->image_overlay.state = OSD_SHOW_NOTHING; options->animate = FALSE; + options->bars_state.hidden = FALSE; return options; } diff --git a/src/typedefs.h b/src/typedefs.h index 61b2bc2c..ccc3c2b4 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -629,6 +629,14 @@ struct _LayoutOptions gboolean tools_hidden; gboolean toolbar_hidden; + struct { + gboolean info; + gboolean sort; + gboolean tools_float; + gboolean tools_hidden; + gboolean hidden; + } bars_state; + gchar *home_path; gchar *last_path; -- 2.20.1