-        case wxCURSOR_WAIT:
-        {
-            cursor = XCreateFontCursor (dpy, XC_watch);
-            break;
-        }
-        case wxCURSOR_CROSS:
-        {
-            cursor = XCreateFontCursor (dpy, XC_crosshair);
-            break;
-        }
-        case wxCURSOR_CHAR:
-        {
-            // Nothing
-            break;
-        }
-        case wxCURSOR_HAND:
-        {
-            cursor = XCreateFontCursor (dpy, XC_hand1);
-            break;
-        }
-        case wxCURSOR_BULLSEYE:
-        {
-            cursor = XCreateFontCursor (dpy, XC_target);
-            break;
-        }
-        case wxCURSOR_PENCIL:
-       {
-            cursor = XCreateFontCursor (dpy, XC_pencil);
-            break;
-        }
-        case wxCURSOR_MAGNIFIER:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sizing);
-            break;
-        }
-        case wxCURSOR_IBEAM:
-        {
-            cursor = XCreateFontCursor (dpy, XC_xterm);
-            break;
-        }
-        case wxCURSOR_NO_ENTRY:
-        {
-            cursor = XCreateFontCursor (dpy, XC_pirate);
-            break;
-        }
-        case wxCURSOR_LEFT_BUTTON:
-        {
-            cursor = XCreateFontCursor (dpy, XC_leftbutton);
-            break;
-        }
-        case wxCURSOR_RIGHT_BUTTON:
-        {
-            cursor = XCreateFontCursor (dpy, XC_rightbutton);
-            break;
-        }
-        case wxCURSOR_MIDDLE_BUTTON:
-        {
-            cursor = XCreateFontCursor (dpy, XC_middlebutton);
-            break;
-        }
-        case wxCURSOR_QUESTION_ARROW:
-        {
-            cursor = XCreateFontCursor (dpy, XC_question_arrow);
-            break;
-        }
-        case wxCURSOR_SIZING:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sizing);
-            break;
-        }
-        case wxCURSOR_WATCH:
-        {
-            cursor = XCreateFontCursor (dpy, XC_watch);
-            break;
-        }
-        case wxCURSOR_SPRAYCAN:
-        {
-            cursor = XCreateFontCursor (dpy, XC_spraycan);
-            break;
-        }
-        case wxCURSOR_PAINT_BRUSH:
-        {
-            cursor = XCreateFontCursor (dpy, XC_spraycan);
-            break;
-        }
-        case wxCURSOR_SIZENWSE:
-        case wxCURSOR_SIZENESW:
-        {
-            // Not available in X
-            cursor = XCreateFontCursor (dpy, XC_crosshair);
-            break;
-        }
-        case wxCURSOR_SIZEWE:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sb_h_double_arrow);
-            break;
-        }
-        case wxCURSOR_SIZENS:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sb_v_double_arrow);
-            break;
-        }
-        case wxCURSOR_POINT_LEFT:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sb_left_arrow);
-            break;
-        }
-        case wxCURSOR_POINT_RIGHT:
-        {
-            cursor = XCreateFontCursor (dpy, XC_sb_right_arrow);
-            break;
-        }
+    case wxCURSOR_CHAR:             return (WXCursor)cursor;
+
+    case wxCURSOR_WAIT:             x_cur = XC_watch; break;
+    case wxCURSOR_CROSS:            x_cur = XC_crosshair; break;
+    case wxCURSOR_HAND:             x_cur = XC_hand1; break;
+    case wxCURSOR_BULLSEYE:         x_cur = XC_target; break;
+    case wxCURSOR_PENCIL:           x_cur = XC_pencil; break;
+    case wxCURSOR_MAGNIFIER:        x_cur = XC_sizing; break;
+    case wxCURSOR_IBEAM:            x_cur = XC_xterm; break;
+    case wxCURSOR_NO_ENTRY:         x_cur = XC_pirate; break;
+    case wxCURSOR_LEFT_BUTTON:      x_cur = XC_leftbutton; break;
+    case wxCURSOR_RIGHT_BUTTON:     x_cur = XC_rightbutton; break;
+    case wxCURSOR_MIDDLE_BUTTON:    x_cur =  XC_middlebutton; break;
+    case wxCURSOR_QUESTION_ARROW:   x_cur = XC_question_arrow; break;
+    case wxCURSOR_SIZING:           x_cur = XC_sizing; break;
+    case wxCURSOR_WATCH:            x_cur = XC_watch; break;
+    case wxCURSOR_SPRAYCAN:         x_cur = XC_spraycan; break;
+    case wxCURSOR_PAINT_BRUSH:      x_cur = XC_spraycan; break;
+    case wxCURSOR_SIZENWSE:
+    case wxCURSOR_SIZENESW:         x_cur = XC_crosshair; break;
+    case wxCURSOR_SIZEWE:           x_cur = XC_sb_h_double_arrow; break;
+    case wxCURSOR_SIZENS:           x_cur = XC_sb_v_double_arrow; break;
+    case wxCURSOR_POINT_LEFT:       x_cur = XC_sb_left_arrow; break;
+    case wxCURSOR_POINT_RIGHT:      x_cur = XC_sb_right_arrow; break;