]> source.dussan.org Git - tigervnc.git/commitdiff
Add headings/groups for options 1390/head
authorPierre Ossman <ossman@cendio.se>
Fri, 10 Dec 2021 09:38:20 +0000 (10:38 +0100)
committerPierre Ossman <ossman@cendio.se>
Fri, 10 Dec 2021 09:50:37 +0000 (10:50 +0100)
Try to be more consistent that related options should have a group box
around them.

vncviewer/OptionsDialog.cxx
vncviewer/OptionsDialog.h
vncviewer/parameters.cxx

index b2eedc9414276b8a9ffe34ec99ae2efa087d1a4c..f7cc774dee6d4c3c76fba388fb95837da1da8bca 100644 (file)
@@ -55,7 +55,7 @@ using namespace rfb;
 std::map<OptionsCallback*, void*> OptionsDialog::callbacks;
 
 OptionsDialog::OptionsDialog()
-  : Fl_Window(450, 450, _("VNC Viewer: Connection Options"))
+  : Fl_Window(450, 460, _("VNC Viewer: Connection Options"))
 {
   int x, y;
   Fl_Button *button;
@@ -689,64 +689,143 @@ void OptionsDialog::createInputPage(int tx, int ty, int tw, int th)
 {
   Fl_Group *group = new Fl_Group(tx, ty, tw, th, _("Input"));
 
+  int orig_tx;
+  int width;
+
   tx += OUTER_MARGIN;
   ty += OUTER_MARGIN;
 
+  width = tw - OUTER_MARGIN * 2;
+
   viewOnlyCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
                                                   CHECK_MIN_WIDTH,
                                                   CHECK_HEIGHT,
                                                   _("View only (ignore mouse and keyboard)")));
   ty += CHECK_HEIGHT + TIGHT_MARGIN;
 
-  emulateMBCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
-                                                   CHECK_MIN_WIDTH,
-                                                   CHECK_HEIGHT,
-                                                   _("Emulate middle mouse button")));
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
+  orig_tx = tx;
 
-  acceptClipboardCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
-                                                         CHECK_MIN_WIDTH,
-                                                         CHECK_HEIGHT,
-                                                         _("Accept clipboard from server")));
-  acceptClipboardCheckbox->callback(handleClipboard, this);
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
+  /* Mouse */
+  ty += GROUP_LABEL_OFFSET;
+  mouseGroup = new Fl_Group(tx, ty, width, 0, _("Mouse"));
+  mouseGroup->box(FL_ENGRAVED_BOX);
+  mouseGroup->align(FL_ALIGN_LEFT | FL_ALIGN_TOP);
 
-#if !defined(WIN32) && !defined(__APPLE__)
-  setPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx + INDENT, ty,
-                                                    CHECK_MIN_WIDTH,
-                                                    CHECK_HEIGHT,
-                                                    _("Also set primary selection")));
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
-#endif
+  /* Needed for final resize to work sanely */
+  mouseGroup->resizable(NULL);
 
-  sendClipboardCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
-                                                       CHECK_MIN_WIDTH,
-                                                       CHECK_HEIGHT,
-                                                       _("Send clipboard to server")));
-  sendClipboardCheckbox->callback(handleClipboard, this);
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
+  {
+    tx += GROUP_MARGIN;
+    ty += GROUP_MARGIN;
 
-#if !defined(WIN32) && !defined(__APPLE__)
-  sendPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx + INDENT, ty,
+    emulateMBCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
                                                      CHECK_MIN_WIDTH,
                                                      CHECK_HEIGHT,
-                                                     _("Send primary selection as clipboard")));
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
-#endif
+                                                     _("Emulate middle mouse button")));
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
 
-  systemKeysCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+    dotCursorCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
                                                     CHECK_MIN_WIDTH,
                                                     CHECK_HEIGHT,
-                                                    _("Pass system keys directly to server (full screen)")));
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
+                                                    _("Show dot when no cursor")));
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+  }
+  ty += GROUP_MARGIN - TIGHT_MARGIN;
 
-  menuKeyChoice = new Fl_Choice(LBLLEFT(tx, ty, 150, CHOICE_HEIGHT, _("Menu key")));
+  mouseGroup->end();
+  mouseGroup->size(mouseGroup->w(), ty - mouseGroup->y());
 
