Code

We were disconnecting the wrong signal, resulting on the old object's
[inkscape.git] / src / gradient-context.cpp
index 98a109737a5e7f207da554a75160d71dfc493385..bf1281f82a43b56e11ddeab1fee96d47359049cb 100644 (file)
@@ -26,6 +26,7 @@
 #include "message-context.h"
 #include "message-stack.h"
 #include "pixmaps/cursor-gradient.xpm"
+#include "pixmaps/cursor-gradient.pixbuf"
 #include "gradient-context.h"
 #include <glibmm/i18n.h>
 #include "prefs-utils.h"
@@ -84,6 +85,11 @@ static void sp_gradient_context_init(SPGradientContext *gr_context)
     SPEventContext *event_context = SP_EVENT_CONTEXT(gr_context);
 
     event_context->cursor_shape = cursor_gradient_xpm;
+    event_context->cursor_pixbuf = gdk_pixbuf_new_from_inline(
+            -1,
+            cursor_gradient_pixbuf,
+            FALSE,
+            NULL);  
     event_context->hot_x = 4;
     event_context->hot_y = 4;
     event_context->xp = 0;
@@ -121,7 +127,7 @@ static void sp_gradient_context_setup(SPEventContext *ec)
 
     ec->enableGrDrag();
 
-    rc->_message_context = new Inkscape::MessageContext(SP_DT_MSGSTACK(ec->desktop));
+    rc->_message_context = new Inkscape::MessageContext(sp_desktop_message_stack(ec->desktop));
 }
 
 static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event)
@@ -129,7 +135,7 @@ static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkE
     static bool dragging;
 
     SPDesktop *desktop = event_context->desktop;
-    Inkscape::Selection *selection = SP_DT_SELECTION (desktop);
+    Inkscape::Selection *selection = sp_desktop_selection (desktop);
 
     SPGradientContext *rc = SP_GRADIENT_CONTEXT(event_context);
 
@@ -148,13 +154,14 @@ static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkE
                 SPGradientType new_type = (SPGradientType) prefs_get_int_attribute ("tools.gradient", "newgradient", SP_GRADIENT_TYPE_LINEAR);
                 guint new_fill = prefs_get_int_attribute ("tools.gradient", "newfillorstroke", 1);
 
-                SPGradient *vector = sp_gradient_vector_for_object(SP_DT_DOCUMENT(desktop), desktop,                                                                                   SP_OBJECT (item), new_fill);
+                SPGradient *vector = sp_gradient_vector_for_object(sp_desktop_document(desktop), desktop,                                                                                   SP_OBJECT (item), new_fill);
 
                 SPGradient *priv = sp_item_set_gradient(item, vector, new_type, new_fill);
                 sp_gradient_reset_to_userspace(priv, item);
             }
 
-            sp_document_done (SP_DT_DOCUMENT (desktop));
+            sp_document_done (sp_desktop_document (desktop), SP_VERB_CONTEXT_GRADIENT,
+                              /* TODO: annotate */ "gradient-context.cpp:164");
 
             ret = TRUE;
         }
@@ -359,7 +366,8 @@ static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkE
                     }
                 }
                 // we did an undoable action
-                sp_document_done (SP_DT_DOCUMENT (desktop));
+                sp_document_done (sp_desktop_document (desktop), SP_VERB_CONTEXT_GRADIENT,
+                                  /* TODO: annotate */ "gradient-context.cpp:370");
                 ret = TRUE;
             }
             break;
@@ -399,8 +407,8 @@ static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkE
 static void sp_gradient_drag(SPGradientContext &rc, NR::Point const pt, guint state, guint32 etime)
 {
     SPDesktop *desktop = SP_EVENT_CONTEXT(&rc)->desktop;
-    Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
-    SPDocument *document = SP_DT_DOCUMENT(desktop);
+    Inkscape::Selection *selection = sp_desktop_selection(desktop);
+    SPDocument *document = sp_desktop_document(desktop);
     SPEventContext *ec = SP_EVENT_CONTEXT(&rc);
 
     if (!selection->isEmpty()) {
@@ -455,7 +463,7 @@ static void sp_gradient_drag(SPGradientContext &rc, NR::Point const pt, guint st
                                            "<b>Gradient</b> for %d objects; with <b>Ctrl</b> to snap angle", n_objects),
                                   n_objects);
     } else {
-        SP_DT_MSGSTACK(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select <b>objects</b> on which to create gradient."));
+        sp_desktop_message_stack(desktop)->flash(Inkscape::WARNING_MESSAGE, _("Select <b>objects</b> on which to create gradient."));
     }
 }