diff options
author | Benjamin Otte <otte@redhat.com> | 2016-11-06 17:40:59 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-11-06 17:40:59 +0100 |
commit | 87f07bac6bf2ffc7c95163db44a99f9396650fc4 (patch) | |
tree | 45603eb89f579bea6ddd6b6dbb046787792cc768 /gtk/gtkwindow.c | |
parent | 7a6cab14eb7bc6340a85447a8eb1d90138062f06 (diff) | |
download | gtk+-87f07bac6bf2ffc7c95163db44a99f9396650fc4.tar.gz |
API: gdk: Add gdk_window_new_toplevel()
... and use it in GTK.
Diffstat (limited to 'gtk/gtkwindow.c')
-rw-r--r-- | gtk/gtkwindow.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 58c66c398c..7cb88d7893 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -6868,11 +6868,9 @@ gtk_window_realize (GtkWidget *widget) GtkAllocation allocation; GtkAllocation child_allocation; GtkWindow *window; - GdkWindow *parent_window; GdkWindow *gdk_window; GdkWindowAttr attributes; GtkBorder window_border; - gint attributes_mask; GtkWindowPrivate *priv; gint i; GList *link; @@ -6944,30 +6942,8 @@ gtk_window_realize (GtkWidget *widget) } else { - switch (priv->type) - { - case GTK_WINDOW_TOPLEVEL: - attributes.window_type = GDK_WINDOW_TOPLEVEL; - break; - case GTK_WINDOW_POPUP: - attributes.window_type = GDK_WINDOW_TEMP; - break; - default: - g_warning (G_STRLOC": Unknown window type %d!", priv->type); - break; - } - -#ifdef GDK_WINDOWING_WAYLAND - if (priv->use_subsurface && - GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (widget))) - attributes.window_type = GDK_WINDOW_SUBSURFACE; -#endif - attributes.wclass = GDK_INPUT_OUTPUT; - attributes_mask = 0; - parent_window = gdk_screen_get_root_window (_gtk_window_get_screen (window)); - _gtk_widget_get_allocation (widget, &allocation); attributes.width = allocation.width; attributes.height = allocation.height; @@ -6982,11 +6958,32 @@ gtk_window_realize (GtkWidget *widget) GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK); - if (priv->decorated && priv->client_decorated) attributes.event_mask |= GDK_POINTER_MOTION_MASK; - gdk_window = gdk_window_new (parent_window, &attributes, attributes_mask); + switch (priv->type) + { + case GTK_WINDOW_TOPLEVEL: + gdk_window = gdk_window_new_toplevel (gtk_widget_get_display (widget), + attributes.event_mask, + allocation.width, + allocation.height); + break; + case GTK_WINDOW_POPUP: +#ifdef GDK_WINDOWING_WAYLAND + if (priv->use_subsurface && + GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (widget))) + attributes.window_type = GDK_WINDOW_SUBSURFACE; + else +#endif + attributes.window_type = GDK_WINDOW_TEMP; + gdk_window = gdk_window_new (gdk_screen_get_root_window (_gtk_window_get_screen (window)), + &attributes, 0); + break; + default: + g_warning (G_STRLOC": Unknown window type %d!", priv->type); + break; + } } gtk_widget_set_window (widget, gdk_window); |