Index: gtkwindow.c
===================================================================
--- gtkwindow.c	(revision 17564)
+++ gtkwindow.c	(working copy)
@@ -5920,28 +5920,50 @@ gtk_window_move_resize (GtkWindow *windo
 			     new_request.width, new_request.height);
 	}
       
-      /* Increment the number of have-not-yet-received-notify requests */
-      window->configure_request_count += 1;
+      if (window->type == GTK_WINDOW_POPUP)
+        {
+	  GtkAllocation allocation;
 
-      /* for GTK_RESIZE_QUEUE toplevels, we are now awaiting a new
-       * configure event in response to our resizing request.
-       * the configure event will cause a new resize with
-       * ->configure_notify_received=TRUE.
-       * until then, we want to
-       * - discard expose events
-       * - coalesce resizes for our children
-       * - defer any window resizes until the configure event arrived
-       * to achieve this, we queue a resize for the window, but remove its
-       * resizing handler, so resizing will not be handled from the next
-       * idle handler but when the configure event arrives.
-       *
-       * FIXME: we should also dequeue the pending redraws here, since
-       * we handle those ourselves upon ->configure_notify_received==TRUE.
-       */
-      if (container->resize_mode == GTK_RESIZE_QUEUE)
-	{
-	  gtk_widget_queue_resize (widget);
-	  _gtk_container_dequeue_resize_handler (container);
+	  /* Directly size allocate for override redirect windows. */
+	  widget->allocation.width = new_request.width;
+	  widget->allocation.height = new_request.height;
+
+	  allocation = widget->allocation;
+	  gtk_widget_size_allocate (widget, &allocation);
+
+	  gdk_window_process_updates (widget->window, TRUE);
+
+	  if (container->resize_mode == GTK_RESIZE_QUEUE)
+	    {
+	      gtk_widget_queue_resize (widget);
+	      _gtk_container_queue_resize (container);
+	    }
+	}
+      else
+        {
+	  /* Increment the number of have-not-yet-received-notify requests */
+	  window->configure_request_count += 1;
+
+	  /* for GTK_RESIZE_QUEUE toplevels, we are now awaiting a new
+	   * configure event in response to our resizing request.
+	   * the configure event will cause a new resize with
+	   * ->configure_notify_received=TRUE.
+	   * until then, we want to
+	   * - discard expose events
+	   * - coalesce resizes for our children
+	   * - defer any window resizes until the configure event arrived
+	   * to achieve this, we queue a resize for the window, but remove its
+	   * resizing handler, so resizing will not be handled from the next
+	   * idle handler but when the configure event arrives.
+	   *
+	   * FIXME: we should also dequeue the pending redraws here, since
+	   * we handle those ourselves upon ->configure_notify_received==TRUE.
+	   */
+	  if (container->resize_mode == GTK_RESIZE_QUEUE)
+	    {
+	      gtk_widget_queue_resize (widget);
+	      _gtk_container_dequeue_resize_handler (container);
+	    }
 	}
     }
   else
