summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx1
-rw-r--r--src/drivers/X11/Fl_X11_Window_Driver.cxx12
2 files changed, 5 insertions, 8 deletions
diff --git a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
index 8402e72c0..e8d12b868 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
@@ -690,7 +690,6 @@ void Fl_WinAPI_Window_Driver::resize_after_screen_change(void *data) {
float old_f = float(r.right)/win->w();
int ns = data_for_resize_window_between_screens_.screen;
win->driver()->resize_after_scale_change(ns, old_f, Fl::screen_driver()->scale(ns));
- win->wait_for_expose();
data_for_resize_window_between_screens_.busy = false;
}
diff --git a/src/drivers/X11/Fl_X11_Window_Driver.cxx b/src/drivers/X11/Fl_X11_Window_Driver.cxx
index f1a6962ac..7928dbba4 100644
--- a/src/drivers/X11/Fl_X11_Window_Driver.cxx
+++ b/src/drivers/X11/Fl_X11_Window_Driver.cxx
@@ -701,15 +701,13 @@ void Fl_X11_Window_Driver::resize_after_screen_change(void *data) {
XGetWindowAttributes(fl_display, fl_xid(win), &actual);
Window cr;
XTranslateCoordinates(fl_display, fl_xid(win), actual.root, 0, 0, &oldx, &oldy, &cr);
- win->hide();
float f = Fl::screen_driver()->scale(data_for_resize_window_between_screens_.screen);
Fl_X11_Window_Driver::driver(win)->screen_num(data_for_resize_window_between_screens_.screen);
- win->position(oldx/f, oldy/f);
- win->driver()->force_position(1);
- Fl_Xlib_Graphics_Driver *d = (Fl_Xlib_Graphics_Driver*)Fl_Display_Device::display_device()->driver();
- d->scale(f);
- win->show();
- win->wait_for_expose();
+ Fl_Display_Device::display_device()->driver()->scale(f);
+ in_resize_after_scale_change = true;
+ win->driver()->size_range();
+ win->resize(oldx/f, oldy/f, win->w(), win->h());
+ in_resize_after_scale_change = false;
data_for_resize_window_between_screens_.busy = false;
}