summaryrefslogtreecommitdiff
path: root/src/Fl_Screen_Driver.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-10-24 09:43:23 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2023-10-24 09:43:23 +0200
commit3868ea90bd2bd5fc194bb08ee4a267b4940bd232 (patch)
tree676a715508deb9bab1d606db7f10194935427cd4 /src/Fl_Screen_Driver.cxx
parent434e6a09ed793223aa3f7b6e9ab50a42d9c10aa4 (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.cxx23
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