summaryrefslogtreecommitdiff
path: root/gladeui/glade-palette.c
diff options
context:
space:
mode:
Diffstat (limited to 'gladeui/glade-palette.c')
-rw-r--r--gladeui/glade-palette.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/gladeui/glade-palette.c b/gladeui/glade-palette.c
index 811f9355..cb3263f5 100644
--- a/gladeui/glade-palette.c
+++ b/gladeui/glade-palette.c
@@ -47,6 +47,7 @@
#include "glade-widget-adaptor.h"
#include "glade-popup.h"
#include "glade-design-private.h"
+#include "glade-dnd.h"
#include <glib/gi18n-lib.h>
#include <gdk/gdk.h>
@@ -271,28 +272,24 @@ palette_item_toggled_cb (GtkToggleToolButton *button, GladePalette *palette)
}
static void
-glade_palette_drag_end (GtkWidget *widget,
- GdkDragContext *context,
- GtkWidget *drag_icon)
-{
- g_object_unref (drag_icon);
- g_signal_handlers_disconnect_by_func (widget, glade_palette_drag_end, drag_icon);
-}
-
-static void
glade_palette_drag_begin (GtkWidget *widget,
GdkDragContext *context,
GladeWidgetAdaptor *adaptor)
{
- GtkWidget *drag_icon;
+ _glade_dnd_set_icon_widget (context,
+ glade_widget_adaptor_get_icon_name (adaptor),
+ glade_widget_adaptor_get_name (adaptor));
+}
- drag_icon = _glade_design_layout_dnd_icon_widget_new (context,
- glade_widget_adaptor_get_icon_name (adaptor),
- glade_widget_adaptor_get_name (adaptor));
- g_object_ref_sink (drag_icon);
- gtk_drag_set_icon_widget (context, drag_icon, 0, 0);
- g_signal_connect_object (widget, "drag-end",
- G_CALLBACK (glade_palette_drag_end), drag_icon, 0);
+static void
+glade_palette_drag_data_get (GtkWidget *widget,
+ GdkDragContext *context,
+ GtkSelectionData *data,
+ guint info,
+ guint time,
+ GladeWidgetAdaptor *adaptor)
+{
+ _glade_dnd_set_data (data, G_OBJECT (adaptor));
}
static gint
@@ -350,6 +347,11 @@ glade_palette_new_item (GladePalette * palette, GladeWidgetAdaptor * adaptor)
G_CALLBACK (palette_item_button_press_cb), item);
g_signal_connect_object (button, "drag-begin",
G_CALLBACK (glade_palette_drag_begin), adaptor, 0);
+ g_signal_connect_object (button, "drag-data-get",
+ G_CALLBACK (glade_palette_drag_data_get), adaptor, 0);
+
+ gtk_drag_source_set (button, GDK_BUTTON1_MASK, _glade_dnd_get_target (), 1, 0);
+
gtk_widget_show (item);
g_hash_table_insert (palette->priv->button_table,