Make Fl::screen_scale(int, float) functional also after initial window display.

This commit is contained in:
ManoloFLTK 2020-01-17 15:07:06 +01:00
parent 3e4baae6fc
commit 0a7b5b19bf
1 changed files with 10 additions and 5 deletions

View File

@ -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);
}
}
/**