Now status of ZOOM IN, ZOOM OUT, ACTUAL SIZE, AUTO SIZE
toolbar buttons depend on scale values and scale mode
(scale, auto scale).

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@662 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/win/vncviewer/DesktopWindow.cxx b/win/vncviewer/DesktopWindow.cxx
index 517d3ab..8460f58 100644
--- a/win/vncviewer/DesktopWindow.cxx
+++ b/win/vncviewer/DesktopWindow.cxx
@@ -308,6 +308,7 @@
   bool maximized = GetWindowLong(handle, GWL_STYLE) & WS_MAXIMIZE;
 
   if (showToolbar && !tb.isVisible()) {
+    refreshToolbarButtons();
     tb.show();
     if (!maximized) r.bottom += tb.getHeight();
   } else if (!showToolbar && tb.isVisible()) {
@@ -320,6 +321,24 @@
   else SetWindowPos(handle, NULL, 0, 0, r.right-r.left, r.bottom-r.top, SWP_NOMOVE | SWP_NOZORDER);
 }
 
+void DesktopWindow::refreshToolbarButtons() {
+  int scale = getDesktopScale();
+  if (scale == 100) tb.enableButton(ID_ACTUAL_SIZE, false);
+  else tb.enableButton(ID_ACTUAL_SIZE, true);
+  if (scale <= 10) {
+    tb.enableButton(ID_ZOOM_IN, true);
+    tb.enableButton(ID_ZOOM_OUT, false);
+  } else if (scale >= 200) {
+    tb.enableButton(ID_ZOOM_IN, false);
+    tb.enableButton(ID_ZOOM_OUT, true);
+  } else {
+    tb.enableButton(ID_ZOOM_IN, true);
+    tb.enableButton(ID_ZOOM_OUT, true);
+  }
+  if (isAutoScaling()) tb.pressButton(ID_AUTO_SIZE, true);
+  else tb.pressButton(ID_AUTO_SIZE, false);
+}
+
 void DesktopWindow::setDisableWinKeys(bool dwk) {
   // Enable low-level event hooking, so we get special keys directly
   if (dwk)
@@ -949,10 +968,16 @@
   calculateScrollBars();
 }
 
+void DesktopWindow::setAutoScaling(bool as) { 
+  autoScaling = as;
+  if (as) fitBufferToWindow();
+}
+
 void DesktopWindow::setDesktopScale(int scale) {
   buffer->setScale(scale);
   InvalidateRect(frameHandle, 0, FALSE);
   calculateScrollBars();
+  if (isToolbarEnabled()) refreshToolbarButtons();
 }
 
 void DesktopWindow::fitBufferToWindow(bool repaint) {
@@ -975,6 +1000,7 @@
   }
   buffer->setScaleRatio(scale_ratio);
   if (repaint) InvalidateRect(frameHandle, 0, TRUE);
+  if (isToolbarEnabled()) refreshToolbarButtons();
 }
 
 void