All pastes #950602 Raw Edit

C

public c v1 · immutable
·published 2008-03-20 18:22 UTC
rendered paste body
/* gcc `pkg-config --cflags --libs gtk+-2.0` -o big-combo big-combo.c */#include <gtk/gtk.h>#include <gdk/gdkx.h>#include <X11/Xatom.h>#include <signal.h>static voidsighandler (int sig) {  gtk_main_quit ();}gbooleant_cb (gpointer data){    GtkWidget *widget = data;    GdkDrawable* rootWindow = GDK_DRAWABLE(gtk_widget_get_root_window(widget));    GdkDisplay* display = gdk_drawable_get_display(rootWindow);    Atom xproperty = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WORKAREA");    Atom retType;    int retFormat;    long *workAreaPos = NULL;    unsigned long retNItems;    unsigned long retAfter;    int xRes = XGetWindowProperty(GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XWINDOW (rootWindow), xproperty,        0, 4, FALSE, XA_CARDINAL, &retType, &retFormat, &retNItems, &retAfter, (guchar**)&workAreaPos);    g_assert(retType == XA_CARDINAL);    g_printerr ("retFormat: %d, retNItems: %ld, retAfter: %ld, workAreaPos: %p\n",                retFormat, retNItems, retAfter, workAreaPos);    /*if (xRes != Success ||        workAreaPos == NULL ||        retType != XA_CARDINAL ||        4 * sizeof(long) != length_returned ||        retFormat != 32)        g_warning("Can not determine workarea");    else        g_print("# %d [%d %d %d %d] lr:%d\n", 42,//*nworkAreaPos,                workAreaPos[0], workAreaPos[1], workAreaPos[2], workAreaPos[3], length_returned);*/    if (workAreaPos)        XFree(workAreaPos);    return FALSE;}int main(int argc, char *argv[]){    GtkWidget *combo_box;    GtkWidget *window;    gint i;  signal(SIGINT, sighandler);    gtk_init (&argc, &argv);    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);    gtk_widget_show_all (window);    g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);    g_timeout_add (100, t_cb, window);    gtk_main ();    return 0;    combo_box = gtk_combo_box_new_text ();    for (i = 0; i < 1000; i++) {        gtk_combo_box_append_text (GTK_COMBO_BOX (combo_box), "Test");        /*GtkItem *item;        item = gtk_menu_item_new_with_label(combo_box, "Hello");        gtk_menu_shell_append(GTK_MENU_SHELL(m_popup), item);*/    }    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);    g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL);    gtk_container_add (GTK_CONTAINER (window), combo_box);    gtk_widget_show_all (window);    gtk_main ();}