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());