]> source.dussan.org Git - tigervnc.git/commitdiff
- Changes behaviour of context menu to be reinitialize
authorHenrik Andersson <henrik.andersson@cendio.com>
Wed, 14 Sep 2011 06:31:06 +0000 (06:31 +0000)
committerHenrik Andersson <henrik.andersson@cendio.com>
Wed, 14 Sep 2011 06:31:06 +0000 (06:31 +0000)
  before display with intial states.

- Fixes for fullscreen contextmenu item to show the
  current fullscreen state as it was done in the
  old viewer.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4670 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/Viewport.cxx
vncviewer/Viewport.h

index 052b593b03e40cadbe5005d68dac1f71de5eaef8..5fd873cbdb96d53f6da9e75b0c1fc95a99419b60 100644 (file)
@@ -98,7 +98,6 @@ Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_)
   window()->add(contextMenu);
 
   setMenuKey();
-  initContextMenu();
 
   OptionsDialog::addCallback(handleOptions, this);
 }
@@ -843,11 +842,14 @@ void Viewport::initContextMenu()
   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);
+  contextMenu->add(_("Full screen"), 0, NULL, (void*)ID_FULLSCREEN, 
+                  FL_MENU_TOGGLE | (window()->fullscreen_active()?FL_MENU_VALUE:0));
 #endif
 
-  contextMenu->add(_("Ctrl"), 0, NULL, (void*)ID_CTRL, FL_MENU_TOGGLE);
-  contextMenu->add(_("Alt"), 0, NULL, (void*)ID_ALT, FL_MENU_TOGGLE);
+  contextMenu->add(_("Ctrl"), 0, NULL, (void*)ID_CTRL, 
+                  FL_MENU_TOGGLE | (menuCtrlKey?FL_MENU_VALUE:0));
+  contextMenu->add(_("Alt"), 0, NULL, (void*)ID_ALT,
+                  FL_MENU_TOGGLE | (menuAltKey?FL_MENU_VALUE:0));
 
   if (menuKeyCode) {
     char sendMenuKey[64];
@@ -877,6 +879,9 @@ void Viewport::popupContextMenu()
   // it will start up highlighting the previously selected entry.
   contextMenu->value(-1);
 
+  // initialize context menu before display
+  initContextMenu();
+
   m = contextMenu->popup();
   if (m == NULL)
     return;
@@ -898,9 +903,11 @@ void Viewport::popupContextMenu()
 #endif
   case ID_CTRL:
     handleKeyEvent(FL_Control_L, FL_Control_L, "", m->value());
+    menuCtrlKey = !menuCtrlKey;
     break;
   case ID_ALT:
     handleKeyEvent(FL_Alt_L, FL_Alt_L, "", m->value());
+    menuAltKey = !menuAltKey;
     break;
   case ID_MENUKEY:
     handleKeyEvent(menuKeyCode, menuKeyCode, "", true);
@@ -940,10 +947,6 @@ void Viewport::popupContextMenu()
 void Viewport::setMenuKey()
 {
   menuKeyCode = getMenuKeyCode();
-
-  // Need to repopulate the context menu as it contains references to
-  // the menu key
-  initContextMenu();
 }
 
 
index c9a3cf3a58d1ca5c5e89b85e41b6916bb14ca3c1..144ad420b2326fdb38847a3758f9b941091d28af 100644 (file)
@@ -155,6 +155,9 @@ private:
   int menuKeyCode;
   Fl_Menu_Button *contextMenu;
 
+  bool menuCtrlKey;
+  bool menuAltKey;
+
   Fl_RGB_Image *cursor;
   rfb::Point cursorHotspot;
 };