diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2017-02-28 22:07:32 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2017-02-28 22:07:32 +0000 |
| commit | dbe9eae8b96400c233e21d4b47046345ecbea26e (patch) | |
| tree | 75c36c494ad4dd7131b178fed97d85413d394978 /src/object-set.cpp | |
| parent | merge minor refactoring (diff) | |
| download | inkscape-dbe9eae8b96400c233e21d4b47046345ecbea26e.tar.gz inkscape-dbe9eae8b96400c233e21d4b47046345ecbea26e.zip | |
Makes selection complexity linear in the number of selected objects instead of quadratic due to too many signals sent
Fixed bugs:
- https://launchpad.net/bugs/1666714
(bzr r15556)
Diffstat (limited to 'src/object-set.cpp')
| -rw-r--r-- | src/object-set.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/object-set.cpp b/src/object-set.cpp index 65e7d45d6..8fcb4215e 100644 --- a/src/object-set.cpp +++ b/src/object-set.cpp @@ -20,7 +20,7 @@ namespace Inkscape { -bool ObjectSet::add(SPObject* object) { +bool ObjectSet::add(SPObject* object, bool nosignal) { g_return_val_if_fail(object != NULL, false); g_return_val_if_fail(SP_IS_OBJECT(object), false); @@ -37,7 +37,8 @@ bool ObjectSet::add(SPObject* object) { _removeDescendantsFromSet(object); _add(object); - _emitSignals(); + if (!nosignal) + _emitSignals(); return true; } @@ -246,9 +247,10 @@ void ObjectSet::setReprList(std::vector<XML::Node*> const &list) { for (auto iter = list.rbegin(); iter != list.rend(); ++iter) { SPObject *obj = document()->getObjectById((*iter)->attribute("id")); if (obj) { - add(obj); + add(obj, true); } } + _emitSignals(); if(dynamic_cast<Inkscape::Selection*>(this)) return dynamic_cast<Inkscape::Selection*>(this)->_emitChanged();// } |
