Problem with cut/paste accelerators and menus



The gtk_entry widgets have default copy and paste accelerators (and context menu). This works fine until I add an edit menu with copy+paste entries (using the stock items), then the keyboard shortcuts stop working for cut and paste.

How can I get gtk to accept cut and paste from keyboard shortcuts and via the edit menu? Sample code below.

Jon

------------------------------------------------------------------------------

#include <gtk/gtk.h>

static void TestCB( gpointer *p, guint n, GtkWidget *pw )
{
 printf("test\n");
}

   static GtkItemFactoryEntry aife[] = {
        { ("/_Edit"), NULL, NULL, 0, "<Branch>" },
        { ("/_Edit/_Test"), "<control>T", TestCB, 0, 0, 0},
        { ("/_Edit/_Copy"), NULL, NULL, 0, "<StockItem>", GTK_STOCK_COPY},
        { ("/_Edit/_Paste"), NULL, NULL, 0, "<StockItem>", GTK_STOCK_PASTE}
};

int main(int argc, char *argv[])
{
 gtk_init(&argc, &argv);
 GtkWidget *window, *pwVbox, *pwMenuBar, *pwHandle;
 GtkAccelGroup *pagMain;
 GtkItemFactory *pif;

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

 pwVbox = gtk_vbox_new( FALSE, 0 );
 gtk_container_add( GTK_CONTAINER( window ), pwVbox );

 pagMain = gtk_accel_group_new();
 pif = gtk_item_factory_new( GTK_TYPE_MENU_BAR, "<main>", pagMain );

gtk_item_factory_create_items( pif, sizeof( aife ) / sizeof( aife[ 0 ] ), aife, NULL );
 gtk_window_add_accel_group( GTK_WINDOW( window ), pagMain );

gtk_box_pack_start( GTK_BOX( pwVbox ), pwHandle = gtk_handle_box_new(), FALSE, FALSE, 0 ); gtk_container_add( GTK_CONTAINER( pwHandle ), pwMenuBar = gtk_item_factory_get_widget( pif, "<main>" ));

 gtk_box_pack_start(GTK_BOX(pwVbox), gtk_entry_new(), FALSE, FALSE, 0);

 gtk_widget_show_all(window);
 gtk_main();

 return 0;
}





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