Added controls to manage the scale filters in the vncviewer options dialog.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2289 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/vncviewer/OptionsDialog.cxx b/win/vncviewer/OptionsDialog.cxx
index 08990f7..c326645 100644
--- a/win/vncviewer/OptionsDialog.cxx
+++ b/win/vncviewer/OptionsDialog.cxx
@@ -176,6 +176,14 @@
     } else {
       SetDlgItemInt(handle, IDC_COMBO_SCALE, dlg->options.scale, FALSE);
     }
+    HWND hScaleFilterCombo = GetDlgItem(handle, IDC_COMBO_SCALE_FILTER);
+    SendMessage(hScaleFilterCombo, CB_RESETCONTENT, 0, 0);
+    ScaleFilters scaleFilters;
+    for (i = 0; i <= rfb::scaleFilterMaxNumber; i++) {
+      SendMessage(hScaleFilterCombo, CB_ADDSTRING, (WPARAM)0, (LPARAM)(int FAR*)scaleFilters[i].name);
+    }
+    SendMessage(hScaleFilterCombo, CB_SETCURSEL, (WPARAM)dlg->options.scaleFilter, (LPARAM)0);
+    if (dlg->options.scale == 100 && !dlg->options.autoScaling) enableItem(IDC_COMBO_SCALE_FILTER, 0);
   }
   virtual bool onOk() {
     dlg->options.shared = isItemChecked(IDC_CONN_SHARED);
@@ -197,9 +205,28 @@
         dlg->options.autoScaling = true;
       }
     }
+    dlg->options.scaleFilter = SendMessage(GetDlgItem(handle, IDC_COMBO_SCALE_FILTER), CB_GETCURSEL, 0, 0);
     ((ViewerOptions*)propSheet)->setChanged();
     return true;
   }
+  virtual bool onCommand(int id, int cmd) {
+    if (id == IDC_COMBO_SCALE) {
+      if (cmd == CBN_SELENDOK || cmd == CBN_EDITCHANGE) {
+        char scaleStr[20];
+        if (cmd == CBN_SELENDOK) {
+          HWND handleComboScale = GetDlgItem(handle, IDC_COMBO_SCALE);
+          int index = SendMessage(handleComboScale, CB_GETCURSEL, 0, 0);
+          SendMessage(handleComboScale, CB_GETLBTEXT, (WPARAM)index, (LPARAM)scaleStr);
+        } else {
+          GetDlgItemText(handle, IDC_COMBO_SCALE, scaleStr, 20);
+        }
+        if (strcmp(scaleStr, "100") == 0) enableItem(IDC_COMBO_SCALE_FILTER, 0);
+        else enableItem(IDC_COMBO_SCALE_FILTER, 1);
+        return true;
+      }
+    }
+    return false;
+  }
 protected:
   OptionsInfo* dlg;
 };