--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -7401,13 +7401,8 @@
       return;
     }
 
-  gtk_container_set_default_resize_mode (GTK_CONTAINER (window), GTK_RESIZE_QUEUE);
-
   /* ensure widget tree is properly size allocated */
-  if (allocation.x == -1 &&
-      allocation.y == -1 &&
-      allocation.width == 1 &&
-      allocation.height == 1)
+  if (_gtk_widget_get_alloc_needed (widget))
     {
       GdkRectangle request;
 
@@ -7424,10 +7419,11 @@
       g_return_if_fail (!_gtk_widget_get_realized (widget));
     }
 
+      _gtk_widget_get_allocation (widget, &allocation);
+
   if (priv->hardcoded_window)
     {
       gdk_window = priv->hardcoded_window;
-      _gtk_widget_get_allocation (widget, &allocation);
       gdk_window_resize (gdk_window, allocation.width, allocation.height);
     }
   else