-  fltk_menu_add(menuKeyChoice, _("None"), 0, NULL, (void*)0, FL_MENU_DIVIDER);
-  for (int i = 0; i < getMenuKeySymbolCount(); i++)
-    fltk_menu_add(menuKeyChoice, getMenuKeySymbols()[i].name, 0, NULL, 0, 0);
+  /* Back to normal */
+  tx = orig_tx;
+  ty += INNER_MARGIN;
+
+  /* Keyboard */
+  ty += GROUP_LABEL_OFFSET;
+  keyboardGroup = new Fl_Group(tx, ty, width, 0, _("Keyboard"));
+  keyboardGroup->box(FL_ENGRAVED_BOX);
+  keyboardGroup->align(FL_ALIGN_LEFT | FL_ALIGN_TOP);
+
+  /* Needed for final resize to work sanely */
+  keyboardGroup->resizable(NULL);
+
+  {
+    tx += GROUP_MARGIN;
+    ty += GROUP_MARGIN;
+
+    systemKeysCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+                                                      CHECK_MIN_WIDTH,
+                                                      CHECK_HEIGHT,
+                                                      _("Pass system keys directly to server (full screen)")));
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+
+    menuKeyChoice = new Fl_Choice(LBLLEFT(tx, ty, 150, CHOICE_HEIGHT, _("Menu key")));
+
+    fltk_menu_add(menuKeyChoice, _("None"), 0, NULL, (void*)0, FL_MENU_DIVIDER);
+    for (int i = 0; i < getMenuKeySymbolCount(); i++)
+      fltk_menu_add(menuKeyChoice, getMenuKeySymbols()[i].name, 0, NULL, 0, 0);
 
-  ty += CHOICE_HEIGHT + TIGHT_MARGIN;
+    ty += CHOICE_HEIGHT + TIGHT_MARGIN;
+  }
+  ty += GROUP_MARGIN - TIGHT_MARGIN;
+
+  keyboardGroup->end();
+  keyboardGroup->size(keyboardGroup->w(), ty - keyboardGroup->y());
+
+  /* Back to normal */
+  tx = orig_tx;
+  ty += INNER_MARGIN;
+
+  /* Clipboard */
+  ty += GROUP_LABEL_OFFSET;
+  clipboardGroup = new Fl_Group(tx, ty, width, 0, _("Clipboard"));
+  clipboardGroup->box(FL_ENGRAVED_BOX);
+  clipboardGroup->align(FL_ALIGN_LEFT | FL_ALIGN_TOP);
+
+  /* Needed for final resize to work sanely */
+  clipboardGroup->resizable(NULL);
+
+  {
+    tx += GROUP_MARGIN;
+    ty += GROUP_MARGIN;
+
+    acceptClipboardCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+                                                           CHECK_MIN_WIDTH,
+                                                           CHECK_HEIGHT,
+                                                           _("Accept clipboard from server")));
+    acceptClipboardCheckbox->callback(handleClipboard, this);
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+
+#if !defined(WIN32) && !defined(__APPLE__)
+    setPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx + INDENT, ty,
+                                                      CHECK_MIN_WIDTH,
+                                                      CHECK_HEIGHT,
+                                                      _("Also set primary selection")));
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+#endif
+
+    sendClipboardCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+                                                         CHECK_MIN_WIDTH,
+                                                         CHECK_HEIGHT,
+                                                         _("Send clipboard to server")));
+    sendClipboardCheckbox->callback(handleClipboard, this);
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+
+#if !defined(WIN32) && !defined(__APPLE__)
+    sendPrimaryCheckbox = new Fl_Check_Button(LBLRIGHT(tx + INDENT, ty,
+                                                       CHECK_MIN_WIDTH,
+                                                       CHECK_HEIGHT,
+                                                       _("Send primary selection as clipboard")));
+    ty += CHECK_HEIGHT + TIGHT_MARGIN;
+#endif
+  }
+  ty += GROUP_MARGIN - TIGHT_MARGIN;
+
+  clipboardGroup->end();
+  clipboardGroup->size(clipboardGroup->w(), ty - clipboardGroup->y());
+
+  /* Back to normal */
+  tx = orig_tx;
+  ty += INNER_MARGIN;
 
   group->end();
 }
