summaryrefslogtreecommitdiff
path: root/gtk/gtkmenu.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-11-02 17:50:12 +0100
committerBenjamin Otte <otte@redhat.com>2016-11-02 22:00:29 +0100
commitbb8b24da47bda36d277282bab46a7eb87dc02167 (patch)
treec436aee88c9f5a627adac57cbc4970a5aa93a0b0 /gtk/gtkmenu.c
parent633a93f418ce029bc3cb6665a648235183cec731 (diff)
downloadgtk+-bb8b24da47bda36d277282bab46a7eb87dc02167.tar.gz
menu: Don't set widget->window
Instead, create an input window for the menubar and omit the window for the menu itself.
Diffstat (limited to 'gtk/gtkmenu.c')
-rw-r--r--gtk/gtkmenu.c29
1 files changed, 6 insertions, 23 deletions
diff --git a/gtk/gtkmenu.c b/gtk/gtkmenu.c
index a048627d65..91977cbb04 100644
--- a/gtk/gtkmenu.c
+++ b/gtk/gtkmenu.c
@@ -2598,37 +2598,24 @@ gtk_menu_realize (GtkWidget *widget)
GtkMenu *menu = GTK_MENU (widget);
GtkMenuPrivate *priv = menu->priv;
GtkAllocation allocation;
- GdkWindow *window;
GtkWidget *child;
GList *children;
GtkBorder arrow_border, padding;
- g_return_if_fail (GTK_IS_MENU (widget));
-
- gtk_widget_set_realized (widget, TRUE);
+ GTK_WIDGET_CLASS (gtk_menu_parent_class)->realize (widget);
gtk_widget_get_allocation (widget, &allocation);
-
- window = gdk_window_new_child (gtk_widget_get_parent_window (widget),
- gtk_widget_get_events (widget)
- | GDK_KEY_PRESS_MASK
- | GDK_ENTER_NOTIFY_MASK
- | GDK_LEAVE_NOTIFY_MASK,
- &allocation);
- gtk_widget_set_window (widget, window);
- gtk_widget_register_window (widget, window);
-
get_menu_padding (widget, &padding);
get_arrows_border (menu, &arrow_border);
- priv->view_window = gdk_window_new_child (window,
+ priv->view_window = gdk_window_new_child (gtk_widget_get_window (widget),
gtk_widget_get_events (widget)
| GDK_KEY_PRESS_MASK
| GDK_ENTER_NOTIFY_MASK
| GDK_LEAVE_NOTIFY_MASK,
&(GdkRectangle) {
- padding.left,
- padding.top + arrow_border.top,
+ allocation.x + padding.left,
+ allocation.y + padding.top + arrow_border.top,
MAX (1, allocation.width - padding.left - padding.right),
MAX (1, allocation.height - padding.top - padding.bottom
- arrow_border.top - arrow_border.bottom)});
@@ -2853,8 +2840,8 @@ gtk_menu_size_allocate (GtkWidget *widget,
for (i = 0; i < priv->heights_length; i++)
priv->requested_height += priv->heights[i];
- x = padding.left;
- y = padding.top;
+ x = allocation->x + padding.left;
+ y = allocation->y + padding.top;
width = allocation->width - padding.left - padding.right;
height = allocation->height - padding.top - padding.bottom;
@@ -2886,10 +2873,6 @@ gtk_menu_size_allocate (GtkWidget *widget,
if (gtk_widget_get_realized (widget))
{
- gdk_window_move_resize (gtk_widget_get_window (widget),
- allocation->x, allocation->y,
- allocation->width, allocation->height);
-
gdk_window_move_resize (priv->view_window, x, y, width, height);
}