]> source.dussan.org Git - tigervnc.git/commitdiff
[Bugfix] Honor dotWhenNoCursor option (and it's changes) every time.
authorAdam Tkac <atkac@redhat.com>
Wed, 7 Oct 2009 15:11:08 +0000 (15:11 +0000)
committerAdam Tkac <atkac@redhat.com>
Wed, 7 Oct 2009 15:11:08 +0000 (15:11 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3904 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/vncviewer/CConn.cxx
unix/vncviewer/DesktopWindow.cxx
unix/vncviewer/DesktopWindow.h

index 8231f4c6efe399fc4613bde12f266a4850d6f7cc..2454be21eda22ac6ed0351944410fdb14167aa72 100644 (file)
@@ -684,6 +684,7 @@ void CConn::getOptions() {
       desktop->resetLocalCursor();
   }
   dotWhenNoCursor.setParam(options.dotWhenNoCursor.checked());
+  desktop->setNoCursor();
   checkEncodings();
 }
 
index 51f3b850c434da34ff7e32886b2650f51c67277d..234e004943f9d241a9a6d62a239ba3738759f6fe 100644 (file)
@@ -79,7 +79,7 @@ DesktopWindow::DesktopWindow(Display* dpy, int w, int h,
                PointerMotionMask | KeyPressMask | KeyReleaseMask |
                EnterWindowMask | LeaveWindowMask);
   createXCursors();
-  XDefineCursor(dpy, win(), dotCursor);
+  setNoCursor();
   im = new TXImage(dpy, width(), height());
   if (!serverPF.trueColour)
     im->setPF(serverPF);
@@ -139,12 +139,9 @@ void DesktopWindow::setCursor(int width, int height, const Point& hotspot,
     if (((rdr::U8*)mask)[i]) break;
 
   if (i == mask_len) {
-    if (dotWhenNoCursor) {
+    if (dotWhenNoCursor)
       vlog.debug("cursor is empty - using dot");
-      XDefineCursor(dpy, win(), dotCursor);
-    } else {
-      XDefineCursor(dpy, win(), noCursor);
-    }
+    setNoCursor();
     cursorAvailable = false;
     return;
   }
@@ -206,7 +203,7 @@ void DesktopWindow::setCursor(int width, int height, const Point& hotspot,
 void DesktopWindow::resetLocalCursor()
 {
   hideLocalCursor();
-  XDefineCursor(dpy, win(), dotCursor);
+  setNoCursor();
   cursorAvailable = false;
 }
 
@@ -226,7 +223,7 @@ void DesktopWindow::showLocalCursor()
     if (!getPF().equal(cursor.getPF()) ||
         cursor.getRect().is_empty()) {
       vlog.error("attempting to render invalid local cursor");
-      XDefineCursor(dpy, win(), dotCursor);
+      setNoCursor();
       cursorAvailable = false;
       return;
     }
index 433ac33b55ff9df78011ed8e7e8b8324ea7d586e..eb8d59dc436060a537c2b3f227adee0ebb898ee2 100644 (file)
@@ -29,6 +29,7 @@
 #include "TXWindow.h"
 #include "TXViewport.h"
 #include "TXImage.h"
+#include "parameters.h"
 
 class CConn;
 
@@ -54,6 +55,12 @@ public:
   // resetLocalCursor() stops the rendering of the local cursor
   void resetLocalCursor();
 
+  // setNoCursor() sets what to display when no cursor is defined - if dot or
+  // nothing.
+  inline void setNoCursor() {
+    XDefineCursor(dpy, win(), dotWhenNoCursor ? dotCursor : noCursor);
+  }
+
   // Methods forwarded from CConn
   void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
   void serverCutText(const char* str, rdr::U32 len);