Posted to tcl by emiliano at Sat Jan 22 17:32:47 GMT 2011view pretty

emiliano@merlot:~/src/tk$ cvs diff -u unix/tkUnixCursor.c 
Index: unix/tkUnixCursor.c
===================================================================
RCS file: /cvsroot/tktoolkit/tk/unix/tkUnixCursor.c,v
retrieving revision 1.15
diff -u -r1.15 tkUnixCursor.c
--- unix/tkUnixCursor.c	5 Nov 2008 22:48:58 -0000	1.15
+++ unix/tkUnixCursor.c	22 Jan 2011 17:23:51 -0000
@@ -12,6 +12,9 @@
  */
 
 #include "tkInt.h"
+#ifdef HAVE_XCURSOR
+#include <X11/Xcursor/Xcursor.h>
+#endif
 
 /*
  * The following data structure is a superset of the TkCursor structure
@@ -325,9 +328,15 @@
 	    goto badString;
 	}
 
+#ifdef HAVE_XCURSOR
+	if (!inTkTable && (argc != 1) && (argc != 2) && (argc != 4)) {
+	    goto badString;
+	}
+#else
 	if (!inTkTable && (argc != 2) && (argc != 4)) {
 	    goto badString;
 	}
+#endif /* HAVE_XCURSOR */
 
 	cursor = CreateCursorFromTableOrFile(interp, tkwin, argc, argv,
 		tkCursorPtr);
@@ -429,6 +438,11 @@
 	source = XCreateBitmapFromData(display, drawable, data, width,height);
 	ckfree(data);
     } else {
+#ifdef HAVE_XCURSOR
+	cursor = XcursorFilenameLoadCursor(display, &argv[0][1]);
+        if (cursor != None)
+            goto cleanup;
+#endif /* HAVE_XCURSOR */
 	if (TkReadBitmapFile(display, drawable, &argv[0][1],
 		(unsigned *) &width, (unsigned *) &height,
 		&source, &xHot, &yHot) != BitmapSuccess) {