summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2007-08-12 08:30:52 +0000
committernicholasbishop <nicholasbishop@users.sourceforge.net>2007-08-12 08:30:52 +0000
commitb8648450187d7ced1c4ec0196d79d579846ed1e3 (patch)
treec8e425aca4d6d7634f53cf9cd190d35bf835b3a3 /src
parentFilter effects dialog: (diff)
downloadinkscape-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.cpp19
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;
}
}