diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-03-06 11:10:37 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2019-03-06 11:10:37 +0100 |
| commit | d988930461b449f8e0c29507048e3a3b205504d7 (patch) | |
| tree | e55c5f117683397b75dde1ac7fc94dd5048e3434 /src/Fl_Screen_Driver.cxx | |
| parent | a7a3c5b4298a2f23de5deba7cfb87a73f4eec279 (diff) | |
Process env var FLTK_SCALING_FACTOR consistently across platforms.
The procedure to set screen scaling factors becomes:
1) each screen scaling factor is set to 1
2) the OS is queried according to each platform to get screen scaling factor
values
3) The value of FLTK_SCALING_FACTOR, if present, is used to multiply
scaling factors
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
| -rw-r--r-- | src/Fl_Screen_Driver.cxx | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx index 44c92a5c7..c572115f7 100644 --- a/src/Fl_Screen_Driver.cxx +++ b/src/Fl_Screen_Driver.cxx @@ -434,20 +434,15 @@ int Fl_Screen_Driver::scale_handler(int event) // use the startup time scaling value -float Fl_Screen_Driver::use_startup_scale_factor() +void Fl_Screen_Driver::use_startup_scale_factor() { - float factor; - char *p = 0; + char *p; + desktop_scale_factor(); if ((p = fl_getenv("FLTK_SCALING_FACTOR"))) { + float factor = 1; sscanf(p, "%f", &factor); + for (int i = 0; i < screen_count(); i++) scale(i, factor * scale(i)); } - else { - factor = desktop_scale_factor(); - } - // checks to prevent potential crash (factor <= 0) or very large factors - if (factor < 0.25) factor = 0.25; - else if (factor > 10.0) factor = 10.0; - return factor; } @@ -457,10 +452,8 @@ void Fl_Screen_Driver::open_display() static bool been_here = false; if (!been_here) { been_here = true; - int scount = screen_count(); // keep here if (rescalable()) { - float factor = use_startup_scale_factor(); - if (factor) for (int i = 0; i < scount; i++) scale(i, factor); + use_startup_scale_factor(); Fl::add_handler(Fl_Screen_Driver::scale_handler); int mx, my; int ns = Fl::screen_driver()->get_mouse(mx, my); |
