GtkMenuItem bug (I think)
- From: Maciej Stachowiak <mstachow MIT EDU>
- To: gtk-list redhat com
- Cc: mstachow MIT EDU
- Subject: GtkMenuItem bug (I think)
- Date: Sat, 02 Jan 1999 14:23:42 EST
/**
Save the body of this message as failure.c and compile with :
gcc `gtk-config --cflags` failure.c -o failure `gtk-config --libs`
**/
/*
* I believe the following code demonstrates a Gtk+ bug in the latest
* CVS version. I am creating a menu item with
* gtk_menu_item_new_with_label(). Right after it is created, and
* right before calling gtk_main(), calling gtk_container_children()
* on it returns a non-empty list. However, calling
* gtk_container_children() on it from the "activate" signal callback
* results in NULL. Either there is a bug here or I am majorly
* misunderstanding something. This behavior has been reproduced by
* others with this test program.
*/
#include <gtk/gtk.h>
void
test_callback (GtkWidget *widget, void *data)
{
GList *children;
children = gtk_container_children(GTK_CONTAINER(widget));
if (NULL==children) {
puts("children NULL in callback!");
} else {
puts("children not NULL in callback!");
}
}
int
main (int argc, char **argv)
{
GtkWidget *window;
GtkWidget *option_menu;
GtkWidget *menu;
GtkWidget *menu_item;
GList *children;
gtk_init (&argc, &argv);
menu_item = gtk_menu_item_new_with_label("Test case.");
children = gtk_container_children(GTK_CONTAINER(menu_item));
if (NULL==children) {
puts("children intially NULL!");
} else {
puts("children intially not NULL!");
}
gtk_signal_connect(GTK_OBJECT(menu_item), "activate",
test_callback, NULL);
gtk_widget_show(menu_item);
menu = gtk_menu_new();
gtk_menu_append(GTK_MENU(menu), menu_item);
option_menu = gtk_option_menu_new();
gtk_option_menu_set_menu(GTK_OPTION_MENU(option_menu), menu);
gtk_widget_show(option_menu);
window = gtk_window_new(GTK_TOPLEVEL);
gtk_container_add(GTK_CONTAINER(window), option_menu);
gtk_widget_show(window);
if (NULL==children) {
puts("children NULL before gtk_main!");
} else {
puts("children not NULL before gtk_main!");
}
gtk_main ();
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]