diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-10-24 09:43:23 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2023-10-24 09:43:23 +0200 |
| commit | 3868ea90bd2bd5fc194bb08ee4a267b4940bd232 (patch) | |
| tree | 676a715508deb9bab1d606db7f10194935427cd4 /src/Fl_Screen_Driver.cxx | |
| parent | 434e6a09ed793223aa3f7b6e9ab50a42d9c10aa4 (diff) | |
Wayland: implement scale factor windows as popups - cont'd
Diffstat (limited to 'src/Fl_Screen_Driver.cxx')
| -rw-r--r-- | src/Fl_Screen_Driver.cxx | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/Fl_Screen_Driver.cxx b/src/Fl_Screen_Driver.cxx index b3cc70c88..f9a40f132 100644 --- a/src/Fl_Screen_Driver.cxx +++ b/src/Fl_Screen_Driver.cxx @@ -384,9 +384,15 @@ void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f) } -static void del_transient_window(Fl_Window **pwin) { - delete *pwin; - *pwin = NULL; +static Fl_Window *transient_scale_window = NULL; +Fl_Window *Fl_Screen_Driver::transient_scale_parent = NULL; + + +static void del_transient_window(void *) { + Fl_Screen_Driver::transient_scale_parent = NULL; + delete (Fl_Image*)transient_scale_window->shape(); + delete transient_scale_window; + transient_scale_window = NULL; } @@ -430,15 +436,14 @@ void Fl_Screen_Driver::transient_scale_display(float f, int nscreen) win->set_non_modal(); Fl_Window_Driver::driver(win)->screen_num(nscreen); Fl_Window_Driver::driver(win)->force_position(1); - static Fl_Window *transient = NULL; - if (transient) { - Fl::remove_timeout((Fl_Timeout_Handler)del_transient_window); - delete transient; + if (transient_scale_window) { + Fl::remove_timeout(del_transient_window); + del_transient_window(NULL); } - transient = win; + transient_scale_window = win; win->show(); // delete transient win after 1 sec - Fl::add_timeout(1, (Fl_Timeout_Handler)del_transient_window, &transient); + Fl::add_timeout(1, del_transient_window, NULL); } // respond to Ctrl-'+' and Ctrl-'-' and Ctrl-'0' (Ctrl-'=' is same as Ctrl-'+') by rescaling all windows |
