[gtk+] quartz: Support css cursor names



commit be9915b16a1a820fa18bf5de800099923372568e
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat May 9 23:53:45 2015 -0400

    quartz: Support css cursor names
    
    We want these to work across platforms, so do a best-effort
    approximation. We could do much better here by copying what
    webkit does.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=749178

 gdk/quartz/gdkcursor-quartz.c |   48 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 46 insertions(+), 2 deletions(-)
---
diff --git a/gdk/quartz/gdkcursor-quartz.c b/gdk/quartz/gdkcursor-quartz.c
index dfcb860..7423d36 100644
--- a/gdk/quartz/gdkcursor-quartz.c
+++ b/gdk/quartz/gdkcursor-quartz.c
@@ -281,8 +281,52 @@ GdkCursor*
 _gdk_quartz_display_get_cursor_for_name (GdkDisplay  *display,
                                          const gchar *name)
 {
-  /* FIXME: Implement */
-  return NULL;
+  NSCursor *nscursor;
+
+  if (name == NULL || g_str_equal (name, "none"))
+    return create_blank_cursor ();
+
+  if (g_str_equal (name, "pointer"))
+    nscursor = [NSCursor pointingHandCursor];
+  else if (g_str_equal (name, "context-menu"))
+    nscursor = [NSCursor contextualMenuCursor];
+  else if (g_str_equal (name, "cell"))
+    nscursor = [NSCursor crosshairCursor];
+  else if (g_str_equal (name, "crosshair"))
+    nscursor = [NSCursor crosshairCursor];
+  else if (g_str_equal (name, "text"))
+    nscursor = [NSCursor IBeamCursor];
+  else if (g_str_equal (name, "vertical-text"))
+    nscursor = [NSCursor IBeamCursorForVerticalLayout];
+  else if (g_str_equal (name, "alias"))
+  else if (g_str_equal (name, "copy"))
+    nscursor = [NSCursor dragCopyCursor];
+  else if (g_str_equal (name, "move"))
+  else if (g_str_equal (name, "no-drop"))
+    nscursor = [NSCursor operationNotAllowedCursor];
+  else if (g_str_equal (name, "not-allowed"))
+    nscursor = [NSCursor operationNotAllowedCursor];
+  else if (g_str_equal (name, "grab"))
+    nscursor = [NSCursor openHandCursor];
+  else if (g_str_equal (name, "grabbing"))
+    nscursor = [NSCursor closedHandCursor];
+  else if (g_str_equal (name, "col-resize"))
+    nscursor = [NSCursor resizeLeftRightCursor];
+  else if (g_str_equal (name, "row-resize"))
+    nscursor = [NSCursor resizeUpDownCursor];
+  else if (g_str_equal (name, "n-resize"))
+    nscursor = [NSCursor resizeUpCursor];
+  else if (g_str_equal (name, "e-resize"))
+    nscursor = [NSCursor resizeRightCursor];
+  else if (g_str_equal (name, "s-resize"))
+    nscursor = [NSCursor resizeDownCursor];
+  else if (g_str_equal (name, "w-resize"))
+    nscursor = [NSCursor resizeLeftCursor];
+  else
+    nscursor = [NSCursor arrowCursor];
+
+  [nscursor retain];
+  return gdk_quartz_cursor_new_from_nscursor (nscursor, cursor_type);
 }
 
 G_DEFINE_TYPE (GdkQuartzCursor, gdk_quartz_cursor, GDK_TYPE_CURSOR)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]