static void gimp_container_grid_view_menu_position (GtkMenu *menu, gint *x, gint *y, gpointer data) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (data); GtkWidget *widget; if (grid_view->selected_item) widget = GTK_WIDGET (grid_view->selected_item); else widget = GTK_WIDGET (grid_view->wrap_box); gdk_window_get_origin (widget->window, x, y); if (GTK_WIDGET_NO_WINDOW (widget)) { *x += widget->allocation.x; *y += widget->allocation.y; } if (grid_view->selected_item) { *x += widget->allocation.width / 2; *y += widget->allocation.height / 2; } else { *x += widget->style->xthickness; *y += widget->style->ythickness; } gimp_menu_position (menu, x, y); }
static void gimp_container_grid_view_menu_position (GtkMenu *menu, gint *x, gint *y, gpointer data) { GimpContainerGridView *grid_view = GIMP_CONTAINER_GRID_VIEW (data); GtkWidget *widget; GtkAllocation allocation; if (grid_view->selected_item) widget = GTK_WIDGET (grid_view->selected_item); else widget = GTK_WIDGET (grid_view->wrap_box); gtk_widget_get_allocation (widget, &allocation); gdk_window_get_origin (gtk_widget_get_window (widget), x, y); if (! gtk_widget_get_has_window (widget)) { *x += allocation.x; *y += allocation.y; } if (grid_view->selected_item) { *x += allocation.width / 2; *y += allocation.height / 2; } else { GtkStyle *style = gtk_widget_get_style (widget); *x += style->xthickness; *y += style->ythickness; } gimp_menu_position (menu, x, y); }