From 5ae1d8323249e6e51af351a85b3ea27ad3b9d1bf Mon Sep 17 00:00:00 2001 From: Colin Clark Date: Tue, 16 Jun 2020 13:43:40 +0100 Subject: [PATCH] Fix #702: Menubar takes too much space https://github.com/BestImageViewer/geeqie/issues/702 Additional option in Preferences/General --- doc/docbook/GuideOptionsGeneral.xml | 7 ++++ src/layout.c | 51 +++++++++++++++++++++++------ src/options.c | 1 + src/options.h | 1 + src/preferences.c | 10 ++++++ src/rcfile.c | 2 ++ 6 files changed, 62 insertions(+), 10 deletions(-) diff --git a/doc/docbook/GuideOptionsGeneral.xml b/doc/docbook/GuideOptionsGeneral.xml index 96c9d5a4..32ab40ae 100644 --- a/doc/docbook/GuideOptionsGeneral.xml +++ b/doc/docbook/GuideOptionsGeneral.xml @@ -233,6 +233,13 @@ +
+ Expand menu and toolbar + Expand the menu and toolbar to the full width of the window. + + Geeqie must be restarted for changes to take effect. + +
Info Sidebar component heights diff --git a/src/layout.c b/src/layout.c index 6b1dbe19..91419f46 100644 --- a/src/layout.c +++ b/src/layout.c @@ -332,14 +332,28 @@ static GtkWidget *layout_tool_setup(LayoutWindow *lw) GtkWidget *scd; GtkWidget *menu_tool_bar; GtkWidget *tabcomp; + GtkWidget *menu_bar; + GtkWidget *toolbar; box = gtk_vbox_new(FALSE, 0); - menu_tool_bar = layout_actions_menu_tool_bar(lw); - DEBUG_NAME(menu_tool_bar); - gtk_widget_show(menu_tool_bar); - gtk_box_pack_start(GTK_BOX(lw->main_box), lw->menu_tool_bar, FALSE, FALSE, 0); - if (lw->options.toolbar_hidden) gtk_widget_hide(lw->toolbar[TOOLBAR_MAIN]); + if (!options->expand_menu_toolbar) + { + menu_bar = layout_actions_menu_bar(lw); + gtk_box_pack_start(GTK_BOX(box), menu_bar, FALSE, FALSE, 0); + + toolbar = layout_actions_toolbar(lw, TOOLBAR_MAIN); + gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, FALSE, 0); + if (lw->options.toolbar_hidden) gtk_widget_hide(toolbar); + } + else + { + menu_tool_bar = layout_actions_menu_tool_bar(lw); + DEBUG_NAME(menu_tool_bar); + gtk_widget_show(menu_tool_bar); + gtk_box_pack_start(GTK_BOX(lw->main_box), lw->menu_tool_bar, FALSE, FALSE, 0); + if (lw->options.toolbar_hidden) gtk_widget_hide(lw->toolbar[TOOLBAR_MAIN]); + } tabcomp = tab_completion_new_with_history(&lw->path_entry, NULL, "path_list", -1, layout_path_entry_cb, lw); @@ -1575,7 +1589,7 @@ static void layout_tools_setup(LayoutWindow *lw, GtkWidget *tools, GtkWidget *fi gtk_window_set_resizable(GTK_WINDOW(lw->tools), TRUE); gtk_container_set_border_width(GTK_CONTAINER(lw->tools), 0); - gtk_container_remove(GTK_CONTAINER(lw->main_box), lw->menu_tool_bar); + if (options->expand_menu_toolbar) gtk_container_remove(GTK_CONTAINER(lw->main_box), lw->menu_tool_bar); new_window = TRUE; } @@ -1591,7 +1605,7 @@ static void layout_tools_setup(LayoutWindow *lw, GtkWidget *tools, GtkWidget *fi vbox = gtk_vbox_new(FALSE, 0); DEBUG_NAME(vbox); gtk_container_add(GTK_CONTAINER(lw->tools), vbox); - gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(lw->menu_tool_bar), FALSE, FALSE, 0); + if (options->expand_menu_toolbar) gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(lw->menu_tool_bar), FALSE, FALSE, 0); gtk_widget_show(vbox); layout_status_setup(lw, vbox, TRUE); @@ -1744,7 +1758,14 @@ static void layout_grid_setup(LayoutWindow *lw) lw->group_box = gtk_vbox_new(FALSE, 0); DEBUG_NAME(lw->group_box); - gtk_box_pack_end(GTK_BOX(lw->main_box), lw->group_box, TRUE, TRUE, 0); + if (options->expand_menu_toolbar) + { + gtk_box_pack_end(GTK_BOX(lw->main_box), lw->group_box, TRUE, TRUE, 0); + } + else + { + gtk_box_pack_start(GTK_BOX(lw->main_box), lw->group_box, TRUE, TRUE, 0); + } gtk_widget_show(lw->group_box); priority_location = layout_grid_compass(lw); @@ -1851,6 +1872,7 @@ static void layout_grid_setup(LayoutWindow *lw) void layout_style_set(LayoutWindow *lw, gint style, const gchar *order) { FileData *dir_fd; + gint i; if (!layout_valid(&lw)) return; @@ -1884,9 +1906,18 @@ void layout_style_set(LayoutWindow *lw, gint style, const gchar *order) /* lw->image is preserved together with lw->utility_box */ if (lw->utility_box) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->utility_box)), lw->utility_box); - if (lw->toolbar[TOOLBAR_STATUS]) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->toolbar[TOOLBAR_STATUS])), lw->toolbar[TOOLBAR_STATUS]); + if (options->expand_menu_toolbar) + { + if (lw->toolbar[TOOLBAR_STATUS]) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->toolbar[TOOLBAR_STATUS])), lw->toolbar[TOOLBAR_STATUS]); - if (lw->menu_tool_bar) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->menu_tool_bar)), lw->menu_tool_bar); + if (lw->menu_tool_bar) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->menu_tool_bar)), lw->menu_tool_bar); + } + else + { + if (lw->menu_bar) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->menu_bar)), lw->menu_bar); + for (i = 0; i < TOOLBAR_COUNT; i++) + if (lw->toolbar[i]) gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(lw->toolbar[i])), lw->toolbar[i]); + } /* clear it all */ diff --git a/src/options.c b/src/options.c index 758de747..f5441fc1 100644 --- a/src/options.c +++ b/src/options.c @@ -164,6 +164,7 @@ ConfOptions *init_options(ConfOptions *options) options->show_icon_names = TRUE; options->show_star_rating = FALSE; options->show_predefined_keyword_tree = TRUE; + options->expand_menu_toolbar = FALSE; options->slideshow.delay = 50; options->slideshow.random = FALSE; diff --git a/src/options.h b/src/options.h index 5644929c..e677dba1 100644 --- a/src/options.h +++ b/src/options.h @@ -39,6 +39,7 @@ struct _ConfOptions gboolean draw_rectangle; gboolean show_predefined_keyword_tree; gboolean overunderexposed; + gboolean expand_menu_toolbar; /* various */ gboolean tree_descend_subdirs; diff --git a/src/preferences.c b/src/preferences.c index 67977058..e8c27439 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -421,6 +421,7 @@ static void config_window_apply(void) options->info_rating.height = c_options->info_rating.height; options->show_predefined_keyword_tree = c_options->show_predefined_keyword_tree; + options->expand_menu_toolbar = c_options->expand_menu_toolbar; options->marks_save = c_options->marks_save; options->with_rename = c_options->with_rename; @@ -2074,6 +2075,15 @@ static void config_tab_general(GtkWidget *notebook) pref_checkbox_new_int(group, _("Refresh on file change"), options->update_on_time_change, &c_options->update_on_time_change); + + pref_spacer(group, PREF_PAD_GROUP); + + group = pref_group_new(vbox, FALSE, _("Expand menu and toolbar"), GTK_ORIENTATION_VERTICAL); + + pref_checkbox_new_int(group, _("Expand menu and toolbar (NOTE! Geeqie must be restarted for change to take effect)"), + options->expand_menu_toolbar, &c_options->expand_menu_toolbar); + gtk_widget_set_tooltip_text(group, _("Expand the menu and toolbar to the full width of the window")); + pref_spacer(group, PREF_PAD_GROUP); group = pref_group_new(vbox, FALSE, _("Info sidebar heights"), GTK_ORIENTATION_VERTICAL); diff --git a/src/rcfile.c b/src/rcfile.c index d6b62ba5..ba2f0fd0 100644 --- a/src/rcfile.c +++ b/src/rcfile.c @@ -343,6 +343,7 @@ static void write_global_attributes(GString *outstr, gint indent) WRITE_NL(); WRITE_BOOL(*options, tools_restore_state); WRITE_NL(); WRITE_BOOL(*options, save_dialog_window_positions); WRITE_NL(); WRITE_BOOL(*options, show_window_ids); + WRITE_NL(); WRITE_BOOL(*options, expand_menu_toolbar); WRITE_NL(); WRITE_UINT(*options, log_window_lines); WRITE_NL(); WRITE_BOOL(*options, log_window.timer_data); @@ -767,6 +768,7 @@ static gboolean load_global_params(const gchar **attribute_names, const gchar ** if (READ_BOOL(*options, tools_restore_state)) continue; if (READ_BOOL(*options, save_dialog_window_positions)) continue; if (READ_BOOL(*options, show_window_ids)) continue; + if (READ_BOOL(*options, expand_menu_toolbar)) continue; if (READ_INT(*options, log_window_lines)) continue; if (READ_BOOL(*options, log_window.timer_data)) continue; -- 2.20.1