diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2024-03-04 16:25:45 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2024-03-04 16:25:45 +0100 |
| commit | a0ff3f6f5c6994f4260685d70cc5f8349a8fdb69 (patch) | |
| tree | ddf7d19a45efc422aa0eeef16bdf2336163d8018 /src/Fl_Screen_Driver.cxx | |
| parent | 7777a503ada1d7d7ae2e30897efa52bcd0b36df6 (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.cxx | 9 |
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); |
