# HG changeset patch # User Colin Clark # Date 1534091375 -3600 # Node ID e9e8e8b2afcef1fda9df487b5c73ff1e25c2a4b7 # Parent 865f7eab9b6d63c10908a53208a7d6f95f20f15b Move menu/toolbar to top of window Moving the menu/toolbar to the top of the window eliminates the problem of these items being partially obscured when the tools pane is reduced to a small width. diff -r 865f7eab9b6d -r e9e8e8b2afce src/layout.c --- a/src/layout.c Sat Aug 11 19:48:17 2018 +0100 +++ b/src/layout.c Sun Aug 12 17:29:35 2018 +0100 @@ -310,18 +310,15 @@ GtkWidget *box; GtkWidget *box_folders; GtkWidget *scd; - GtkWidget *menu_bar; + GtkWidget *menu_tool_bar; GtkWidget *tabcomp; - GtkWidget *toolbar; box = gtk_vbox_new(FALSE, 0); - 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); + menu_tool_bar = layout_actions_menu_tool_bar(lw); + 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); @@ -1499,6 +1496,7 @@ 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); new_window = TRUE; } @@ -1513,6 +1511,7 @@ vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(lw->tools), vbox); + 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); @@ -1662,7 +1661,7 @@ layout_actions_setup(lw); lw->group_box = gtk_vbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(lw->main_box), lw->group_box, TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(lw->main_box), lw->group_box, TRUE, TRUE, 0); gtk_widget_show(lw->group_box); priority_location = layout_grid_compass(lw); @@ -1796,9 +1795,10 @@ /* preserve utility_box (image + sidebars), menu_bar and toolbars to be reused later in layout_grid_setup */ /* 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->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]); + + 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); /* clear it all */ diff -r 865f7eab9b6d -r e9e8e8b2afce src/layout_util.c --- a/src/layout_util.c Sat Aug 11 19:48:17 2018 +0100 +++ b/src/layout_util.c Sun Aug 12 17:29:35 2018 +0100 @@ -2703,6 +2703,24 @@ return lw->toolbar[type]; } +GtkWidget *layout_actions_menu_tool_bar(LayoutWindow *lw) +{ + GtkWidget *menu_bar; + GtkWidget *toolbar; + + if (lw->menu_tool_bar) return lw->menu_tool_bar; + + menu_bar = layout_actions_menu_bar(lw); + toolbar = layout_actions_toolbar(lw, TOOLBAR_MAIN); + lw->menu_tool_bar = gtk_vbox_new(FALSE, 0); + + gtk_box_pack_start(GTK_BOX(lw->menu_tool_bar), menu_bar, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(lw->menu_tool_bar), toolbar, FALSE, FALSE, 0); + + g_object_ref(lw->menu_tool_bar); + return lw->menu_tool_bar; +} + void layout_toolbar_clear(LayoutWindow *lw, ToolbarType type) { if (lw->toolbar_merge_id[type]) diff -r 865f7eab9b6d -r e9e8e8b2afce src/layout_util.h --- a/src/layout_util.h Sat Aug 11 19:48:17 2018 +0100 +++ b/src/layout_util.h Sun Aug 12 17:29:35 2018 +0100 @@ -74,5 +74,6 @@ gboolean is_help_key(GdkEventKey *event); LayoutWindow *layout_menu_new_window(GtkAction *action, gpointer data); void layout_menu_close_cb(GtkAction *action, gpointer data); +GtkWidget *layout_actions_menu_tool_bar(LayoutWindow *lw); #endif /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */ diff -r 865f7eab9b6d -r e9e8e8b2afce src/typedefs.h --- a/src/typedefs.h Sat Aug 11 19:48:17 2018 +0100 +++ b/src/typedefs.h Sun Aug 12 17:29:35 2018 +0100 @@ -731,7 +731,7 @@ // gint tools_float; // gint tools_hidden; - + GtkWidget *menu_tool_bar; /*Combined menu and toolbar box */ GtkWidget *menu_bar; /* referenced by lw, exist during whole lw lifetime */ /* toolbar */