aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/com/tigervnc/vncviewer/DesktopWindow.java29
1 files changed, 15 insertions, 14 deletions
diff --git a/java/com/tigervnc/vncviewer/DesktopWindow.java b/java/com/tigervnc/vncviewer/DesktopWindow.java
index 02cb5a7c..d7a734f2 100644
--- a/java/com/tigervnc/vncviewer/DesktopWindow.java
+++ b/java/com/tigervnc/vncviewer/DesktopWindow.java
@@ -182,7 +182,7 @@ class DesktopWindow extends JPanel implements
if (softCursor != null) {
setCursor(softCursor);
- cursorAvailable = true;
+ cursorAvailable = false;
return;
}
@@ -191,7 +191,6 @@ class DesktopWindow extends JPanel implements
}
showLocalCursor();
- return;
}
public void setServerPF(PixelFormat pf) {
@@ -254,8 +253,7 @@ class DesktopWindow extends JPanel implements
if (overlapsCursor(x, y, w, h)) hideLocalCursor();
im.fillRect(x, y, w, h, pix);
damageRect(new Rect(x, y, x+w, y+h));
- if (!cc.cp.supportsLocalCursor)
- showLocalCursor();
+ showLocalCursor();
}
final public void imageRect(int x, int y, int w, int h,
@@ -263,8 +261,7 @@ class DesktopWindow extends JPanel implements
if (overlapsCursor(x, y, w, h)) hideLocalCursor();
im.imageRect(x, y, w, h, pix);
damageRect(new Rect(x, y, x+w, y+h));
- if (!cc.cp.supportsLocalCursor)
- showLocalCursor();
+ showLocalCursor();
}
final public void copyRect(int x, int y, int w, int h,
@@ -273,6 +270,7 @@ class DesktopWindow extends JPanel implements
hideLocalCursor();
im.copyRect(x, y, w, h, srcX, srcY);
damageRect(new Rect(x, y, x+w, y+h));
+ showLocalCursor();
}
@@ -392,8 +390,11 @@ class DesktopWindow extends JPanel implements
/** Mouse-Motion callback function */
private void mouseMotionCB(MouseEvent e) {
- if (!cc.viewer.viewOnly.getValue())
+ if (!cc.viewer.viewOnly.getValue()) {
cc.writePointerEvent(e);
+ lastX = e.getX();
+ lastY = e.getY();
+ }
// - If local cursor rendering is enabled then use it
if (cursorAvailable) {
// - Render the cursor!
@@ -403,13 +404,10 @@ class DesktopWindow extends JPanel implements
e.getY() >= 0 && e.getY() < im.height()) {
cursorPosX = e.getX();
cursorPosY = e.getY();
- if (!cc.cp.supportsLocalCursor)
- showLocalCursor();
+ showLocalCursor();
}
}
}
- lastX = e.getX();
- lastY = e.getY();
}
public void mouseDragged(MouseEvent e) { mouseMotionCB(e);}
public void mouseMoved(MouseEvent e) { mouseMotionCB(e);}
@@ -468,6 +466,9 @@ class DesktopWindow extends JPanel implements
cursorVisible = false;
im.imageRect(cursorBackingX, cursorBackingY, cursorBacking.width(),
cursorBacking.height(), cursorBacking.data);
+ damageRect(new Rect(cursorBackingX, cursorBackingY,
+ cursorBackingX+cursorBacking.width(),
+ cursorBackingY+cursorBacking.height()));
}
}
@@ -480,7 +481,6 @@ class DesktopWindow extends JPanel implements
return;
}
cursorVisible = true;
- if (cc.cp.supportsLocalCursor) return;
int cursorLeft = cursor.hotspot.x;
int cursorTop = cursor.hotspot.y;
@@ -502,6 +502,7 @@ class DesktopWindow extends JPanel implements
im.maskRect(cursorLeft, cursorTop, cursor.width(), cursor.height(),
cursor.data, cursor.mask);
+ damageRect(new Rect(x, y, x+w, y+h));
}
}
@@ -532,8 +533,8 @@ class DesktopWindow extends JPanel implements
Thread setColourMapEntriesTimerThread;
Cursor cursor;
- boolean cursorVisible; // Is cursor currently rendered?
- boolean cursorAvailable; // Is cursor available for rendering?
+ boolean cursorVisible = false; // Is cursor currently rendered?
+ boolean cursorAvailable = false; // Is cursor available for rendering?
int cursorPosX, cursorPosY;
ManagedPixelBuffer cursorBacking;
int cursorBackingX, cursorBackingY;