All pastes #401497 Raw Edit

Mine

public c v1 · immutable
·published 2007-03-19 12:52 UTC
rendered paste body
#include <gtk/gtk.h>void item_activate(GtkWidget *item, gpointer udata){	gchar *data = g_object_get_data(G_OBJECT(item), "data");	printf("%s clicked\n", data);}gboolean button_release_event(GtkWidget *Event, GdkEventButton *event, gpointer data){	if(event->button != 3)		return FALSE;	GtkWidget *item, *menu, *smenu,*sitem;	menu = gtk_menu_new();	item = gtk_menu_item_new_with_label("sub menu");	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);	smenu = gtk_menu_new();	sitem = gtk_menu_item_new_with_label("a");	g_object_set_data_full(G_OBJECT(sitem), "data", g_strdup("a"), g_free);	g_signal_connect(G_OBJECT(sitem), "activate", G_CALLBACK(item_activate), NULL);	gtk_menu_shell_append(GTK_MENU_SHELL(smenu), sitem);	sitem = gtk_menu_item_new_with_label("b");	g_object_set_data_full(G_OBJECT(sitem), "data", g_strdup("b"), g_free);	g_signal_connect(G_OBJECT(sitem), "activate", G_CALLBACK(item_activate), NULL);	gtk_menu_shell_append(GTK_MENU_SHELL(smenu), sitem);	gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), smenu);	gtk_widget_show_all(menu);	gtk_menu_popup(GTK_MENU(menu), NULL,NULL,NULL,NULL, event->button, event->time);	return TRUE;}int main(int argc, char **argv){	gtk_init(&argc, &argv);	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	GtkWidget *event = gtk_event_box_new();	gtk_widget_set_size_request(event, 200,400);	gtk_container_add(GTK_CONTAINER(window), event);	g_signal_connect(G_OBJECT(event), "button-release-event", G_CALLBACK(button_release_event), NULL);	gtk_widget_show_all(window);	gtk_main();}