diff options
| author | John Smith <john.smith7545@yahoo.com> | 2012-04-25 04:52:00 +0000 |
|---|---|---|
| committer | John Smith <removethis.john.q.public@bigmail.com> | 2012-04-25 04:52:00 +0000 |
| commit | 3b09d1b8be1798131ce372d1eb308160c2383f88 (patch) | |
| tree | 99a456bc10e72019c5a39396630df2669dafe365 /src | |
| parent | Memory management in context menu (Bug #910529 ) (diff) | |
| download | inkscape-3b09d1b8be1798131ce372d1eb308160c2383f88.tar.gz inkscape-3b09d1b8be1798131ce372d1eb308160c2383f88.zip | |
Fix for 950677 : Add link option to gradient toolbar
(bzr r11291)
Diffstat (limited to 'src')
| -rw-r--r-- | src/gradient-drag.cpp | 2 | ||||
| -rw-r--r-- | src/widgets/gradient-toolbar.cpp | 30 | ||||
| -rw-r--r-- | src/widgets/toolbox.cpp | 1 |
3 files changed, 33 insertions, 0 deletions
diff --git a/src/gradient-drag.cpp b/src/gradient-drag.cpp index ad66b258a..c1f9251df 100644 --- a/src/gradient-drag.cpp +++ b/src/gradient-drag.cpp @@ -1615,6 +1615,7 @@ void GrDrag::addDragger(GrDraggable *draggable) */ void GrDrag::addDraggersRadial(SPRadialGradient *rg, SPItem *item, bool fill_or_stroke) { + rg->ensureVector(); addDragger (new GrDraggable (item, POINT_RG_CENTER, 0, fill_or_stroke)); guint num = rg->vector.stops.size(); if (num > 2) { @@ -1637,6 +1638,7 @@ void GrDrag::addDraggersRadial(SPRadialGradient *rg, SPItem *item, bool fill_or_ */ void GrDrag::addDraggersLinear(SPLinearGradient *lg, SPItem *item, bool fill_or_stroke) { + lg->ensureVector(); addDragger (new GrDraggable (item, POINT_LG_BEGIN, 0, fill_or_stroke)); guint num = lg->vector.stops.size(); if (num > 2) { diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp index e239457fd..a7b97c21a 100644 --- a/src/widgets/gradient-toolbar.cpp +++ b/src/widgets/gradient-toolbar.cpp @@ -636,6 +636,20 @@ gr_remove_stop (GtkWidget */*button*/, GtkWidget *vb) } static void +gr_linked_changed (GtkToggleAction *act, gpointer data) +{ + gboolean active = gtk_toggle_action_get_active( act ); + if ( active ) { + g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON("object-locked"), NULL ); + } else { + g_object_set( G_OBJECT(act), "iconId", INKSCAPE_ICON("object-unlocked"), NULL ); + } + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + prefs->setBool("/options/forkgradientvectors/value", !active); +} + +static void gr_reverse (GtkWidget */*button*/, gpointer data) { SPDesktop *desktop = static_cast<SPDesktop *>(data); @@ -1264,6 +1278,22 @@ void sp_gradient_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, } + // Gradients Linked toggle + { + InkToggleAction* itact = ink_toggle_action_new( "GradientEditLinkAction", + _("Link gradients"), + _("Link gradients to change all related gradients"), + INKSCAPE_ICON("object-unlocked"), + secondarySize ); + g_object_set( itact, "short_label", "Lock", NULL ); + g_signal_connect_after( G_OBJECT(itact), "toggled", G_CALLBACK(gr_linked_changed), desktop) ; + gtk_action_group_add_action( mainActions, GTK_ACTION(itact) ); + + Inkscape::Preferences *prefs = Inkscape::Preferences::get(); + bool linkedmode = prefs->getBool("/options/forkgradientvectors/value", true); + gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), !linkedmode ); + } + Inkscape::Selection *selection = sp_desktop_selection (desktop); SPDocument *document = sp_desktop_document (desktop); diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index 7491c9c28..7d73c042b 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -538,6 +538,7 @@ static gchar const * ui_descr = " <toolitem action='GradientNewFillStrokeAction' />" " <separator />" " <toolitem action='GradientSelectGradientAction' />" + " <toolitem action='GradientEditLinkAction' />" " <toolitem action='GradientEditReverseAction' />" " <toolitem action='GradientSelectRepeatAction' />" " <separator />" |
