diff options
author | Benjamin Otte <otte@redhat.com> | 2016-11-02 17:50:12 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-11-02 22:00:29 +0100 |
commit | bb8b24da47bda36d277282bab46a7eb87dc02167 (patch) | |
tree | c436aee88c9f5a627adac57cbc4970a5aa93a0b0 /gtk/gtkmenu.c | |
parent | 633a93f418ce029bc3cb6665a648235183cec731 (diff) | |
download | gtk+-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.c | 29 |
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); } |