wxMenuItem *wxMenu::DoRemove(wxMenuItem *item) { if ( !wxMenuBase::DoRemove(item) ) return NULL; GtkWidget * const mitem = item->GetMenuItem(); if (!gtk_check_version(2,12,0)) { // gtk_menu_item_remove_submenu() is deprecated since 2.12, but // gtk_menu_item_set_submenu() can now be used with NULL submenu now so // just do use it. gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL); } else // GTK+ < 2.12 { // In 2.10 calling gtk_menu_item_set_submenu() with NULL submenu // results in critical GTK+ error messages so use the old function // instead. gtk_menu_item_remove_submenu(GTK_MENU_ITEM(mitem)); } gtk_widget_destroy(mitem); item->SetMenuItem(NULL); return item; }
wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); if ( !menu ) return NULL; // remove item from menubar before destroying item to avoid spurious // warnings from Ubuntu libdbusmenu gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner); // remove submenu to avoid destroying it when item is destroyed #ifdef __WXGTK3__ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu->m_owner), NULL); #else gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu->m_owner)); #endif gtk_widget_destroy( menu->m_owner ); g_object_unref(menu->m_owner); menu->m_owner = NULL; if ( m_menuBarFrame ) DetachFromFrame( menu, m_menuBarFrame ); return menu; }
static void board_window_rebuild_board_menu (window_board_t *win) { if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (win->board_menu))) gtk_menu_item_remove_submenu (GTK_MENU_ITEM (win->board_menu)); GtkWidget *submenu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (win->board_menu), submenu); int i; GSList *group = NULL; for (i = 0; i < win->n_boards; i++) { board *b = win->boards[i]; GString *label = g_string_new (b->name->str); g_string_append_printf (label, " (%s)", contract_string (b->level, b->trumps, b->declarer, b->doubled)); GtkWidget *menuitem = gtk_radio_menu_item_new_with_label (group, label->str); g_string_free (label, TRUE); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menuitem)); if (i == win->cur) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menuitem), TRUE); g_signal_connect (G_OBJECT (menuitem), "activate", G_CALLBACK (board_menu_select), &(win->board_numbers[i])); /* pointer to array index */ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), menuitem); gtk_widget_show (menuitem); } }
/* * menu_remove_submenu: * @ Set sub menu. * * widget : Menu widget to set sub menu. * path : Menu path to check menu item. * submenu : Submenu widget. */ void menu_remove_submenu (GtkWidget *widget, const gchar *path, GtkWidget *submenu) { GtkWidget *menuitem; GtkItemFactory *ifactory; ifactory = gtk_item_factory_from_widget (widget); menuitem = gtk_item_factory_get_item (ifactory, path); gtk_menu_item_remove_submenu (GTK_MENU_ITEM (menuitem)); }
int clip_GTK_MENUITEMREMOVESUBMENU(ClipMachine * ClipMachineMemory) { C_widget *citm = _fetch_cw_arg(ClipMachineMemory); CHECKCWID(citm, GTK_IS_MENU_ITEM); gtk_menu_item_remove_submenu(GTK_MENU_ITEM(citm->widget)); return 0; err: return 1; }
void enc_profmenu(struct encdata *enc) { char *aprof; GtkWidget *tmplabel, *tmplabel1, *tmpmenu; GList *listrunner; struct encprof *tmp; tmpmenu = gtk_menu_new(); if(enc->outchan->tipo == MP3) { tmplabel = gtk_menu_item_new_with_label(_("Save...")); g_object_set_data(G_OBJECT(tmplabel), "type", (void *) "lame"); tmplabel1 = gtk_menu_item_new_with_label(_("Remove...")); g_object_set_data(G_OBJECT(tmplabel1), "type", (void *) "lame"); listrunner = g_list_first(lameprof); } else { tmplabel = gtk_menu_item_new_with_label(_("Save...")); g_object_set_data(G_OBJECT(tmplabel), "type", (void *) "ogg"); tmplabel1 = gtk_menu_item_new_with_label(_("Remove...")); g_object_set_data(G_OBJECT(tmplabel1), "type", (void *) "ogg"); listrunner = g_list_first(vorbisprof); } g_signal_connect(G_OBJECT(tmplabel), "activate", G_CALLBACK(win_profile_save), (void *) enc); g_signal_connect(G_OBJECT(tmplabel1), "activate", G_CALLBACK(win_profile_remove), (void *) enc); gtk_menu_append(GTK_MENU(tmpmenu), tmplabel); gtk_menu_append(GTK_MENU(tmpmenu), tmplabel1); tmplabel = gtk_menu_item_new_with_label(_("Load")); gtk_menu_append(GTK_MENU(tmpmenu), tmplabel); while(listrunner) { tmp = (struct encprof *) listrunner->data; aprof = tmp->name; tmplabel = gtk_menu_item_new_with_label(aprof); g_signal_connect(G_OBJECT(tmplabel), "activate", G_CALLBACK(gcb_enc_put), enc); gtk_menu_append(GTK_MENU(tmpmenu), tmplabel); //FIXME : missing remove in profile API listrunner = g_list_next(listrunner); } gtk_menu_item_remove_submenu(GTK_MENU_ITEM(enc->profroot)); gtk_menu_item_set_submenu(GTK_MENU_ITEM(enc->profroot), tmpmenu); gtk_widget_show_all(tmpmenu); }
void EvalCcRqREMOVEMENUITEM (CrossCallInfo *pcci) /* menu, HITEM; no result. */ { GtkWidget *menu, *menu_item; printf("EvalCcRqREMOVEMENUITEM\n"); menu = GTK_WIDGET(pcci->p1); menu_item = GTK_WIDGET(pcci->p2); gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu_item)); gtk_widget_destroy(menu_item); MakeReturn0Cci (pcci); }
static VALUE mitem_remove_submenu(VALUE self) { GtkMenuItem *item; GtkWidget *submenu; item = _SELF(self); submenu = gtk_menu_item_get_submenu(item); gtk_menu_item_remove_submenu(item); if (submenu) G_CHILD_REMOVE(self, GOBJ2RVAL(submenu)); return self; }
/* Remove a menu logically */ void EvalCcRqDELETEMENU (CrossCallInfo *pcci) /* HMENU, HITEM; no result. */ { GtkWidget *menu, *menu_item; printf("EvalCcRqDELETEMENU\n"); menu = GTK_WIDGET(pcci->p1); menu_item = GTK_WIDGET(pcci->p2); gtk_container_foreach(GTK_CONTAINER(menu), find_item_callback, (gpointer) &menu_item); if (menu_item != GTK_WIDGET(pcci->p2)) { gtk_menu_item_remove_submenu(GTK_MENU_ITEM(menu_item)); gtk_widget_destroy(menu_item); } MakeReturn0Cci (pcci); }
wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); if ( !menu ) return NULL; gtk_menu_item_remove_submenu( GTK_MENU_ITEM(menu->m_owner) ); gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner); gtk_widget_destroy( menu->m_owner ); menu->m_owner = NULL; if (m_menuBarFrame) { // OPTIMISE ME: see comment in GtkAppend m_menuBarFrame->UpdateMenuBarSize(); } return menu; }
wxMenuItem *wxMenu::DoRemove(wxMenuItem *item) { if ( !wxMenuBase::DoRemove(item) ) return NULL; GtkWidget * const mitem = item->GetMenuItem(); g_signal_handlers_disconnect_matched(mitem, GSignalMatchType(G_SIGNAL_MATCH_DATA), 0, 0, NULL, NULL, item); #ifdef __WXGTK3__ gtk_menu_item_set_submenu(GTK_MENU_ITEM(mitem), NULL); #else gtk_menu_item_remove_submenu(GTK_MENU_ITEM(mitem)); #endif gtk_widget_destroy(mitem); item->SetMenuItem(NULL); return item; }
wxMenu *wxMenuBar::Remove(size_t pos) { wxMenu *menu = wxMenuBarBase::Remove(pos); if ( !menu ) return (wxMenu*) NULL; gtk_menu_item_remove_submenu( GTK_MENU_ITEM(menu->m_owner) ); gtk_container_remove(GTK_CONTAINER(m_menubar), menu->m_owner); gtk_widget_destroy( menu->m_owner ); menu->m_owner = NULL; if (m_invokingWindow) { // OPTIMISE ME: see comment in GtkAppend wxFrame *frame = wxDynamicCast( m_invokingWindow, wxFrame ); if( frame ) frame->UpdateMenuBarSize(); } return menu; }
static void menushell_build_children (GladeXML *xml, GtkWidget *w, GladeWidgetInfo *info) { int i, j; MateUIInfo infos[2] = { { MATE_APP_UI_ITEM }, MATEUIINFO_END }; for (i = 0; i < info->n_children; i++) { GladeChildInfo *cinfo = &info->children[i]; GladeWidgetInfo *cwinfo = cinfo->child; GtkWidget *child; gchar *stock_name = NULL; for (j = 0; j < cwinfo->n_properties; j++) { if (!strcmp (cwinfo->properties[j].name, "stock_item")) { stock_name = cwinfo->properties[j].value; break; } } if (!stock_name) { /* this is a normal menu item */ child = glade_xml_build_widget (xml, cwinfo); gtk_menu_shell_append (GTK_MENU_SHELL (w), child); continue; } /* load the template MateUIInfo for this item */ if (!get_stock_uiinfo (stock_name, &infos[0])) { /* failure ... */ if (!strncmp (stock_name, "MATEUIINFO_", 12)) stock_name += 12; child = gtk_menu_item_new_with_label (stock_name); glade_xml_set_common_params (xml, child, cwinfo); gtk_menu_shell_append (GTK_MENU_SHELL(w), child); continue; } /* we now have the template for this item. Now fill it in */ for (j = 0; j < cwinfo->n_properties; j++) { const char *name = cwinfo->properties[j].name; const char *value = cwinfo->properties[j].value; if (!strcmp (name, "label")) infos[0].label = _(value); else if (!strcmp (name, "tooltip")) infos[0].hint = _(value); } mate_app_fill_menu (GTK_MENU_SHELL(w), infos, glade_xml_ensure_accel(xml), TRUE, i); child = infos[0].widget; gtk_menu_item_remove_submenu(GTK_MENU_ITEM(child)); glade_xml_set_common_params(xml, child, cwinfo); } #if 0 if (uline) glade_xml_pop_uline_accel(xml); #endif #if 0 if (strcmp(info->classname, "GtkMenuBar") != 0 && mate_preferences_get_menus_have_tearoff()) { GtkWidget *tearoff = gtk_tearoff_menu_item_new(); gtk_menu_prepend(GTK_MENU(w), tearoff); gtk_widget_show(tearoff); } #endif }