changeset 2813:e9e8e8b2afce

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.
author Colin Clark <colin.clark@cclark.uk>
date Sun, 12 Aug 2018 17:29:35 +0100
parents 865f7eab9b6d
children 54ae25ba376b
files src/layout.c src/layout_util.c src/layout_util.h src/typedefs.h
diffstat 4 files changed, 32 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- 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 */
 
--- 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])
--- 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: */
--- 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 */