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.