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