Index: src_plugins/hid_gtk/ghid-main-menu.c =================================================================== --- src_plugins/hid_gtk/ghid-main-menu.c (revision 1537) +++ src_plugins/hid_gtk/ghid-main-menu.c (revision 1538) @@ -36,7 +36,6 @@ GtkMenuShell *route_style_shell; GList *actions; - GHashTable *popup_table; gint n_layer_views; gint n_layer_picks; @@ -289,7 +288,6 @@ mm->action_cb = action_cb; mm->actions = NULL; - mm->popup_table = g_hash_table_new(g_str_hash, g_str_equal); return GTK_WIDGET(mm); } @@ -326,17 +324,9 @@ for(i = submenu->data.list.first; i != NULL; i = i->next) ghid_main_menu_real_add_node(menu, GTK_MENU_SHELL(new_menu), i); - g_hash_table_insert(menu->popup_table, (gpointer) base->name, new_menu); gtk_widget_show_all(new_menu); } -/*! \brief Returns a registered popup menu by name */ -GtkMenu *ghid_main_menu_get_popup(GHidMainMenu * menu, const char *name) -{ - return g_hash_table_lookup(menu->popup_table, name); -} - - /*! \brief Updates the toggle/active state of all items * \par Function Description * Loops through all actions, passing the action, its toggle @@ -433,8 +423,6 @@ g_object_ref_sink(new_menu); menu_item->user_data = new_menu; - g_hash_table_insert(menu->popup_table, (gpointer) menu_item->name, new_menu); - return new_menu; } Index: src_plugins/hid_gtk/ghid-main-menu.h =================================================================== --- src_plugins/hid_gtk/ghid-main-menu.h (revision 1537) +++ src_plugins/hid_gtk/ghid-main-menu.h (revision 1538) @@ -27,7 +27,6 @@ void (*cb) (GtkAction *, const char *toggle_flag, const char *active_flag)); void ghid_main_menu_add_popup_node(GHidMainMenu * menu, lht_node_t *base); -GtkMenu *ghid_main_menu_get_popup(GHidMainMenu * menu, const char *name); void ghid_main_menu_install_layer_selector(GHidMainMenu * mm, GHidLayerSelector * ls); void ghid_main_menu_install_route_style_selector(GHidMainMenu * mm, GHidRouteStyleSelector * rss); Index: src_plugins/hid_gtk/gtkhid-main.c =================================================================== --- src_plugins/hid_gtk/gtkhid-main.c (revision 1537) +++ src_plugins/hid_gtk/gtkhid-main.c (revision 1538) @@ -1729,12 +1729,20 @@ %end-doc */ static int Popup(int argc, char **argv, Coord x, Coord y) { - GtkMenu *menu; + GtkMenu *menu = NULL; + char name[256]; if (argc != 1 && argc != 2) AFAIL(popup); - menu = ghid_main_menu_get_popup(GHID_MAIN_MENU(ghidgui->menu_bar), argv[0]); + if (strlen(argv[0]) < sizeof(name)-32) { + lht_node_t *menu_node; + sprintf(name, "/popups/%s", argv[0]); + menu_node = hid_cfg_get_menu(ghid_cfg, name); + if (menu_node != NULL) + menu = menu_node->user_data; + } + if (!GTK_IS_MENU(menu)) { Message(_("The specified popup menu \"%s\" has not been defined.\n"), argv[0]); return 1;