[Developement] Added "auto scaling" feature to Applet.
[BugFix] NullPointerException when changing option before canvas created.
[BugFix] Wrong default value in "Auto Scroll" combo box (class OptionsFrame).

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3287 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/vncviewer/OptionsFrame.java b/java/src/com/tightvnc/vncviewer/OptionsFrame.java
index c8d1b04..5034af6 100644
--- a/java/src/com/tightvnc/vncviewer/OptionsFrame.java
+++ b/java/src/com/tightvnc/vncviewer/OptionsFrame.java
@@ -183,8 +183,8 @@
     String s = viewer.readParameter("Scaling Factor", false);
     if (s == null) s = "100%";
     setScalingFactor(s);
-    if (!s.equalsIgnoreCase("Auto")) {
-      choices[scalingFactorIndex].select(s.trim() + '%');
+    if (autoScale) {
+      choices[scalingFactorIndex].select("Auto");
     } else {
       choices[scalingFactorIndex].select(s);
     }
@@ -447,7 +447,8 @@
     } else if (source == choices[scalingFactorIndex]){
         // Tell VNC canvas that scaling factor has changed
         setScalingFactor(choices[scalingFactorIndex].getSelectedItem());
-        viewer.vc.setScalingFactor(scalingFactor);
+        if (viewer.vc != null)
+          viewer.vc.setScalingFactor(scalingFactor);
     }
   }
 
diff --git a/java/src/com/tightvnc/vncviewer/VncCanvas.java b/java/src/com/tightvnc/vncviewer/VncCanvas.java
index 7a8c76a..a457469 100644
--- a/java/src/com/tightvnc/vncviewer/VncCanvas.java
+++ b/java/src/com/tightvnc/vncviewer/VncCanvas.java
@@ -263,8 +263,11 @@
     int fbWidth = rfb.framebufferWidth;
     int fbHeight = rfb.framebufferHeight;
 
-    // Calculate scaling factor for auto scaling.
-    if (maxWidth > 0 && maxHeight > 0) {
+    if (viewer.options.autoScale) {
+      if (!(maxWidth > 0 && maxHeight > 0)) {
+        maxWidth = fbWidth;
+        maxHeight = fbHeight;
+      }
       int f1 = maxWidth * 100 / fbWidth;
       int f2 = maxHeight * 100 / fbHeight;
       scalingFactor = Math.min(f1, f2);