summaryrefslogtreecommitdiffstats
path: root/src/sp-item.cpp
diff options
context:
space:
mode:
authorAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-07-11 12:24:52 +0000
committerAdrian Boguszewski <adrbogus1@student.pg.gda.pl>2016-07-11 12:24:52 +0000
commit058e95a59ccb2ab1748392acdfdbbffd516c9c81 (patch)
tree86e3958aaad129307f45e590269924b14bca303d /src/sp-item.cpp
parentAdded simple test for SPObject (diff)
downloadinkscape-058e95a59ccb2ab1748392acdfdbbffd516c9c81.tar.gz
inkscape-058e95a59ccb2ab1748392acdfdbbffd516c9c81.zip
First part of new SPObject children list
(bzr r14954.1.17)
Diffstat (limited to 'src/sp-item.cpp')
-rw-r--r--src/sp-item.cpp41
1 files changed, 13 insertions, 28 deletions
diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index 9fd6e8ecc..258a5cd14 100644
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -308,50 +308,35 @@ bool is_item(SPObject const &object) {
void SPItem::raiseToTop() {
using Inkscape::Algorithms::find_last_if;
- SPObject *topmost=find_last_if<SPObject::SiblingIterator>(
- next, NULL, &is_item
- );
- if (topmost) {
+ auto topmost = find_last_if(++parent->_children.iterator_to(*this), parent->_children.end(), &is_item);
+ if (topmost != parent->_children.end()) {
getRepr()->parent()->changeOrder( getRepr(), topmost->getRepr() );
}
}
void SPItem::raiseOne() {
- SPObject *next_higher=std::find_if<SPObject::SiblingIterator>(
- next, NULL, &is_item
- );
- if (next_higher) {
+ auto next_higher = std::find_if(++parent->_children.iterator_to(*this), parent->_children.end(), &is_item);
+ if (next_higher != parent->_children.end()) {
Inkscape::XML::Node *ref = next_higher->getRepr();
getRepr()->parent()->changeOrder(getRepr(), ref);
}
}
void SPItem::lowerOne() {
- using Inkscape::Util::MutableList;
- using Inkscape::Util::reverse_list;
-
- MutableList<SPObject &> next_lower=std::find_if(
- reverse_list<SPObject::SiblingIterator>(
- parent->firstChild(), this
- ),
- MutableList<SPObject &>(),
- &is_item
- );
- if (next_lower) {
- ++next_lower;
- Inkscape::XML::Node *ref = ( next_lower ? next_lower->getRepr() : NULL );
+ using Inkscape::Algorithms::find_last_if;
+
+ auto next_lower = find_last_if(parent->_children.begin(), parent->_children.iterator_to(*this), &is_item);
+ if (next_lower != parent->_children.iterator_to(*this)) {
+ next_lower--;
+ Inkscape::XML::Node *ref = next_lower->getRepr();
getRepr()->parent()->changeOrder(getRepr(), ref);
}
}
void SPItem::lowerToBottom() {
- using Inkscape::Algorithms::find_last_if;
- using Inkscape::Util::MutableList;
- using Inkscape::Util::reverse_list;
-
- SPObject * bottom=parent->firstChild();
- while(dynamic_cast<SPObject*>(bottom) && dynamic_cast<SPObject*>(bottom->next) && bottom!=this && !is_item(*(bottom->next))) bottom=bottom->next;
- if (bottom && bottom != this) {
+ auto bottom = std::find_if(parent->_children.begin(), parent->_children.iterator_to(*this), &is_item);
+ if (bottom != parent->_children.iterator_to(*this)) {
+ bottom--;
Inkscape::XML::Node *ref = bottom->getRepr() ;
parent->getRepr()->changeOrder(getRepr(), ref);
}