Make fullscreen mode work better with some X11 WMs such as Fedora 14
Metacity by removing the size limits before attempting fullscreen.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4599 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index b4b2ae9..9101951 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -72,8 +72,11 @@
Fl::event_dispatch(&fltkHandle);
#ifdef HAVE_FLTK_FULLSCREEN
- if (fullScreen)
+ if (fullScreen) {
+ // See comment in DesktopWindow::handleOptions
+ size_range(100, 100, 0, 0);
fullscreen();
+ }
#endif
show();
@@ -200,8 +203,19 @@
switch (event) {
#ifdef HAVE_FLTK_FULLSCREEN
case FL_FULLSCREEN:
- if (event == FL_FULLSCREEN)
+ if (event == FL_FULLSCREEN) {
fullScreen.setParam(fullscreen_active());
+ if (!fullscreen_active()) {
+ size_range(100, 100, viewport->w(), viewport->h());
+ } else {
+ // We need to turn off the size limitations for proper
+ // fullscreen support, but in case fullscreen is activated via
+ // the WM, this is a bit of a problem. In practice, it seems to
+ // work to change the size limits after we have recieved the
+ // FL_FULLSCREEN event, at least with my Metacity.
+ size_range(100, 100, 0, 0);
+ }
+ }
if (!fullscreenSystemKeys)
break;
@@ -400,9 +414,12 @@
else
self->ungrabKeyboard();
- if (fullScreen && !self->fullscreen_active())
+ if (fullScreen && !self->fullscreen_active()) {
+ // Some WMs (Metacity) apparently requires that the size limits
+ // are removed before fullscreen
+ self->size_range(100, 100, 0, 0);
self->fullscreen();
- else if (!fullScreen && self->fullscreen_active())
+ } else if (!fullScreen && self->fullscreen_active())
self->fullscreen_off();
#endif
}
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 08ca272..0936a63 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -884,8 +884,11 @@
case ID_FULLSCREEN:
if (window()->fullscreen_active())
window()->fullscreen_off();
- else
+ else {
+ // See comment in DesktopWindow::handleOptions
+ window()->size_range(100, 100, 0, 0);
window()->fullscreen();
+ }
break;
#endif
case ID_CTRL: