From 0a7b5b19bf652653159a4256a77dc5e9a2306686 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Fri, 17 Jan 2020 15:07:06 +0100 Subject: Make Fl::screen_scale(int, float) functional also after initial window display. --- src/Fl.cxx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Fl.cxx b/src/Fl.cxx index 13bd308f1..2652ad9ff 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -2126,16 +2126,21 @@ int Fl::get_font_sizes(Fl_Font fnum, int*& sizep) { /** Current value of the GUI scaling factor for screen number \p n */ float Fl::screen_scale(int n) { + if (!Fl::screen_scaling_supported() || n < 0 || n >= Fl::screen_count()) return 1.; return Fl::screen_driver()->scale(n); } /** Set the value of the GUI scaling factor for screen number \p n. -Call this function before the first window is show()'n to set the - application's initial scaling factor value. */ +When this function is called before the first window is show()'n it sets the + application's initial scaling factor value. Otherwise, it sets the scale factor value of all windows mapped to screen number \p n */ void Fl::screen_scale(int n, float factor) { - fl_open_display(); - Fl::screen_driver()->scale(n, factor); - Fl_Graphics_Driver::default_driver().scale(factor); + if (!Fl::screen_scaling_supported() || n < 0 || n >= Fl::screen_count()) return; + if (Fl::first_window()) { + Fl::screen_driver()->rescale_all_windows_from_screen(n, factor); + } else { + Fl::screen_driver()->scale(n, factor); + Fl_Graphics_Driver::default_driver().scale(factor); + } } /** -- cgit v1.2.3