2011-10-07 [colin] 3.7.10cvs19
[claws.git] / src / gtk / menu.c
index 29a9766b995fd250896e934359f30bd387f9befa..c38ee92fe5dd5f41fd11d49274250ed4fc58efc7 100644 (file)
@@ -123,10 +123,13 @@ void cm_toggle_menu_set_active_full(GtkUIManager *gui_manager, gchar *menu, gboo
 
 void menu_set_sensitive_all(GtkMenuShell *menu_shell, gboolean sensitive)
 {
+       GList *children = gtk_container_get_children(GTK_CONTAINER(menu_shell));
        GList *cur;
 
-       for (cur = menu_shell->children; cur != NULL; cur = cur->next)
+       for (cur = children; cur != NULL; cur = cur->next)
                gtk_widget_set_sensitive(GTK_WIDGET(cur->data), sensitive);
+
+       g_list_free(children);
 }
 
 void menu_button_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
@@ -135,7 +138,8 @@ void menu_button_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
         GtkWidget *widget;
         gint wheight;
         gint wx, wy;
-       GtkRequisition mreq;
+       GtkAllocation allocation;
+       GtkRequisition mreq, wreq;
        GdkScreen *screen;
        GdkRectangle monitor;
        gint monitor_num;
@@ -145,10 +149,12 @@ void menu_button_position(GtkMenu *menu, gint *x, gint *y, gboolean *push_in,
 
        widget = GTK_WIDGET(user_data);
 
-        gdk_window_get_origin(widget->window, x, y);
-        wheight = widget->requisition.height;
-        wx = widget->allocation.x;
-        wy = widget->allocation.y;
+        gdk_window_get_origin(gtk_widget_get_window(widget), x, y);
+        gtk_widget_get_requisition(widget, &wreq);
+        wheight = wreq.height;
+        gtk_widget_get_allocation(widget, &allocation);
+        wx = allocation.x;
+        wy = allocation.y;
         
        gtk_widget_size_request(GTK_WIDGET(menu), &mreq);
        screen = gtk_widget_get_screen (widget);
@@ -169,12 +175,14 @@ gint menu_find_option_menu_index(GtkCMOptionMenu *optmenu, gpointer data,
        GtkWidget *menu;
        GtkWidget *menuitem;
        gpointer menu_data;
+       GList *children;
        GList *cur;
        gint n;
 
        menu = gtk_cmoption_menu_get_menu(optmenu);
+       children = gtk_container_get_children(GTK_CONTAINER(GTK_MENU_SHELL(menu)));
 
-       for (cur = GTK_MENU_SHELL(menu)->children, n = 0;
+       for (cur = children, n = 0;
             cur != NULL; cur = cur->next, n++) {
                menuitem = GTK_WIDGET(cur->data);
                menu_data = g_object_get_data(G_OBJECT(menuitem),
@@ -186,5 +194,7 @@ gint menu_find_option_menu_index(GtkCMOptionMenu *optmenu, gpointer data,
                        return n;
        }
 
+       g_list_free(children);
+
        return -1;
 }