SF.net SVN: geany:[5241] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Mon Sep 20 11:36:50 UTC 2010


Revision: 5241
          http://geany.svn.sourceforge.net/geany/?rev=5241&view=rev
Author:   ntrel
Date:     2010-09-20 11:36:50 +0000 (Mon, 20 Sep 2010)

Log Message:
-----------
Refactor shared submenu code with GeanySharedMenu array.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/ui_utils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-09-17 19:15:13 UTC (rev 5240)
+++ trunk/ChangeLog	2010-09-20 11:36:50 UTC (rev 5241)
@@ -1,3 +1,9 @@
+2010-09-20  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/ui_utils.c:
+   Refactor shared submenu code with GeanySharedMenu array.
+
+
 2010-09-16  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
 
  * src/callbacks.c:

Modified: trunk/src/ui_utils.c
===================================================================
--- trunk/src/ui_utils.c	2010-09-17 19:15:13 UTC (rev 5240)
+++ trunk/src/ui_utils.c	2010-09-20 11:36:50 UTC (rev 5241)
@@ -1993,29 +1993,42 @@
 }
 
 
-static void on_editor_menu_show(GtkWidget *item)
+typedef struct GeanySharedMenu
 {
-	GtkWidget *popup = ui_lookup_widget(main_widgets.editor_menu, "commands1");
-	GtkWidget *bar = ui_lookup_widget(main_widgets.window, "commands2");
+	GtkWidget *menu;
+	gchar *menubar_item;
+	gchar *popup_item;
+}
+GeanySharedMenu;
 
-	ui_menu_move(widgets.commands_menu, bar, popup);
+#define foreach_menu(item, array) \
+	for (item = array; item->menu; item++)
 
-	popup = ui_lookup_widget(main_widgets.editor_menu, "menu_format2");
-	bar = ui_lookup_widget(main_widgets.window, "menu_format1");
-	ui_menu_move(widgets.format_menu, bar, popup);
+static void on_editor_menu_show(GtkWidget *widget, GeanySharedMenu *items)
+{
+	GeanySharedMenu *item;
+
+	foreach_menu(item, items)
+	{
+		GtkWidget *popup = ui_lookup_widget(main_widgets.editor_menu, item->popup_item);
+		GtkWidget *bar = ui_lookup_widget(main_widgets.window, item->menubar_item);
+
+		ui_menu_move(item->menu, bar, popup);
+	}
 }
 
 
-static void on_editor_menu_hide(GtkWidget *item)
+static void on_editor_menu_hide(GtkWidget *widget, GeanySharedMenu *items)
 {
-	GtkWidget *popup = ui_lookup_widget(main_widgets.editor_menu, "commands1");
-	GtkWidget *bar = ui_lookup_widget(main_widgets.window, "commands2");
+	GeanySharedMenu *item;
 
-	ui_menu_move(widgets.commands_menu, popup, bar);
+	foreach_menu(item, items)
+	{
+		GtkWidget *popup = ui_lookup_widget(main_widgets.editor_menu, item->popup_item);
+		GtkWidget *bar = ui_lookup_widget(main_widgets.window, item->menubar_item);
 
-	popup = ui_lookup_widget(main_widgets.editor_menu, "menu_format2");
-	bar = ui_lookup_widget(main_widgets.window, "menu_format1");
-	ui_menu_move(widgets.format_menu, popup, bar);
+		ui_menu_move(item->menu, popup, bar);
+	}
 }
 
 
@@ -2076,11 +2089,20 @@
 	item = ui_lookup_widget(main_widgets.window, "commands2");
 	widgets.commands_menu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(item));
 
-	/* reparent edit submenus as needed */
-	item = main_widgets.editor_menu;
-	g_signal_connect(item, "show", G_CALLBACK(on_editor_menu_show), NULL);
-	g_signal_connect(item, "hide", G_CALLBACK(on_editor_menu_hide), NULL);
+	/* reparent context submenus as needed */
+	{
+		GeanySharedMenu arr[] = {
+			{widgets.commands_menu, "commands2", "commands1"},
+			{widgets.format_menu, "menu_format1", "menu_format2"},
+			{NULL, NULL, NULL}
+		};
+		static GeanySharedMenu items[G_N_ELEMENTS(arr)];
 
+		memcpy(items, arr, sizeof(arr));
+		g_signal_connect(main_widgets.editor_menu, "show", G_CALLBACK(on_editor_menu_show), items);
+		g_signal_connect(main_widgets.editor_menu, "hide", G_CALLBACK(on_editor_menu_hide), items);
+	}
+
 	ui_init_toolbar_widgets();
 	init_document_widgets();
 	create_config_files_menu();


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list