Re: Event propagation question, part 2.



Sorry, seems one attachmen is lost. Here is the example code itself:

#include <gtk/gtk.h>

static GtkWidget *thing[2];

static gboolean destroy(void)
{
        gtk_main_quit();
        return FALSE;
}

static void toggled(GtkToggleButton *b)
{
        gboolean state = gtk_toggle_button_get_active(b);

        gtk_widget_hide(thing[1 - state]);
        gtk_widget_show(thing[state]);
        g_print("Toggled\n");
}

static gboolean enter(void)
{
        g_print("enter\n");
        return FALSE;
}

static gboolean leave(void)
{
        g_print("leave\n");
        return FALSE;
}

int main (int argc, char *argv[])
{
        GtkWidget *window, *button, *vbox;
        GError *error = NULL;

        gtk_init(&argc, &argv);
        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
        g_signal_connect(window, "delete-event", G_CALLBACK(destroy), NULL);

        button = gtk_toggle_button_new();
        g_signal_connect(button, "toggled", G_CALLBACK(toggled), NULL);
        g_signal_connect(button, "enter-notify-event", G_CALLBACK(enter), NULL);
        g_signal_connect(button, "leave-notify-event", G_CALLBACK(leave), NULL);
        gtk_container_add(GTK_CONTAINER(window), button);
        gtk_widget_show(button);

        vbox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(button), vbox);
        gtk_widget_show(vbox);

        thing[0] = gtk_hsv_new();
        gtk_box_pack_start(GTK_BOX(vbox), thing[0], FALSE, TRUE, 0);
        gtk_widget_show(thing[0]);

        thing[1] = gtk_hsv_new();
        gtk_box_pack_start(GTK_BOX(vbox), thing[1], FALSE, TRUE, 0);

        gtk_widget_show(window);
        gtk_main();
}



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