diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2006-06-11 05:24:48 +0000 |
|---|---|---|
| committer | joncruz <joncruz@users.sourceforge.net> | 2006-06-11 05:24:48 +0000 |
| commit | 80a6db8c1fd8a95721b11875541f9e5e5b41fd1b (patch) | |
| tree | 44f697db940d03da2cf1b9298e6ed97f7de48aab /src/object-snapper.cpp | |
| parent | updates from Aleksandar (diff) | |
| download | inkscape-80a6db8c1fd8a95721b11875541f9e5e5b41fd1b.tar.gz inkscape-80a6db8c1fd8a95721b11875541f9e5e5b41fd1b.zip | |
Applied patch #1503864
(bzr r1202)
Diffstat (limited to 'src/object-snapper.cpp')
| -rw-r--r-- | src/object-snapper.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 9439fea8b..6b51f8508 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -15,6 +15,7 @@ #include "document.h" #include "sp-namedview.h" #include "sp-path.h" +#include "sp-item-group.h" #include "display/curve.h" #include "desktop.h" #include "inkscape.h" @@ -37,8 +38,9 @@ void Inkscape::ObjectSnapper::_findCandidates(std::list<SPItem*>& c, std::list<SPItem const *> const &it, NR::Point const &p) const { - for (SPObject* o = r->children; o != NULL; o = o->next) { - if (SP_IS_ITEM(o)) { + SPDesktop const *desktop = SP_ACTIVE_DESKTOP; + for (SPObject* o = sp_object_first_child(r); o != NULL; o = SP_OBJECT_NEXT(o)) { + if (SP_IS_ITEM(o) && !SP_ITEM(o)->isLocked() && !desktop->itemIsHidden(SP_ITEM(o))) { /* See if this item is on the ignore list */ std::list<SPItem const *>::const_iterator i = it.begin(); @@ -48,14 +50,17 @@ void Inkscape::ObjectSnapper::_findCandidates(std::list<SPItem*>& c, if (i == it.end()) { /* See if the item is within range */ - NR::Rect const b = NR::expand(sp_item_bbox_desktop(SP_ITEM(o)), -getDistance()); - if (b.contains(p)) { - c.push_back(SP_ITEM(o)); + if (SP_IS_GROUP(o)) { + _findCandidates(c, o, it, p); + } else { + NR::Rect const b = NR::expand(sp_item_bbox_desktop(SP_ITEM(o)), -getDistance()); + if (b.contains(p)) { + c.push_back(SP_ITEM(o)); + } } } - } - _findCandidates(c, o, it, p); + } } } |
