aboutsummaryrefslogtreecommitdiffstats
path: root/vncviewer
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2025-02-08 14:52:25 +0100
committerPierre Ossman <ossman@cendio.se>2025-02-08 14:52:25 +0100
commit7c9f4328b69e3c0a02757757be26ae2e5c54e1fe (patch)
treed08d6bf3dde8be17e079ad7ec146b1a4dcef0c68 /vncviewer
parent1280c7176cdd607b06beae0f16e79e1ceefe7410 (diff)
parent52aebd6d421ea0fabba0babeff48d263a6f4299b (diff)
downloadtigervnc-7c9f4328b69e3c0a02757757be26ae2e5c54e1fe.tar.gz
tigervnc-7c9f4328b69e3c0a02757757be26ae2e5c54e1fe.zip
Merge branch 'fullscreen' of https://github.com/CendioOssman/tigervnc
Diffstat (limited to 'vncviewer')
-rw-r--r--vncviewer/DesktopWindow.cxx29
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),