summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
authorManolo Gouy <Manolo>2018-06-08 11:31:30 +0000
committerManolo Gouy <Manolo>2018-06-08 11:31:30 +0000
commitbfac49015c9b51be50c4a563c42fb25b6af4208f (patch)
treec18b14ea60e014b7e4bd2c30ecdb9929e008c1ed /src/Fl_Screen_Driver.cxx
parentf3971319b9de0c52eaf8055e18bf02321440de1d (diff)
Fix for STR#3475: X11 platform, re-use current screen scaling factor when processing a screen reconfiguration event.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12939 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
-rw-r--r--src/Fl_Screen_Driver.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx
index bbc354bb1..2c26c853e 100644
--- a/src/Fl_Screen_Driver.cxx
+++ b/src/Fl_Screen_Driver.cxx
@@ -295,7 +295,7 @@ int Fl_Screen_Driver::input_widget_handle_key(int key, unsigned mods, unsigned s
void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f)
{
float old_f = this->scale(screen);
- if (f == old_f) return;
+ //if (f == old_f) return;
this->scale(screen, f);
Fl_Graphics_Driver *d = Fl_Display_Device::display_device()->driver();
d->scale(f);
@@ -428,7 +428,7 @@ int Fl_Screen_Driver::scale_handler(int event)
// use the startup time scaling value
-void Fl_Screen_Driver::use_startup_scale_factor()
+float Fl_Screen_Driver::use_startup_scale_factor()
{
float factor;
char *p = 0;
@@ -441,9 +441,7 @@ void Fl_Screen_Driver::use_startup_scale_factor()
else {
factor = desktop_scale_factor();
}
- if (factor) {
- for (int i = 0; i < screen_count(); i++) scale(i, factor);
- }
+ return factor;
}
@@ -455,7 +453,8 @@ void Fl_Screen_Driver::open_display()
been_here = true;
screen_count(); // initialize, but ignore return value
if (rescalable()) {
- use_startup_scale_factor();
+ float factor = use_startup_scale_factor();
+ for (int i = 0; i < screen_count(); i++) scale(i, factor);
Fl::add_handler(Fl_Screen_Driver::scale_handler);
int mx, my;
int ns = Fl::screen_driver()->get_mouse(mx, my);