Gtk Popup Menu accelerators not working



Hi,

I'm creating a "pop-up" menu which is shown when I click inside a
button.  I added accelerators to the menu items (CTRL + B), but these
do not work.  If I explicitly pop up the menu and then click on the
menu item, then the "activate" signal is called for the menu item, but
not if I use the accelerator keys.

Attached is a sample source code that's not working below.

Please help me in finding out why this problem is coming, and how to resolve it.

Thanks,
Gaurav

------------------------------------
#include <stdio.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>

gboolean Popup (GtkWidget *widget, GdkEvent *e, gpointer data)
{
        g_print("Button Pressed\n");
        GtkMenu* menu = GTK_MENU(data);
        gtk_menu_popup(menu,NULL,NULL,NULL,NULL,0,(guint32)gtk_get_current_event_time());
        return TRUE;
}

void Print (GtkWidget *w , gpointer d)
{
        g_print("Hi\n");
}

int main( int   argc, char *argv[] )
{

        gtk_init (&argc, &argv);

        GtkWidget *w = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_widget_set_size_request(w,400,400);

        GtkWidget *b = gtk_button_new_with_label("ABC_DEF");

        GtkWidget *menu = gtk_menu_new();
        GtkWidget *mi1 = gtk_menu_item_new_with_mnemonic("_One");
        GtkWidget *mi2 = gtk_menu_item_new_with_label("Two");
        gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi1);
        gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi2);

        GtkAccelGroup *accel = gtk_accel_group_new();
        gtk_widget_add_accelerator(mi1, "activate", accel, GDK_B,
(GdkModifierType)GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);

        gtk_container_add(GTK_CONTAINER(w),b);
        g_signal_connect(b,"button-press-event",G_CALLBACK(Popup),menu);
        g_signal_connect(mi1,"activate",G_CALLBACK(Print),menu);

        gtk_widget_show(menu);
        gtk_widget_show(mi1);
        gtk_widget_show(mi2);
        gtk_widget_show(b);
        gtk_widget_show(w);

        gtk_main();
        return 0;
}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]