Implement full screen support in new vncviewer.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4447 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b696e70..f3cb208 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -200,6 +200,9 @@
# FLTK STR #2638
check_cxx_source_compiles("#include <FL/Enumerations.H>\nint main(int c, char** v) { return FL_Volume_Down; }" HAVE_FLTK_MEDIAKEYS)
+ # FLTK STR #2641
+ check_cxx_source_compiles("#include <FL/Enumerations.H>\nint main(int c, char** v) { return FL_FULLSCREEN; }" HAVE_FLTK_FULLSCREEN)
+
set(CMAKE_REQUIRED_INCLUDES)
set(CMAKE_REQUIRED_LIBRARIES)
endif()
diff --git a/config.h.cmake.in b/config.h.cmake.in
index a165424..91dff67 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -14,6 +14,7 @@
#cmakedefine HAVE_FLTK_DEAD_KEYS
#cmakedefine HAVE_FLTK_CLIPBOARD
#cmakedefine HAVE_FLTK_MEDIAKEYS
+#cmakedefine HAVE_FLTK_FULLSCREEN
#cmakedefine ENABLE_NLS 1
/* MS Visual Studio 2008 and newer doesn't know ssize_t */
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 4470a31..1dff102 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -55,7 +55,7 @@
// Menu constants
-enum { ID_EXIT, ID_CTRL, ID_ALT, ID_MENUKEY, ID_CTRLALTDEL,
+enum { ID_EXIT, ID_FULLSCREEN, ID_CTRL, ID_ALT, ID_MENUKEY, ID_CTRLALTDEL,
ID_REFRESH, ID_OPTIONS, ID_INFO, ID_ABOUT, ID_DISMISS };
Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_)
@@ -570,6 +570,10 @@
contextMenu->add(_("Exit viewer"), 0, NULL, (void*)ID_EXIT, FL_MENU_DIVIDER);
+#ifdef HAVE_FLTK_FULLSCREEN
+ contextMenu->add(_("Full screen"), 0, NULL, (void*)ID_FULLSCREEN, FL_MENU_DIVIDER);
+#endif
+
contextMenu->add(_("Ctrl"), 0, NULL, (void*)ID_CTRL, FL_MENU_TOGGLE);
contextMenu->add(_("Alt"), 0, NULL, (void*)ID_ALT, FL_MENU_TOGGLE);
@@ -607,6 +611,14 @@
case ID_EXIT:
exit_vncviewer();
break;
+#ifdef HAVE_FLTK_FULLSCREEN
+ case ID_FULLSCREEN:
+ if (window()->fullscreen_active())
+ window()->fullscreen_off();
+ else
+ window()->fullscreen();
+ break;
+#endif
case ID_CTRL:
if (!viewOnly)
cc->writer()->keyEvent(XK_Control_L, m->value());