diff options
| author | Nicholas Bishop <nicholasbishop@gmail.com> | 2007-08-12 08:30:52 +0000 |
|---|---|---|
| committer | nicholasbishop <nicholasbishop@users.sourceforge.net> | 2007-08-12 08:30:52 +0000 |
| commit | b8648450187d7ced1c4ec0196d79d579846ed1e3 (patch) | |
| tree | c8e425aca4d6d7634f53cf9cd190d35bf835b3a3 /src | |
| parent | Filter effects dialog: (diff) | |
| download | inkscape-b8648450187d7ced1c4ec0196d79d579846ed1e3.tar.gz inkscape-b8648450187d7ced1c4ec0196d79d579846ed1e3.zip | |
Filter effects dialog:
* Fixed bad use of tree iterators; caused crashes when drag/dropping filter primitives
(bzr r3453)
Diffstat (limited to 'src')
| -rw-r--r-- | src/ui/dialog/filter-effects-dialog.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp index fe2e8f1c6..c871d447e 100644 --- a/src/ui/dialog/filter-effects-dialog.cpp +++ b/src/ui/dialog/filter-effects-dialog.cpp @@ -1657,7 +1657,7 @@ void FilterEffectsDialog::PrimitiveList::sanitize_connections(const Gtk::TreeIte } // Reorder the filter primitives to match the list order -void FilterEffectsDialog::PrimitiveList::on_drag_end(const Glib::RefPtr<Gdk::DragContext>&) +void FilterEffectsDialog::PrimitiveList::on_drag_end(const Glib::RefPtr<Gdk::DragContext>& dc) { SPFilter* filter = _dialog._filter_modifier.get_selected_filter(); int ndx = 0; @@ -1665,12 +1665,19 @@ void FilterEffectsDialog::PrimitiveList::on_drag_end(const Glib::RefPtr<Gdk::Dra for(Gtk::TreeModel::iterator iter = _model->children().begin(); iter != _model->children().end(); ++iter, ++ndx) { SPFilterPrimitive* prim = (*iter)[_columns.primitive]; - if(prim) { + if(prim && prim == _drag_prim) { SP_OBJECT_REPR(prim)->setPosition(ndx); - if(_drag_prim == prim) { - sanitize_connections(iter); - get_selection()->select(iter); - } + break; + } + } + + for(Gtk::TreeModel::iterator iter = _model->children().begin(); + iter != _model->children().end(); ++iter, ++ndx) { + SPFilterPrimitive* prim = (*iter)[_columns.primitive]; + if(prim && prim == _drag_prim) { + sanitize_connections(iter); + get_selection()->select(iter); + break; } } |
