Code

Switched pen and pencil toobars to stock GTK+ toolbars
[inkscape.git] / src / widgets / gradient-toolbar.cpp
index d0034611f9ad04ec021a5cbb68b1dac3d8e7e766..49e72bc2182f80b041ed8baf85a4145019ffcb4a 100644 (file)
@@ -3,7 +3,9 @@
  *
  * Authors:
  *   bulia byak <bulia@dr.com>
+ *   Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
  *
+ * Copyright (C) 2007 Johan Engelen
  * Copyright (C) 2005 authors
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
@@ -114,9 +116,12 @@ gr_apply_gradient (Inkscape::Selection *selection, GrDrag *drag, SPGradient *gr)
     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);
 
+
+    // GRADIENTFIXME: make this work for multiple selected draggers.
+    
     // First try selected dragger
     if (drag && drag->selected) {
-        GrDragger *dragger = drag->selected;
+        GrDragger *dragger = (GrDragger*) drag->selected->data;
         for (GSList const* i = dragger->draggables; i != NULL; i = i->next) { // for all draggables of dragger
             GrDraggable *draggable = (GrDraggable *) i->data;
             gr_apply_gradient_to_item (draggable->item, gr, new_type, new_fill, draggable->fill_or_stroke, !draggable->fill_or_stroke);
@@ -126,7 +131,7 @@ gr_apply_gradient (Inkscape::Selection *selection, GrDrag *drag, SPGradient *gr)
 
    // If no drag or no dragger selected, act on selection
    for (GSList const* i = selection->itemList(); i != NULL; i = i->next) {
-       gr_apply_gradient_to_item (SP_ITEM(i->data), gr, new_type, new_fill, true, true);
+       gr_apply_gradient_to_item (SP_ITEM(i->data), gr, new_type, new_fill, new_fill, !new_fill);
    }
 }
 
@@ -263,7 +268,8 @@ void
 gr_read_selection (Inkscape::Selection *selection, GrDrag *drag, SPGradient **gr_selected, bool *gr_multi, SPGradientSpread *spr_selected, bool *spr_multi) 
 {
     if (drag && drag->selected) {
-        GrDragger *dragger = drag->selected;
+        // GRADIENTFIXME: make this work for more than one selected dragger?
+        GrDragger *dragger = (GrDragger*) drag->selected->data;
         for (GSList const* i = dragger->draggables; i != NULL; i = i->next) { // for all draggables of dragger
             GrDraggable *draggable = (GrDraggable *) i->data;
             SPGradient *gradient = sp_item_gradient_get_vector (draggable->item, draggable->fill_or_stroke);