summaryrefslogtreecommitdiff
path: root/src/Fl.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-01 11:11:15 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2024-03-01 11:11:15 +0100
commit0eef561e7b9bf54b764e7e7254b98530aac5384f (patch)
tree09755aca065c60ee7f7a2a1f430841f640221765 /src/Fl.cxx
parent5f2069871d00575717d998a2e1e3d398ec9137ef (diff)
Windows: make Ctrl/+/-/0/ scaling system-wide if all screens have same DPI
Diffstat (limited to 'src/Fl.cxx')
-rw-r--r--src/Fl.cxx9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx
index c9a2972d2..dcf4be3bc 100644
--- a/src/Fl.cxx
+++ b/src/Fl.cxx
@@ -2266,8 +2266,13 @@ float Fl::screen_scale(int n) {
Also sets the scale factor value of all windows mapped to screen number \p n, if any.
*/
void Fl::screen_scale(int n, float factor) {
- if (!Fl::screen_scaling_supported() || n < 0 || n >= Fl::screen_count()) return;
- Fl::screen_driver()->rescale_all_windows_from_screen(n, factor);
+ Fl_Screen_Driver::APP_SCALING_CAPABILITY capability = Fl::screen_driver()->rescalable();
+ if (!capability || n < 0 || n >= Fl::screen_count()) return;
+ if (capability == Fl_Screen_Driver::SYSTEMWIDE_APP_SCALING) {
+ for (int s = 0; s < Fl::screen_count(); s++) {
+ Fl::screen_driver()->rescale_all_windows_from_screen(s, factor);
+ }
+ } else Fl::screen_driver()->rescale_all_windows_from_screen(n, factor);
}
/**