diff options
author | Pierre Ossman <ossman@cendio.se> | 2025-02-08 14:52:25 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2025-02-08 14:52:25 +0100 |
commit | 7c9f4328b69e3c0a02757757be26ae2e5c54e1fe (patch) | |
tree | d08d6bf3dde8be17e079ad7ec146b1a4dcef0c68 /vncviewer | |
parent | 1280c7176cdd607b06beae0f16e79e1ceefe7410 (diff) | |
parent | 52aebd6d421ea0fabba0babeff48d263a6f4299b (diff) | |
download | tigervnc-7c9f4328b69e3c0a02757757be26ae2e5c54e1fe.tar.gz tigervnc-7c9f4328b69e3c0a02757757be26ae2e5c54e1fe.zip |
Merge branch 'fullscreen' of https://github.com/CendioOssman/tigervnc
Diffstat (limited to 'vncviewer')
-rw-r--r-- | vncviewer/DesktopWindow.cxx | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx index 2bf63b8f..ec3d6122 100644 --- a/vncviewer/DesktopWindow.cxx +++ b/vncviewer/DesktopWindow.cxx @@ -222,14 +222,6 @@ DesktopWindow::DesktopWindow(int w, int h, const char *name, // Adjust layout now that we're visible and know our final size repositionWidgets(); - if (delayedFullscreen) { - // Hack: Fullscreen requests may be ignored, so we need a timeout for - // when we should stop waiting. We also really need to wait for the - // resize, which can come after the fullscreen event. - Fl::add_timeout(0.5, handleFullscreenTimeout, this); - fullscreen_on(); - } - // Throughput graph for debugging if (vlog.getLevel() >= LogWriter::LEVEL_DEBUG) { memset(&stats, 0, sizeof(stats)); @@ -864,6 +856,14 @@ int DesktopWindow::handle(int event) else ungrabKeyboard(); + // The window manager respected our full screen request, so stop + // waiting and delaying the session resize + if (delayedFullscreen && fullscreen_active()) { + Fl::remove_timeout(handleFullscreenTimeout, this); + delayedFullscreen = false; + remoteResize(); + } + break; case FL_ENTER: @@ -947,6 +947,19 @@ int DesktopWindow::fltkDispatch(int event, Fl_Window *win) } break; + case FL_SHOW: + // In this particular place, FL_SHOW means an actual MapNotify, + // which means we can continue enabling initial fullscreen. + if (dw->delayedFullscreen) { + // Hack: Fullscreen requests may be ignored, so we need a + // timeout for when we should stop waiting. We also really need + // to wait for the resize, which can come after the fullscreen + // event. + Fl::add_timeout(0.5, handleFullscreenTimeout, dw); + dw->fullscreen_on(); + } + break; + case FL_RELEASE: // We usually fail to grab the mouse if a mouse button was // pressed when we gained focus (e.g. clicking on our window), |