]> source.dussan.org Git - tigervnc.git/commitdiff
fix for invalid hotspot error when scalingFactor becomes small. Override repaint...
authorBrian Hinz <bphinz@users.sourceforge.net>
Sun, 2 Oct 2011 00:44:41 +0000 (00:44 +0000)
committerBrian Hinz <bphinz@users.sourceforge.net>
Sun, 2 Oct 2011 00:44:41 +0000 (00:44 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4687 3789f03b-4d11-0410-bbf8-ca57d06f2519

java/src/com/tigervnc/vncviewer/CConn.java
java/src/com/tigervnc/vncviewer/DesktopWindow.java

index 61b0ca1809572526e356c204704aab60c6520548..599c8b2decffe21540b79f3143e5bd6301e7e606 100644 (file)
@@ -88,11 +88,9 @@ class ViewportFrame extends JFrame implements ComponentListener
           sp.getSize().height != cc.desktop.scaledHeight) {
         cc.reconfigureViewport();
         if (cc.desktop.cursor != null) {
-          cc.setCursor(cc.desktop.cursor.width(), 
-                       cc.desktop.cursor.height(), 
-                       cc.desktop.cursor.hotspot, 
-                       cc.desktop.cursor.data, 
-                       cc.desktop.cursor.mask);
+          Cursor cursor = cc.desktop.cursor;
+          cc.setCursor(cursor.width(),cursor.height(),cursor.hotspot, 
+                       cursor.data, cursor.mask);
         }
       }
     }      
@@ -922,8 +920,6 @@ public class CConn extends CConnection
       if (desktop != null) {
         reconfigureViewport();
         viewport.update(viewport.g);
-        if (desktop.cursor != null)
-          setCursor(desktop.cursor.width(), desktop.cursor.height(), desktop.cursor.hotspot, desktop.cursor.data, desktop.cursor.mask);
       }
     } else if(options.fixedRatioScale) {
       viewer.scalingFactor.setParam("FixedRatio");
@@ -931,8 +927,6 @@ public class CConn extends CConnection
       if (desktop != null) {
         reconfigureViewport();
         viewport.update(viewport.g);
-        if (desktop.cursor != null)
-          setCursor(desktop.cursor.width(), desktop.cursor.height(), desktop.cursor.hotspot, desktop.cursor.data, desktop.cursor.mask);
       }
     } else { 
       String scaleString =
@@ -944,8 +938,6 @@ public class CConn extends CConnection
       if (oldScaleFactor != scaleFactor && desktop != null) {
         reconfigureViewport();
         viewport.update(viewport.g);
-        if (desktop.cursor != null)
-          setCursor(desktop.cursor.width(), desktop.cursor.height(), desktop.cursor.hotspot, desktop.cursor.data, desktop.cursor.mask);
       }
     }
 
index 97a3355c026a37d8bf782a9e852a878db51eb1d1..027683c34f60486d7e00ee6a37941a54e71b14a8 100644 (file)
@@ -157,10 +157,12 @@ class DesktopWindow extends JPanel implements
     int cw = (int)Math.floor((float)cursor.width() * scaleWidthRatio);
     int ch = (int)Math.floor((float)cursor.height() * scaleHeightRatio);
     int hint = java.awt.Image.SCALE_DEFAULT;
+    hotspot = new Point((int)Math.floor((float)hotspot.x * scaleWidthRatio),
+                        (int)Math.floor((float)hotspot.y * scaleHeightRatio));
     Image cursorImage = (cw <= 0 || ch <= 0) ? tk.createImage(bitmap) :
       tk.createImage(bitmap).getScaledInstance(cw,ch,hint);
-    softCursor = (tk.createCustomCursor(cursorImage,
-        new java.awt.Point(hotspot.x,hotspot.y), "Cursor"));
+    softCursor = tk.createCustomCursor(cursorImage,
+                  new java.awt.Point(hotspot.x,hotspot.y), "Cursor");
     }
 
     if (softCursor != null) {
@@ -313,10 +315,6 @@ class DesktopWindow extends JPanel implements
     return new Dimension(scaledWidth, scaledHeight);
   }
 
-  public void update(Graphics g) {
-    //repaint();
-  }
-
   public void setScaledSize() {
     if (!cc.options.autoScale && !cc.options.fixedRatioScale) {
       scaledWidth = (int)Math.floor((float)cc.cp.width * (float)cc.scaleFactor/100.0);
@@ -358,6 +356,10 @@ class DesktopWindow extends JPanel implements
     }
   }
 
+  public void repaint() {
+    if (graphics != null)
+      super.update(graphics);
+  }
 
   String oldContents = "";