< prev index next >

modules/javafx.graphics/src/main/native-glass/gtk/glass_window.cpp

Print this page

        

@@ -678,11 +678,12 @@
             resizable(),
             frame_extents_initialized(),
             map_received(false),
             location_assigned(false),
             size_assigned(false),
-            on_top(false)
+            on_top(false),
+            requested_bounds()
 {
     jwindow = mainEnv->NewGlobalRef(_jwindow);
 
     gtk_widget =  gtk_window_new(type == POPUP ? GTK_WINDOW_POPUP : GTK_WINDOW_TOPLEVEL);
 

@@ -980,10 +981,17 @@
             updateWindowConstraints = true;
             geometry.extents.top = top;
             geometry.extents.left = left;
             geometry.extents.bottom = bottom;
             geometry.extents.right = right;
+            if (!frame_extents_initialized && !is_null_extents()) {
+                set_bounds(0, 0, false, false,
+                    requested_bounds.width, requested_bounds.height,
+                    requested_bounds.client_width, requested_bounds.client_height
+                );
+                frame_extents_initialized = true;
+            }
         }
     } else {
         x = event->x;
         y = event->y;
         w = event->width;

@@ -1107,14 +1115,21 @@
     }
     WindowContextBase::set_visible(visible);
 }
 
 void WindowContextTop::set_bounds(int x, int y, bool xSet, bool ySet, int w, int h, int cw, int ch) {
+    requested_bounds.width = w;
+    requested_bounds.height = h;
+    requested_bounds.client_width = cw;
+    requested_bounds.client_height = ch;
+
     if (!frame_extents_initialized && frame_type == TITLED) {
         initialize_frame_extents();
+        if (!is_null_extents()) {
         frame_extents_initialized = true;
     }
+    }
 
     XWindowChanges windowChanges;
     unsigned int windowChangesMask = 0;
     if (w > 0) {
         geometry.final_width.value = w;
< prev index next >