summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-03-06 11:10:37 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-03-06 11:10:37 +0100
commitd988930461b449f8e0c29507048e3a3b205504d7 (patch)
treee55c5f117683397b75dde1ac7fc94dd5048e3434 /src/Fl_Screen_Driver.cxx
parenta7a3c5b4298a2f23de5deba7cfb87a73f4eec279 (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.cxx19
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);