/** * rb_button_bar_remove_accelerators: * @bar: a #RBButtonBar * @group: the #GtkAccelGroup to remove accelerators from * * Reverses the effects of @rb_button_bar_add_accelerators. */ void rb_button_bar_remove_accelerators (RBButtonBar *bar, GtkAccelGroup *group) { GList *c, *l; c = gtk_container_get_children (GTK_CONTAINER (bar)); for (l = c; l != NULL; l = l->next) { GtkWidget *widget = l->data; const char *accel_text; guint accel_key; GdkModifierType accel_mods; accel_text = g_object_get_data (G_OBJECT (widget), "rb-accel"); if (accel_text != NULL) { gtk_accelerator_parse (accel_text, &accel_key, &accel_mods); if (accel_key != 0) { gtk_widget_remove_accelerator (widget, group, accel_key, accel_mods); } } /* handle menus attached to menu buttons */ if (GTK_IS_MENU_BUTTON (widget)) { RBApplication *app = RB_APPLICATION (g_application_get_default ()); GMenuModel *model; model = g_object_get_data (G_OBJECT (widget), "rb-menu-model"); if (model != NULL) rb_application_set_menu_accelerators (app, model, FALSE); } } g_list_free (c); }
void EvalCcRqREMOVEMENUSHORTKEY (CrossCallInfo *pcci) /* frameptr, cmd; no result. */ { GtkWidget *frame; GtkWidget *box; GtkWidget *menu_item; GtkAccelGroup *accel_group; printf("EvalCcRqREMOVEMENUSHORTKEY\n"); frame = GTK_WIDGET(pcci->p1); menu_item = GTK_WIDGET(pcci->p2); accel_group = ((GtkAccelGroup*)gtk_accel_groups_from_object(G_OBJECT(frame))->data); for (;;) { GtkAccelKey *key = gtk_accel_group_find(accel_group, dummy_find_accel, NULL); if (!key) break; gtk_widget_remove_accelerator(menu_item, accel_group, key->accel_key, key->accel_mods); } MakeReturn0Cci (pcci); }
/* Remove accelerator by shortcut */ int clip_GTK_WIDGETREMOVEACCELERATOR(ClipMachine * cm) { C_widget *cwid = _fetch_cw_arg(cm); C_widget *cwin = _fetch_cwidget(cm,_clip_spar(cm,2)); guint accel_key = _clip_parni(cm,3); guint accel_mods = _clip_parni(cm,4); int ret = FALSE; CHECKCWID(cwid,GTK_IS_WIDGET); CHECKARG2(2, MAP_t, NUMERIC_t); CHECKARG(3, NUMERIC_t); CHECKOPT(4, NUMERIC_t); if (cwin && cwin->accel_group) { gtk_widget_remove_accelerator(cwid->widget, cwin->accel_group, accel_key, accel_mods); ret = TRUE; } _clip_retl(cm, ret); return 0; err: _clip_retl(cm, ret); return 1; }
static VALUE rg_remove_accelerator(VALUE self, VALUE accel, VALUE key, VALUE mod) { return CBOOL2RVAL(gtk_widget_remove_accelerator(_SELF(self), GTK_ACCEL_GROUP(RVAL2GOBJ(accel)), NUM2INT(key), RVAL2GFLAGS(mod, GDK_TYPE_MODIFIER_TYPE))); }
void wxMenuItem::SetItemLabel( const wxString& str ) { #if wxUSE_ACCEL if (m_menuItem) { // remove old accelerator guint accel_key; GdkModifierType accel_mods; wxGetGtkAccel(this, &accel_key, &accel_mods); if (accel_key) { gtk_widget_remove_accelerator( m_menuItem, m_parentMenu->m_accel, accel_key, accel_mods); } } #endif // wxUSE_ACCEL wxMenuItemBase::SetItemLabel(str); if (m_menuItem) SetGtkLabel(); }
void wxMenuItem::SetItemLabel( const wxString& string ) { wxString str = string; if ( str.empty() && !IsSeparator() ) { wxASSERT_MSG(wxIsStockID(GetId()), wxT("A non-stock menu item with an empty label?")); str = wxGetStockLabel(GetId(), wxSTOCK_WITH_ACCELERATOR | wxSTOCK_WITH_MNEMONIC); } // Some optimization to avoid flicker wxString oldLabel = m_text; oldLabel = wxStripMenuCodes(oldLabel); oldLabel.Replace(wxT("_"), wxEmptyString); wxString label1 = wxStripMenuCodes(str); wxString oldhotkey = GetHotKey(); // Store the old hotkey in Ctrl-foo format wxCharBuffer oldbuf = wxGTK_CONV( GetGtkHotKey(*this) ); // and as <control>foo DoSetText(str); if (oldLabel == label1 && oldhotkey == GetHotKey()) // Make sure we can change a hotkey even if the label is unaltered return; if (m_menuItem) { GtkLabel *label; if (m_labelWidget) label = (GtkLabel*) m_labelWidget; else label = GTK_LABEL( GTK_BIN(m_menuItem)->child ); // set new text gtk_label_set( label, wxGTK_CONV( m_text ) ); // reparse key accel (void)gtk_label_parse_uline (GTK_LABEL(label), wxGTK_CONV(m_text) ); gtk_accel_label_refetch( GTK_ACCEL_LABEL(label) ); } guint accel_key; GdkModifierType accel_mods; gtk_accelerator_parse( (const char*) oldbuf, &accel_key, &accel_mods); if (accel_key != 0) { gtk_widget_remove_accelerator( GTK_WIDGET(m_menuItem), m_parentMenu->m_accel, accel_key, accel_mods ); } wxCharBuffer buf = wxGTK_CONV( GetGtkHotKey(*this) ); gtk_accelerator_parse( (const char*) buf, &accel_key, &accel_mods); if (accel_key != 0) { gtk_widget_add_accelerator( GTK_WIDGET(m_menuItem), "activate", m_parentMenu->m_accel, accel_key, accel_mods, GTK_ACCEL_VISIBLE); } }