All pastes #1732578 Raw Edit

C

public c v1 · immutable
#1732578 ·published 2009-12-31 02:04 UTC
rendered paste body
/* gcc -Wall -g `pkg-config --cflags --libs gtk+-2.0`  -o entry entry.c */#include <gtk/gtk.h>#include <unistd.h>guint handler_id;void on_entry_changed(GtkEditable *editable, gpointer data){	gchar *string;	int i;	string = gtk_editable_get_chars(editable,0,-1);		printf("on_entry_changed: %s\n",string);	g_signal_handler_block(editable,handler_id);	printf("on_entry_changed: Handler Blocked\n");	/* simulate busyness */	for(i=0;i<10;i++){		usleep(10000);	}	g_signal_handler_unblock(editable,handler_id);	printf("on_entry_changed: Handler Unblocked\n");}int main(int argc, char **argv){	gtk_init(&argc, &argv);	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);	GdkGeometry gdkGeometry;	gdkGeometry.min_width= 640;	gdkGeometry.min_height = 480;	gtk_window_set_geometry_hints(GTK_WINDOW(window), window,		&gdkGeometry, GDK_HINT_MIN_SIZE);	GtkWidget *vbox = gtk_vbox_new(FALSE,10);	GtkWidget *entry = gtk_entry_new();	handler_id = g_signal_connect(entry,"changed",		G_CALLBACK(on_entry_changed),NULL);	GtkWidget *label = gtk_label_new("Type something quickly and watch the signals keep going\n\even though the callback has been blocked");	gtk_box_pack_start(GTK_BOX(vbox),label,TRUE,TRUE,0);	gtk_box_pack_start(GTK_BOX(vbox),entry,TRUE,TRUE,0);		gtk_container_add(GTK_CONTAINER(window), vbox);	g_signal_connect(G_OBJECT(window), "destroy", gtk_main_quit, NULL);	gtk_widget_show_all(window);	gtk_main();	return 0;}