[Developement] Added auto scaling on resizing window (non applet mode), auto scaling in applet.
[BugFix] Wrong auto scaling in applet and application.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3293 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/vncviewer/VncCanvas.java b/java/src/com/tightvnc/vncviewer/VncCanvas.java
index a457469..d3a4070 100644
--- a/java/src/com/tightvnc/vncviewer/VncCanvas.java
+++ b/java/src/com/tightvnc/vncviewer/VncCanvas.java
@@ -77,6 +77,7 @@
   int[] zrleTilePixels24;
   ZlibInStream zrleInStream;
   boolean zrleRecWarningShown = false;
+  boolean isFirstSizeAutoUpdate = true;
 
   // Zlib encoder's data.
   byte[] zlibBuf;
@@ -263,10 +264,28 @@
     int fbWidth = rfb.framebufferWidth;
     int fbHeight = rfb.framebufferHeight;
 
+    // FIXME: This part of code must be in VncViewer i think
     if (viewer.options.autoScale) {
-      if (!(maxWidth > 0 && maxHeight > 0)) {
-        maxWidth = fbWidth;
-        maxHeight = fbHeight;
+      if (viewer.inAnApplet) {
+        maxWidth = viewer.getWidth();
+        maxHeight = viewer.getHeight();
+      } else {
+        if (viewer.vncFrame != null) {
+          if (isFirstSizeAutoUpdate) {
+            isFirstSizeAutoUpdate = false;
+            Dimension screenSize = viewer.vncFrame.getToolkit().getScreenSize();
+            maxWidth = (int)screenSize.getWidth() - 100;
+            maxHeight = (int)screenSize.getHeight() - 100;            
+            viewer.vncFrame.setSize(maxWidth, maxHeight);
+          } else {
+            viewer.desktopScrollPane.doLayout();
+            maxWidth = viewer.desktopScrollPane.getWidth();
+            maxHeight = viewer.desktopScrollPane.getHeight();
+          }
+        } else {
+          maxWidth = fbWidth;
+          maxHeight = fbHeight;
+        }
       }
       int f1 = maxWidth * 100 / fbWidth;
       int f2 = maxHeight * 100 / fbHeight;
@@ -322,10 +341,18 @@
     pixelsSource.setAnimated(true);
     rawPixelsImage = Toolkit.getDefaultToolkit().createImage(pixelsSource);
 
+    // FIXME: This part of code must be in VncViewer i think
     // Update the size of desktop containers.
     if (viewer.inSeparateFrame) {
-      if (viewer.desktopScrollPane != null)
-	resizeDesktopFrame();
+      if (viewer.desktopScrollPane != null) {
+        if (!viewer.options.autoScale) {
+          resizeDesktopFrame();
+        } else {
+          setSize(scaledWidth, scaledHeight);
+          viewer.desktopScrollPane.setSize(maxWidth + 200,
+                                           maxHeight + 200);
+        }
+      }
     } else {
       setSize(scaledWidth, scaledHeight);
     }