< 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 >