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,
GtkWidget *widget;
gint wheight;
gint wx, wy;
- GtkRequisition mreq;
+ GtkAllocation allocation;
+ GtkRequisition mreq, wreq;
GdkScreen *screen;
GdkRectangle monitor;
gint monitor_num;
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);
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),
return n;
}
+ g_list_free(children);
+
return -1;
}