summaryrefslogtreecommitdiff
path: root/gtk/gtkwindow.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-11-06 17:40:59 +0100
committerBenjamin Otte <otte@redhat.com>2016-11-06 17:40:59 +0100
commit87f07bac6bf2ffc7c95163db44a99f9396650fc4 (patch)
tree45603eb89f579bea6ddd6b6dbb046787792cc768 /gtk/gtkwindow.c
parent7a6cab14eb7bc6340a85447a8eb1d90138062f06 (diff)
downloadgtk+-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.c49
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);