@@ -756,57 +835,77 @@ void OptionsDialog::createDisplayPage(int tx, int ty, int tw, int th)
 {
   Fl_Group *group = new Fl_Group(tx, ty, tw, th, _("Display"));
 
+  int orig_tx;
+  int width;
+
   tx += OUTER_MARGIN;
   ty += OUTER_MARGIN;
 
-  windowedButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
-                                                RADIO_MIN_WIDTH,
-                                                RADIO_HEIGHT,
-                                                _("Windowed")));
-  windowedButton->type(FL_RADIO_BUTTON);
-  windowedButton->callback(handleFullScreenMode, this);
-  ty += RADIO_HEIGHT + TIGHT_MARGIN;
-
-  currentMonitorButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
-                                                      RADIO_MIN_WIDTH,
-                                                      RADIO_HEIGHT,
-                                                      _("Full screen on current monitor")));
-  currentMonitorButton->type(FL_RADIO_BUTTON);
-  currentMonitorButton->callback(handleFullScreenMode, this);
-  ty += RADIO_HEIGHT + TIGHT_MARGIN;
-
-  allMonitorsButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
-                                          RADIO_MIN_WIDTH,
-                                          RADIO_HEIGHT,
-                                          _("Full screen on all monitors")));
-  allMonitorsButton->type(FL_RADIO_BUTTON);
-  allMonitorsButton->callback(handleFullScreenMode, this);
-  ty += RADIO_HEIGHT + TIGHT_MARGIN;
-
-  selectedMonitorsButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
-                                               RADIO_MIN_WIDTH,
-                                               RADIO_HEIGHT,
-                                               _("Full screen on selected monitor(s)")));
-  selectedMonitorsButton->type(FL_RADIO_BUTTON);
-  selectedMonitorsButton->callback(handleFullScreenMode, this);
-  ty += RADIO_HEIGHT + TIGHT_MARGIN;
-
-  /*
-   * Right now these occupy all remaining space, but that can probably
-   * be reduced if we add more stuff to this page.
-   */
-  int full_width = tw - OUTER_MARGIN * 2;
-  int margin_width = full_width - INDENT;
-  int full_height = th;
-  int margin_height = full_height - ty + INNER_MARGIN;
-
-  monitorArrangement = new MonitorArrangement(
-                            tx + INDENT,
-                            ty,
-                            margin_width,
-                            margin_height);
-
-  ty += CHECK_HEIGHT + margin_height;
+  width = tw - OUTER_MARGIN * 2;
+
+  orig_tx = tx;
+
+  /* Display mode */
+  ty += GROUP_LABEL_OFFSET;
+  displayModeGroup = new Fl_Group(tx, ty, width, 0, _("Display mode"));
+  displayModeGroup->box(FL_ENGRAVED_BOX);
+  displayModeGroup->align(FL_ALIGN_LEFT | FL_ALIGN_TOP);
+
+  /* Needed for final resize to work sanely */
+  displayModeGroup->resizable(NULL);
+
+  {
+    tx += GROUP_MARGIN;
+    ty += GROUP_MARGIN;
+    width -= GROUP_MARGIN * 2;
+
+    windowedButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
+                                                  RADIO_MIN_WIDTH,
+                                                  RADIO_HEIGHT,
+                                                  _("Windowed")));
+    windowedButton->type(FL_RADIO_BUTTON);
+    windowedButton->callback(handleFullScreenMode, this);
+    ty += RADIO_HEIGHT + TIGHT_MARGIN;
+
+    currentMonitorButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
+                                                        RADIO_MIN_WIDTH,
+                                                        RADIO_HEIGHT,
+                                                        _("Full screen on current monitor")));
+    currentMonitorButton->type(FL_RADIO_BUTTON);
+    currentMonitorButton->callback(handleFullScreenMode, this);
+    ty += RADIO_HEIGHT + TIGHT_MARGIN;
+
+    allMonitorsButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
+                                            RADIO_MIN_WIDTH,
+                                            RADIO_HEIGHT,
+                                            _("Full screen on all monitors")));
+    allMonitorsButton->type(FL_RADIO_BUTTON);
+    allMonitorsButton->callback(handleFullScreenMode, this);
+    ty += RADIO_HEIGHT + TIGHT_MARGIN;
+
+    selectedMonitorsButton = new Fl_Round_Button(LBLRIGHT(tx, ty,
+                                                 RADIO_MIN_WIDTH,
+                                                 RADIO_HEIGHT,
+                                                 _("Full screen on selected monitor(s)")));
+    selectedMonitorsButton->type(FL_RADIO_BUTTON);
+    selectedMonitorsButton->callback(handleFullScreenMode, this);
+    ty += RADIO_HEIGHT + TIGHT_MARGIN;
+
+    monitorArrangement = new MonitorArrangement(
+                              tx + INDENT, ty,
+                              width - INDENT, 150);
+    ty += 150 + TIGHT_MARGIN;
+  }
+  ty += GROUP_MARGIN - TIGHT_MARGIN;
+
+  displayModeGroup->end();
+  displayModeGroup->size(displayModeGroup->w(),
+                         ty - displayModeGroup->y());
+
+  /* Back to normal */
+  tx = orig_tx;
+  ty += INNER_MARGIN;
+  width = tw - OUTER_MARGIN * 2;
 
   group->end();
 }
