You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.5 KiB
112 lines
3.5 KiB
--- vnc_javasrc.orig/VncCanvas.java 2004-10-10 02:15:54.000000000 -0400
|
|
+++ vnc_javasrc/VncCanvas.java 2010-11-30 21:01:15.000000000 -0500
|
|
@@ -28,13 +28,14 @@
|
|
import java.lang.*;
|
|
import java.util.zip.*;
|
|
|
|
+import java.util.Collections;
|
|
|
|
//
|
|
// VncCanvas is a subclass of Canvas which draws a VNC desktop on it.
|
|
//
|
|
|
|
class VncCanvas extends Canvas
|
|
- implements KeyListener, MouseListener, MouseMotionListener {
|
|
+ implements KeyListener, MouseListener, MouseMotionListener, MouseWheelListener {
|
|
|
|
VncViewer viewer;
|
|
RfbProto rfb;
|
|
@@ -81,6 +82,20 @@
|
|
cm8 = new DirectColorModel(8, 7, (7 << 3), (3 << 6));
|
|
cm24 = new DirectColorModel(24, 0xFF0000, 0x00FF00, 0x0000FF);
|
|
|
|
+ // kludge to not show any Java cursor in the canvas since we are
|
|
+ // showing the soft cursor (should be a user setting...)
|
|
+ Cursor dot = Toolkit.getDefaultToolkit().createCustomCursor(
|
|
+ Toolkit.getDefaultToolkit().createImage(new byte[4]), new Point(0,0),
|
|
+ "dot");
|
|
+ this.setCursor(dot);
|
|
+
|
|
+ // while we are at it... get rid of the keyboard traversals that
|
|
+ // make it so we can't type a Tab character:
|
|
+ this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
|
|
+ Collections.EMPTY_SET);
|
|
+ this.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
|
|
+ Collections.EMPTY_SET);
|
|
+
|
|
colors = new Color[256];
|
|
for (int i = 0; i < 256; i++)
|
|
colors[i] = new Color(cm8.getRGB(i));
|
|
@@ -169,6 +184,7 @@
|
|
inputEnabled = true;
|
|
addMouseListener(this);
|
|
addMouseMotionListener(this);
|
|
+ addMouseWheelListener(this);
|
|
if (viewer.showControls) {
|
|
viewer.buttonPanel.enableRemoteAccessControls(true);
|
|
}
|
|
@@ -177,6 +193,7 @@
|
|
inputEnabled = false;
|
|
removeMouseListener(this);
|
|
removeMouseMotionListener(this);
|
|
+ removeMouseWheelListener(this);
|
|
if (viewer.showControls) {
|
|
viewer.buttonPanel.enableRemoteAccessControls(false);
|
|
}
|
|
@@ -1190,6 +1207,9 @@
|
|
public void mouseDragged(MouseEvent evt) {
|
|
processLocalMouseEvent(evt, true);
|
|
}
|
|
+ public void mouseWheelMoved(MouseWheelEvent evt) {
|
|
+ processLocalMouseWheelEvent(evt);
|
|
+ }
|
|
|
|
public void processLocalKeyEvent(KeyEvent evt) {
|
|
if (viewer.rfb != null && rfb.inNormalProtocol) {
|
|
@@ -1221,6 +1241,19 @@
|
|
evt.consume();
|
|
}
|
|
|
|
+ public void processLocalMouseWheelEvent(MouseWheelEvent evt) {
|
|
+ if (viewer.rfb != null && rfb.inNormalProtocol) {
|
|
+ synchronized(rfb) {
|
|
+ try {
|
|
+ rfb.writeWheelEvent(evt);
|
|
+ } catch (Exception e) {
|
|
+ e.printStackTrace();
|
|
+ }
|
|
+ rfb.notify();
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+
|
|
public void processLocalMouseEvent(MouseEvent evt, boolean moved) {
|
|
if (viewer.rfb != null && rfb.inNormalProtocol) {
|
|
if (moved) {
|
|
@@ -1387,9 +1420,9 @@
|
|
result = cm8.getRGB(pixBuf[i]);
|
|
} else {
|
|
result = 0xFF000000 |
|
|
- (pixBuf[i * 4 + 1] & 0xFF) << 16 |
|
|
- (pixBuf[i * 4 + 2] & 0xFF) << 8 |
|
|
- (pixBuf[i * 4 + 3] & 0xFF);
|
|
+ (pixBuf[i * 4 + 2] & 0xFF) << 16 |
|
|
+ (pixBuf[i * 4 + 1] & 0xFF) << 8 |
|
|
+ (pixBuf[i * 4 + 0] & 0xFF);
|
|
}
|
|
} else {
|
|
result = 0; // Transparent pixel
|
|
@@ -1403,9 +1436,9 @@
|
|
result = cm8.getRGB(pixBuf[i]);
|
|
} else {
|
|
result = 0xFF000000 |
|
|
- (pixBuf[i * 4 + 1] & 0xFF) << 16 |
|
|
- (pixBuf[i * 4 + 2] & 0xFF) << 8 |
|
|
- (pixBuf[i * 4 + 3] & 0xFF);
|
|
+ (pixBuf[i * 4 + 2] & 0xFF) << 16 |
|
|
+ (pixBuf[i * 4 + 1] & 0xFF) << 8 |
|
|
+ (pixBuf[i * 4 + 0] & 0xFF);
|
|
}
|
|
} else {
|
|
result = 0; // Transparent pixel
|