Home | History | Annotate | Download | only in ssl
      1 --- vnc_javasrc.orig/VncCanvas.java	2004-10-10 02:15:54.000000000 -0400
      2 +++ vnc_javasrc/VncCanvas.java	2010-11-30 21:01:15.000000000 -0500
      3 @@ -28,13 +28,14 @@
      4  import java.lang.*;
      5  import java.util.zip.*;
      6  
      7 +import java.util.Collections;
      8  
      9  //
     10  // VncCanvas is a subclass of Canvas which draws a VNC desktop on it.
     11  //
     12  
     13  class VncCanvas extends Canvas
     14 -  implements KeyListener, MouseListener, MouseMotionListener {
     15 +  implements KeyListener, MouseListener, MouseMotionListener, MouseWheelListener {
     16  
     17    VncViewer viewer;
     18    RfbProto rfb;
     19 @@ -81,6 +82,20 @@
     20      cm8 = new DirectColorModel(8, 7, (7 << 3), (3 << 6));
     21      cm24 = new DirectColorModel(24, 0xFF0000, 0x00FF00, 0x0000FF);
     22  
     23 +    // kludge to not show any Java cursor in the canvas since we are
     24 +    // showing the soft cursor (should be a user setting...)
     25 +    Cursor dot = Toolkit.getDefaultToolkit().createCustomCursor(
     26 +        Toolkit.getDefaultToolkit().createImage(new byte[4]), new Point(0,0),
     27 +        "dot");
     28 +    this.setCursor(dot);
     29 +
     30 +    // while we are at it... get rid of the keyboard traversals that
     31 +    // make it so we can't type a Tab character:
     32 +    this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
     33 +        Collections.EMPTY_SET);
     34 +    this.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
     35 +        Collections.EMPTY_SET);
     36 +
     37      colors = new Color[256];
     38      for (int i = 0; i < 256; i++)
     39        colors[i] = new Color(cm8.getRGB(i));
     40 @@ -169,6 +184,7 @@
     41        inputEnabled = true;
     42        addMouseListener(this);
     43        addMouseMotionListener(this);
     44 +      addMouseWheelListener(this);
     45        if (viewer.showControls) {
     46  	viewer.buttonPanel.enableRemoteAccessControls(true);
     47        }
     48 @@ -177,6 +193,7 @@
     49        inputEnabled = false;
     50        removeMouseListener(this);
     51        removeMouseMotionListener(this);
     52 +      removeMouseWheelListener(this);
     53        if (viewer.showControls) {
     54  	viewer.buttonPanel.enableRemoteAccessControls(false);
     55        }
     56 @@ -1190,6 +1207,9 @@
     57    public void mouseDragged(MouseEvent evt) {
     58      processLocalMouseEvent(evt, true);
     59    }
     60 +  public void mouseWheelMoved(MouseWheelEvent evt) {
     61 +    processLocalMouseWheelEvent(evt);
     62 +  }
     63  
     64    public void processLocalKeyEvent(KeyEvent evt) {
     65      if (viewer.rfb != null && rfb.inNormalProtocol) {
     66 @@ -1221,6 +1241,19 @@
     67      evt.consume();
     68    }
     69  
     70 +  public void processLocalMouseWheelEvent(MouseWheelEvent evt) {
     71 +    if (viewer.rfb != null && rfb.inNormalProtocol) {
     72 +      synchronized(rfb) {
     73 +	try {
     74 +	  rfb.writeWheelEvent(evt);
     75 +	} catch (Exception e) {
     76 +	  e.printStackTrace();
     77 +	}
     78 +	rfb.notify();
     79 +      }
     80 +    }
     81 +  }
     82 +
     83    public void processLocalMouseEvent(MouseEvent evt, boolean moved) {
     84      if (viewer.rfb != null && rfb.inNormalProtocol) {
     85        if (moved) {
     86 @@ -1387,9 +1420,9 @@
     87  		result = cm8.getRGB(pixBuf[i]);
     88  	      } else {
     89  		result = 0xFF000000 |
     90 -		  (pixBuf[i * 4 + 1] & 0xFF) << 16 |
     91 -		  (pixBuf[i * 4 + 2] & 0xFF) << 8 |
     92 -		  (pixBuf[i * 4 + 3] & 0xFF);
     93 +		  (pixBuf[i * 4 + 2] & 0xFF) << 16 |
     94 +		  (pixBuf[i * 4 + 1] & 0xFF) << 8 |
     95 +		  (pixBuf[i * 4 + 0] & 0xFF);
     96  	      }
     97  	    } else {
     98  	      result = 0;	// Transparent pixel
     99 @@ -1403,9 +1436,9 @@
    100  	      result = cm8.getRGB(pixBuf[i]);
    101  	    } else {
    102  	      result = 0xFF000000 |
    103 -		(pixBuf[i * 4 + 1] & 0xFF) << 16 |
    104 -		(pixBuf[i * 4 + 2] & 0xFF) << 8 |
    105 -		(pixBuf[i * 4 + 3] & 0xFF);
    106 +		(pixBuf[i * 4 + 2] & 0xFF) << 16 |
    107 +		(pixBuf[i * 4 + 1] & 0xFF) << 8 |
    108 +		(pixBuf[i * 4 + 0] & 0xFF);
    109  	    }
    110  	  } else {
    111  	    result = 0;		// Transparent pixel
    112