@@ -831,12 +930,6 @@ void OptionsDialog::createMiscPage(int tx, int ty, int tw, int th)
                                                   _("Ask to reconnect on connection errors")));
   ty += CHECK_HEIGHT + TIGHT_MARGIN;
 
-  dotCursorCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
-                                                  CHECK_MIN_WIDTH,
-                                                  CHECK_HEIGHT,
-                                                  _("Show dot when no cursor")));
-  ty += CHECK_HEIGHT + TIGHT_MARGIN;
-
   group->end();
 }
 
index de1e01738e08fa60d2f9603b429423a02c20b54b..fe39f19255b8648f3a0e6a0e311ae50ddab5a229 100644 (file)
@@ -108,7 +108,13 @@ protected:
 
   /* Input */
   Fl_Check_Button *viewOnlyCheckbox;
+  Fl_Group *mouseGroup;
   Fl_Check_Button *emulateMBCheckbox;
+  Fl_Check_Button *dotCursorCheckbox;
+  Fl_Group *keyboardGroup;
+  Fl_Check_Button *systemKeysCheckbox;
+  Fl_Choice *menuKeyChoice;
+  Fl_Group *clipboardGroup;
   Fl_Check_Button *acceptClipboardCheckbox;
 #if !defined(WIN32) && !defined(__APPLE__)
   Fl_Check_Button *setPrimaryCheckbox;
@@ -117,10 +123,9 @@ protected:
 #if !defined(WIN32) && !defined(__APPLE__)
   Fl_Check_Button *sendPrimaryCheckbox;
 #endif
-  Fl_Check_Button *systemKeysCheckbox;
-  Fl_Choice *menuKeyChoice;
 
   /* Display */
+  Fl_Group *displayModeGroup;
   Fl_Round_Button *windowedButton;
   Fl_Round_Button *currentMonitorButton;
   Fl_Round_Button *allMonitorsButton;
@@ -130,7 +135,6 @@ protected:
   /* Misc. */
   Fl_Check_Button *sharedCheckbox;
   Fl_Check_Button *reconnectCheckbox;
-  Fl_Check_Button *dotCursorCheckbox;
 };
 
 #endif
index 40c525f795570bed57be30b1ec44a53de467ddba..0912b461dcaeeabbeb4260a55c02059773c369ce 100644 (file)
@@ -181,7 +181,6 @@ static VoidParameter* parameterArray[] = {
 #endif // HAVE_GNUTLS
   &SecurityClient::secTypes,
   /* Misc. */
-  &dotWhenNoCursor,
   &reconnectOnError,
   &shared,
   /* Compression */
@@ -200,6 +199,7 @@ static VoidParameter* parameterArray[] = {
   /* Input */
   &viewOnly,
   &emulateMiddleButton,
+  &dotWhenNoCursor,
   &acceptClipboard,
   &sendClipboard,
 #if !defined(WIN32) && !defined(__APPLE__)