]> source.dussan.org Git - tigervnc.git/commitdiff
Make DesktopSize configurable from the options dialog.
authorPierre Ossman <ossman@cendio.se>
Thu, 5 Jul 2012 11:01:23 +0000 (11:01 +0000)
committerPierre Ossman <ossman@cendio.se>
Thu, 5 Jul 2012 11:01:23 +0000 (11:01 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4928 3789f03b-4d11-0410-bbf8-ca57d06f2519

vncviewer/OptionsDialog.cxx
vncviewer/OptionsDialog.h

index 58f2fd7ee9f68972fd0e374cedbcf7a7b9264379..d3ed33346a2dec0eb241e00827013001405820da 100644 (file)
@@ -271,8 +271,24 @@ void OptionsDialog::loadOptions(void)
       menuKeyChoice->value(i + 1);
 
   /* Screen */
+  int width, height;
+
+  if (sscanf(desktopSize.getValueStr(), "%dx%d", &width, &height) != 2) {
+    desktopSizeCheckbox->value(false);
+    desktopWidthInput->value("1024");
+    desktopHeightInput->value("768");
+  } else {
+    char buf[32];
+    desktopSizeCheckbox->value(true);
+    snprintf(buf, sizeof(buf), "%d", width);
+    desktopWidthInput->value(buf);
+    snprintf(buf, sizeof(buf), "%d", height);
+    desktopHeightInput->value(buf);
+  }
   fullScreenCheckbox->value(fullScreen);
 
+  handleDesktopSize(desktopSizeCheckbox, this);
+
   /* Misc. */
   sharedCheckbox->value(shared);
   dotCursorCheckbox->value(dotWhenNoCursor);
@@ -360,6 +376,17 @@ void OptionsDialog::storeOptions(void)
   }
 
   /* Screen */
+  int width, height;
+
+  if (desktopSizeCheckbox->value() &&
+      (sscanf(desktopWidthInput->value(), "%d", &width) == 1) &&
+      (sscanf(desktopHeightInput->value(), "%d", &height) == 1)) {
+    char buf[64];
+    snprintf(buf, sizeof(buf), "%dx%d", width, height);
+    desktopSize.setParam(buf);
+  } else {
+    desktopSize.setParam("");
+  }
   fullScreen.setParam(fullScreenCheckbox->value());
 
   /* Misc. */
@@ -693,11 +720,26 @@ void OptionsDialog::createInputPage(int tx, int ty, int tw, int th)
 
 void OptionsDialog::createScreenPage(int tx, int ty, int tw, int th)
 {
+  int x;
+
   Fl_Group *group = new Fl_Group(tx, ty, tw, th, _("Screen"));
 
   tx += OUTER_MARGIN;
   ty += OUTER_MARGIN;
 
+  desktopSizeCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
+                                                     CHECK_MIN_WIDTH,
+                                                     CHECK_HEIGHT,
+                                                     _("Resize remote session on connect")));
+  desktopSizeCheckbox->callback(handleDesktopSize, this);
+  ty += CHECK_HEIGHT + TIGHT_MARGIN;
+
+  desktopWidthInput = new Fl_Int_Input(tx + INDENT, ty, 50, INPUT_HEIGHT);
+  x = desktopWidthInput->x() + desktopWidthInput->w() + \
+      gui_str_len("x") + 3 * 2;
+  desktopHeightInput = new Fl_Int_Input(x, ty, 50, INPUT_HEIGHT, "x");
+  ty += INPUT_HEIGHT + TIGHT_MARGIN;
+
   fullScreenCheckbox = new Fl_Check_Button(LBLRIGHT(tx, ty,
                                                   CHECK_MIN_WIDTH,
                                                   CHECK_HEIGHT,
@@ -785,6 +827,19 @@ void OptionsDialog::handleX509(Fl_Widget *widget, void *data)
 }
 
 
+void OptionsDialog::handleDesktopSize(Fl_Widget *widget, void *data)
+{
+  OptionsDialog *dialog = (OptionsDialog*)data;
+
+  if (dialog->desktopSizeCheckbox->value()) {
+    dialog->desktopWidthInput->activate();
+    dialog->desktopHeightInput->activate();
+  } else {
+    dialog->desktopWidthInput->deactivate();
+    dialog->desktopHeightInput->deactivate();
+  }
+}
+
 void OptionsDialog::handleCancel(Fl_Widget *widget, void *data)
 {
   OptionsDialog *dialog = (OptionsDialog*)data;
index d33ecaad05db8db1da2c281b710910f5dac4d988..c406a4531fc114c963b28b34e53b4ee4f3a631a2 100644 (file)
@@ -59,6 +59,8 @@ protected:
 
   static void handleX509(Fl_Widget *widget, void *data);
 
+  static void handleDesktopSize(Fl_Widget *widget, void *data);
+
   static void handleCancel(Fl_Widget *widget, void *data);
   static void handleOK(Fl_Widget *widget, void *data);
 
@@ -107,6 +109,9 @@ protected:
   Fl_Choice *menuKeyChoice;
 
   /* Screen */
+  Fl_Check_Button *desktopSizeCheckbox;
+  Fl_Int_Input *desktopWidthInput;
+  Fl_Int_Input *desktopHeightInput;
   Fl_Check_Button *fullScreenCheckbox;
 
   /* Misc. */