Index: egg-editable-toolbar.c
===================================================================
--- egg-editable-toolbar.c	(revision 3848)
+++ egg-editable-toolbar.c	(working copy)
@@ -44,11 +44,13 @@
 #include <gtk/gtktoolitem.h>
 #include <gtk/gtktoolbutton.h>
 #include <gtk/gtkseparatortoolitem.h>
+#include <gtk/gtkicontheme.h>
 #include <glib/gi18n.h>
 #include <string.h>
 
 static void egg_editable_toolbar_class_init	(EggEditableToolbarClass *klass);
 static void egg_editable_toolbar_init		(EggEditableToolbar *etoolbar);
+static GdkPixbuf * new_separator_pixbuf         (void);
 
 #define MIN_TOOLBAR_HEIGHT 20
 #define EGG_ITEM_NAME      "egg-item-name"
@@ -468,6 +470,69 @@
 
           gtk_drag_source_set (widget, GDK_BUTTON1_MASK, dest_drag_types,
                                G_N_ELEMENTS (dest_drag_types), GDK_ACTION_MOVE);
+	  if (GTK_IS_SEPARATOR_TOOL_ITEM (item))
+	    {
+	      GdkPixbuf *pixbuf;
+	      pixbuf = new_separator_pixbuf ();
+	      gtk_drag_source_set_icon_pixbuf (widget, pixbuf);
+              g_object_unref (pixbuf);
+            }
+	  else
+            {
+	      char* icon_name, *stock_id;
+  	      GtkAction *action;
+              char *name;
+  
+              name = g_object_get_data (G_OBJECT (widget), EGG_ITEM_NAME);
+              action = name ? find_action (etoolbar, name) : NULL;
+
+	      g_object_get (action,
+                            "icon-name", &icon_name,
+                            "stock-id", &stock_id,
+		            NULL);
+
+	      if (icon_name)
+                {
+                  GdkScreen *screen;
+                  GtkIconTheme *icon_theme;
+                  GtkSettings *settings;
+                  gint width, height;
+                  GdkPixbuf *pixbuf;
+
+                  screen = gtk_widget_get_screen (widget);
+                  icon_theme = gtk_icon_theme_get_for_screen (screen);
+                  settings = gtk_settings_get_for_screen (screen);
+
+                  if (!gtk_icon_size_lookup_for_settings (settings,
+                                                          GTK_ICON_SIZE_LARGE_TOOLBAR,
+					                  &width, &height))
+                    {
+	              width = height = 24;
+	            }
+
+                  pixbuf = gtk_icon_theme_load_icon (icon_theme, icon_name,
+                                                     MIN (width, height), 0, NULL);
+                  if (G_UNLIKELY (!pixbuf))
+                    return;
+
+                  gtk_drag_source_set_icon_pixbuf (widget, pixbuf);
+                  g_object_unref (pixbuf);
+                }
+              else if (stock_id)
+                {		 
+                  GdkPixbuf *pixbuf;
+                  pixbuf = gtk_widget_render_icon (widget, stock_id,
+	                                           GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
+                  gtk_drag_source_set_icon_pixbuf (widget, pixbuf);
+                  g_object_unref (pixbuf);
+                }
+              else
+                {
+                  gtk_drag_source_set_icon_stock (widget, GTK_STOCK_DND);
+                }
+              g_free (icon_name);
+              g_free (stock_id);
+            }
         }
       else
         {
