[gtk+/wip/resources] Move fallback dnd cursors to resources



commit 09da3ad2bcc1a6855b926d434ed23b6810dee316
Author: Alexander Larsson <alexl redhat com>
Date:   Mon Jan 16 12:02:02 2012 +0100

    Move fallback dnd cursors to resources

 gtk/Makefile.am       |   11 ++-
 gtk/gtk.gresource.xml |    5 +
 gtk/gtkdnd.c          |   42 ++++--
 gtk/gtkdndcursors.h   |  347 -------------------------------------------------
 4 files changed, 43 insertions(+), 362 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 6822440..8cd0ce5 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -426,7 +426,6 @@ gtk_private_h_sources =		\
 	gtkcssstylefuncsprivate.h \
 	gtkcssstylepropertyprivate.h \
 	gtkcustompaperunixdialog.h \
-	gtkdndcursors.h		\
 	gtkentryprivate.h	\
 	gtkfilechooserdefault.h	\
 	gtkfilechooserembed.h	\
@@ -940,6 +939,13 @@ EXTRA_DIST += $(gtk_private_h_sources) $(gtk_extra_sources)
 EXTRA_DIST += $(gtk_built_sources)
 EXTRA_DIST += $(STOCK_ICONS)
 
+DND_CURSORS = \
+	cursor_dnd_ask.png				\
+	cursor_dnd_copy.png				\
+	cursor_dnd_link.png				\
+	cursor_dnd_move.png				\
+	cursor_dnd_none.png
+
 #
 # rules to generate built sources
 #
@@ -984,7 +990,7 @@ gtktypebuiltins.c: @REBUILD@ $(gtk_public_h_sources) $(deprecated_h_sources) gtk
 gtkresources.h: gtk.gresource.xml
 	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) gtk.gresource.xml \
 		--target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-header --manual-register
-gtkresources.c: gtk.gresource.xml gtk-default.css gtk-win32.css
+gtkresources.c: gtk.gresource.xml gtk-default.css gtk-win32.css $(DND_CURSORS)
 	$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) gtk.gresource.xml \
 		--target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-source --manual-register
 
@@ -1518,6 +1524,7 @@ endif
 
 EXTRA_DIST +=                   \
 	$(STOCK_ICONS)		\
+	$(DND_CURSORS)		\
 	$(GENERATED_ICONS)	\
 	gtk.def			\
 	gtk-win32.rc		\
diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml
index 53854b9..880c101 100644
--- a/gtk/gtk.gresource.xml
+++ b/gtk/gtk.gresource.xml
@@ -3,5 +3,10 @@
   <gresource prefix="/org/gtk/libgtk">
     <file>gtk-default.css</file>
     <file>gtk-win32.css</file>
+    <file alias="cursor/dnd-ask.png">cursor_dnd_ask.png</file>
+    <file alias="cursor/dnd-link.png">cursor_dnd_link.png</file>
+    <file alias="cursor/dnd-none.png">cursor_dnd_none.png</file>
+    <file alias="cursor/dnd-move.png">cursor_dnd_move.png</file>
+    <file alias="cursor/dnd-copy.png">cursor_dnd_copy.png</file>
   </gresource>
 </gresources>
diff --git a/gtk/gtkdnd.c b/gtk/gtkdnd.c
index 3891179..bcd7a29 100644
--- a/gtk/gtkdnd.c
+++ b/gtk/gtkdnd.c
@@ -52,7 +52,6 @@
 #include "gtktooltip.h"
 #include "gtkwindow.h"
 #include "gtkintl.h"
-#include "gtkdndcursors.h"
 #include "gtkselectionprivate.h"
 
 
@@ -309,16 +308,15 @@ static void     set_icon_helper (GdkDragContext    *context,
 static struct {
   GdkDragAction action;
   const gchar  *name;
-  const guint8 *data;
   GdkPixbuf    *pixbuf;
   GdkCursor    *cursor;
 } drag_cursors[] = {
   { GDK_ACTION_DEFAULT, NULL },
-  { GDK_ACTION_ASK,   "dnd-ask",  dnd_cursor_ask,  NULL, NULL },
-  { GDK_ACTION_COPY,  "dnd-copy", dnd_cursor_copy, NULL, NULL },
-  { GDK_ACTION_MOVE,  "dnd-move", dnd_cursor_move, NULL, NULL },
-  { GDK_ACTION_LINK,  "dnd-link", dnd_cursor_link, NULL, NULL },
-  { 0              ,  "dnd-none", dnd_cursor_none, NULL, NULL },
+  { GDK_ACTION_ASK,   "dnd-ask",  NULL, NULL },
+  { GDK_ACTION_COPY,  "dnd-copy", NULL, NULL },
+  { GDK_ACTION_MOVE,  "dnd-move", NULL, NULL },
+  { GDK_ACTION_LINK,  "dnd-link", NULL, NULL },
+  { 0              ,  "dnd-none", NULL, NULL },
 };
 
 /*********************
@@ -820,6 +818,22 @@ gtk_drag_can_use_rgba_cursor (GdkDisplay *display,
   return TRUE;
 }
 
+static void
+ensure_drag_cursor_pixbuf (int i)
+{
+  if (drag_cursors[i].pixbuf == NULL)
+    {
+      char *path = g_strconcat ("/org/gtk/libgtk/cursor/",  drag_cursors[i].name, ".png", NULL);
+      GInputStream *stream = g_resources_open_stream (path, 0, NULL);
+      if (stream != NULL)
+	{
+	  drag_cursors[i].pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, NULL);
+	  g_object_unref (stream);
+	}
+      g_free (path);
+    }
+}
+
 static GdkCursor *
 gtk_drag_get_cursor (GtkWidget         *widget,
                      GdkDisplay        *display,
@@ -845,10 +859,6 @@ gtk_drag_get_cursor (GtkWidget         *widget,
     if (drag_cursors[i].action == action)
       break;
 
-  if (drag_cursors[i].pixbuf == NULL)
-    drag_cursors[i].pixbuf = 
-      gdk_pixbuf_new_from_inline (-1, drag_cursors[i].data, FALSE, NULL);
-
   if (drag_cursors[i].cursor != NULL)
     {
       if (display != gdk_cursor_get_display (drag_cursors[i].cursor))
@@ -862,7 +872,10 @@ gtk_drag_get_cursor (GtkWidget         *widget,
     drag_cursors[i].cursor = gdk_cursor_new_from_name (display, drag_cursors[i].name);
   
   if (drag_cursors[i].cursor == NULL)
-    drag_cursors[i].cursor = gdk_cursor_new_from_pixbuf (display, drag_cursors[i].pixbuf, 0, 0);
+    {
+      ensure_drag_cursor_pixbuf (i);
+      drag_cursors[i].cursor = gdk_cursor_new_from_pixbuf (display, drag_cursors[i].pixbuf, 0, 0);
+    }
 
   if (info && info->icon_helper) 
     {
@@ -893,7 +906,10 @@ gtk_drag_get_cursor (GtkWidget         *widget,
       hot_x = hot_y = 0;
       cursor_pixbuf = gdk_cursor_get_image (drag_cursors[i].cursor);
       if (!cursor_pixbuf)
-	cursor_pixbuf = g_object_ref (drag_cursors[i].pixbuf);
+	{
+	  ensure_drag_cursor_pixbuf (i);
+	  cursor_pixbuf = g_object_ref (drag_cursors[i].pixbuf);
+	}
       else
 	{
 	  if (gdk_pixbuf_get_option (cursor_pixbuf, "x_hot"))



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