Fix #702: Menubar takes too much space
authorColin Clark <colin.clark@cclark.uk>
Tue, 16 Jun 2020 12:43:40 +0000 (13:43 +0100)
committerColin Clark <colin.clark@cclark.uk>
Tue, 16 Jun 2020 12:43:40 +0000 (13:43 +0100)
https://github.com/BestImageViewer/geeqie/issues/702

Additional option in Preferences/General

doc/docbook/GuideOptionsGeneral.xml
src/layout.c
src/options.c
src/options.h
src/preferences.c
src/rcfile.c

index 96c9d5a..32ab40a 100644 (file)
       </varlistentry>\r
     </variablelist>\r
   </section>\r
+  <section id="ExpandMenuToolbar">\r
+    <title>Expand menu and toolbar</title>\r
+    <para>Expand the menu and toolbar to the full width of the window.</para>\r
+    <note>\r
+      <para>Geeqie must be restarted for changes to take effect.</para>\r
+    </note>\r
+  </section>\r
   <section id="InfoSidebar">\r
     <title>Info Sidebar component heights</title>\r
     <para>\r
index 6b1dbe1..91419f4 100644 (file)
@@ -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 */
 
index 758de74..f5441fc 100644 (file)
@@ -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;
index 5644929..e677dba 100644 (file)
@@ -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;
index 6797705..e8c2743 100644 (file)
@@ -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);
index d6b62ba..ba2f0fd 100644 (file)
@@ -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;