Example #1
0
/**
 * 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);
}
Example #3
0
/* 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;
}
Example #4
0
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)));
}
Example #5
0
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();
}
Example #6
0
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);
    }
}