[gtk+/wip/resources] Move fallback dnd cursors to resources
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/resources] Move fallback dnd cursors to resources
- Date: Mon, 16 Jan 2012 11:02:24 +0000 (UTC)
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]