summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-04 16:25:45 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-04 16:25:45 +0100
commita0ff3f6f5c6994f4260685d70cc5f8349a8fdb69 (patch)
treeddf7d19a45efc422aa0eeef16bdf2336163d8018 /src/Fl_Screen_Driver.cxx
parent7777a503ada1d7d7ae2e30897efa52bcd0b36df6 (diff)
Fix Scaling window up/down also scales X/Y position on secondary displays only (#925)
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
-rw-r--r--src/Fl_Screen_Driver.cxx9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx
index 12453b89e..f975195ba 100644
--- a/src/Fl_Screen_Driver.cxx
+++ b/src/Fl_Screen_Driver.cxx
@@ -376,10 +376,8 @@ 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)
+void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f, float old_f)
{
- float old_f = this->scale(screen);
- //if (f == old_f) return;
this->scale(screen, f);
Fl_Graphics_Driver *d = Fl_Display_Device::display_device()->driver();
d->scale(f);
@@ -542,11 +540,12 @@ int Fl_Screen_Driver::scale_handler(int event)
}
if (f == old_f) return 1;
if (screen_dr->rescalable() == SYSTEMWIDE_APP_SCALING) {
+ float old_f = screen_dr->scale(0);
for (int i = 0; i < Fl::screen_count(); i++) {
- screen_dr->rescale_all_windows_from_screen(i, f * initial_scale);
+ screen_dr->rescale_all_windows_from_screen(i, f * initial_scale, old_f);
}
} else {
- screen_dr->rescale_all_windows_from_screen(screen, f * initial_scale);
+ screen_dr->rescale_all_windows_from_screen(screen, f * initial_scale, screen_dr->scale(screen));
}
Fl_Screen_Driver::transient_scale_display(f, screen);
Fl::handle(FL_ZOOM_EVENT, NULL);