summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gradient-chemistry.cpp18
-rw-r--r--src/gradient-chemistry.h2
-rw-r--r--src/gradient-drag.cpp3
3 files changed, 18 insertions, 5 deletions
diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp
index bacdfb6aa..78ea13507 100644
--- a/src/gradient-chemistry.cpp
+++ b/src/gradient-chemistry.cpp
@@ -624,13 +624,11 @@ sp_item_gradient_stop_set_style (SPItem *item, guint point_type, guint point_i,
if (!vector) // orphan!
return;
-
- /*
- vector = sp_gradient_fork_vector_if_necessary (vector); // TESTJOHAN
+
+ vector = sp_gradient_fork_vector_if_necessary (vector);
if ( gradient != vector && gradient->ref->getObject() != vector ) {
sp_gradient_repr_set_link(SP_OBJECT_REPR(gradient), vector);
}
- */
switch (point_type) {
case POINT_LG_BEGIN:
@@ -1226,6 +1224,18 @@ sp_gradient_vector_for_object(SPDocument *const doc, SPDesktop *const desktop,
return sp_document_default_gradient_vector(doc, rgba);
}
+
+SPGradient *
+sp_gradient_get_forked_vector_if_necessary(SPGradient *gradient, bool force_vector)
+{
+ SPGradient *vector = sp_gradient_get_vector (gradient, force_vector);
+ vector = sp_gradient_fork_vector_if_necessary (vector);
+ if ( gradient != vector && gradient->ref->getObject() != vector ) {
+ sp_gradient_repr_set_link(SP_OBJECT_REPR(gradient), vector);
+ }
+ return vector;
+}
+
/*
Local Variables:
mode:c++
diff --git a/src/gradient-chemistry.h b/src/gradient-chemistry.h
index 4ddae86ce..e4fbb79d9 100644
--- a/src/gradient-chemistry.h
+++ b/src/gradient-chemistry.h
@@ -51,6 +51,8 @@ SPGradient *sp_gradient_convert_to_userspace (SPGradient *gr, SPItem *item, cons
SPGradient *sp_gradient_reset_to_userspace (SPGradient *gr, SPItem *item);
SPGradient *sp_gradient_fork_vector_if_necessary (SPGradient *gr);
+SPGradient *sp_gradient_get_forked_vector_if_necessary(SPGradient *gradient, bool force_vector);
+
SPStop* sp_first_stop(SPGradient *gradient);
SPStop* sp_last_stop(SPGradient *gradient);
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp
index 74fc2fe67..c02190df8 100644
--- a/src/gradient-drag.cpp
+++ b/src/gradient-drag.cpp
@@ -1550,7 +1550,8 @@ GrDrag::deleteSelected (bool just_one)
for (GSList * drgble = dragger->draggables; drgble != NULL; drgble = drgble->next) {
GrDraggable *draggable = (GrDraggable*) drgble->data;
SPGradient *gradient = sp_item_gradient (draggable->item, draggable->fill_or_stroke);
- SPGradient *vector = sp_gradient_get_vector (gradient, false);
+ SPGradient *vector = sp_gradient_get_forked_vector_if_necessary (gradient, false);
+
switch (draggable->point_type) {
case POINT_LG_MID:
case POINT_RG_MID1: