Index: work/gtk/layersel/layersel.c =================================================================== --- work/gtk/layersel/layersel.c (revision 8503) +++ work/gtk/layersel/layersel.c (revision 8504) @@ -65,6 +65,8 @@ return image; } +/*** Event handling ***/ + static gboolean group_button_press_cb(GtkWidget * widget, GdkEvent * event, gpointer user_data) { printf("clicked\n"); @@ -71,6 +73,15 @@ return TRUE; } +/** Wrap w so that clicks on it are triggering a callback */ +static GtkWidget *wrap_bind_click(GtkWidget *w, GCallback cb, void *cb_data) +{ + GtkWidget *event_box = gtk_event_box_new(); + gtk_container_add(GTK_CONTAINER(event_box), w); + g_signal_connect(event_box, "button-press-event", G_CALLBACK(cb), cb_data); + return event_box; +} + /*** Row builder ***/ static GtkWidget *add_grp(layersel_grp_t *ls, const char *gname) @@ -130,10 +141,9 @@ label = gtk_label_new("group1"); gtk_label_set_angle(GTK_LABEL(label), 90); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); - event_box = gtk_event_box_new(); + + event_box = wrap_bind_click(label, G_CALLBACK(group_button_press_cb), NULL); gtk_box_pack_start(GTK_BOX(box), event_box, FALSE, FALSE, 0); - gtk_container_add(GTK_CONTAINER(event_box), label); - g_signal_connect(event_box, "button-press-event", G_CALLBACK(group_button_press_cb), NULL); image = layer_vis_box(0, "#ff0000"); gtk_box_pack_start(GTK_BOX(box), image, FALSE, FALSE, 0);