Adam Tkac 66063c9
Index: unix/vncviewer/DesktopWindow.h
Adam Tkac 66063c9
===================================================================
Adam Tkac 66063c9
--- unix/vncviewer/DesktopWindow.h	(revision 3903)
Adam Tkac 66063c9
+++ unix/vncviewer/DesktopWindow.h	(working copy)
Adam Tkac 66063c9
@@ -29,6 +29,7 @@
Adam Tkac 66063c9
 #include "TXWindow.h"
Adam Tkac 66063c9
 #include "TXViewport.h"
Adam Tkac 66063c9
 #include "TXImage.h"
Adam Tkac 66063c9
+#include "parameters.h"
Adam Tkac 66063c9
 
Adam Tkac 66063c9
 class CConn;
Adam Tkac 66063c9
 
Adam Tkac 66063c9
@@ -54,6 +55,12 @@
Adam Tkac 66063c9
   // resetLocalCursor() stops the rendering of the local cursor
Adam Tkac 66063c9
   void resetLocalCursor();
Adam Tkac 66063c9
 
Adam Tkac 66063c9
+  // setNoCursor() sets what to display when no cursor is defined - if dot or
Adam Tkac 66063c9
+  // nothing.
Adam Tkac 66063c9
+  inline void setNoCursor() {
Adam Tkac 66063c9
+    XDefineCursor(dpy, win(), dotWhenNoCursor ? dotCursor : noCursor);
Adam Tkac 66063c9
+  }
Adam Tkac 66063c9
+
Adam Tkac 66063c9
   // Methods forwarded from CConn
Adam Tkac 66063c9
   void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
Adam Tkac 66063c9
   void serverCutText(const char* str, rdr::U32 len);
Adam Tkac 66063c9
Index: unix/vncviewer/CConn.cxx
Adam Tkac 66063c9
===================================================================
Adam Tkac 66063c9
--- unix/vncviewer/CConn.cxx	(revision 3903)
Adam Tkac 66063c9
+++ unix/vncviewer/CConn.cxx	(working copy)
Adam Tkac 66063c9
@@ -684,6 +684,7 @@
Adam Tkac 66063c9
       desktop->resetLocalCursor();
Adam Tkac 66063c9
   }
Adam Tkac 66063c9
   dotWhenNoCursor.setParam(options.dotWhenNoCursor.checked());
Adam Tkac 66063c9
+  desktop->setNoCursor();
Adam Tkac 66063c9
   checkEncodings();
Adam Tkac 66063c9
 }
Adam Tkac 66063c9
 
Adam Tkac 66063c9
Index: unix/vncviewer/DesktopWindow.cxx
Adam Tkac 66063c9
===================================================================
Adam Tkac 66063c9
--- unix/vncviewer/DesktopWindow.cxx	(revision 3903)
Adam Tkac 66063c9
+++ unix/vncviewer/DesktopWindow.cxx	(working copy)
Adam Tkac 66063c9
@@ -79,7 +79,7 @@
Adam Tkac 66063c9
                PointerMotionMask | KeyPressMask | KeyReleaseMask |
Adam Tkac 66063c9
                EnterWindowMask | LeaveWindowMask);
Adam Tkac 66063c9
   createXCursors();
Adam Tkac 66063c9
-  XDefineCursor(dpy, win(), dotCursor);
Adam Tkac 66063c9
+  setNoCursor();
Adam Tkac 66063c9
   im = new TXImage(dpy, width(), height());
Adam Tkac 66063c9
   if (!serverPF.trueColour)
Adam Tkac 66063c9
     im->setPF(serverPF);
Adam Tkac 66063c9
@@ -139,12 +139,9 @@
Adam Tkac 66063c9
     if (((rdr::U8*)mask)[i]) break;
Adam Tkac 66063c9
 
Adam Tkac 66063c9
   if (i == mask_len) {
Adam Tkac 66063c9
-    if (dotWhenNoCursor) {
Adam Tkac 66063c9
+    if (dotWhenNoCursor)
Adam Tkac 66063c9
       vlog.debug("cursor is empty - using dot");
Adam Tkac 66063c9
-      XDefineCursor(dpy, win(), dotCursor);
Adam Tkac 66063c9
-    } else {
Adam Tkac 66063c9
-      XDefineCursor(dpy, win(), noCursor);
Adam Tkac 66063c9
-    }
Adam Tkac 66063c9
+    setNoCursor();
Adam Tkac 66063c9
     cursorAvailable = false;
Adam Tkac 66063c9
     return;
Adam Tkac 66063c9
   }
Adam Tkac 66063c9
@@ -206,7 +203,7 @@
Adam Tkac 66063c9
 void DesktopWindow::resetLocalCursor()
Adam Tkac 66063c9
 {
Adam Tkac 66063c9
   hideLocalCursor();
Adam Tkac 66063c9
-  XDefineCursor(dpy, win(), dotCursor);
Adam Tkac 66063c9
+  setNoCursor();
Adam Tkac 66063c9
   cursorAvailable = false;
Adam Tkac 66063c9
 }
Adam Tkac 66063c9
 
Adam Tkac 66063c9
@@ -226,7 +223,7 @@
Adam Tkac 66063c9
     if (!getPF().equal(cursor.getPF()) ||
Adam Tkac 66063c9
         cursor.getRect().is_empty()) {
Adam Tkac 66063c9
       vlog.error("attempting to render invalid local cursor");
Adam Tkac 66063c9
-      XDefineCursor(dpy, win(), dotCursor);
Adam Tkac 66063c9
+      setNoCursor();
Adam Tkac 66063c9
       cursorAvailable = false;
Adam Tkac 66063c9
       return;
Adam Tkac 66063c9
     }