summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarc Jeanmougin <mc>2015-02-19 19:20:09 +0000
committerMarc Jeanmougin <mc>2015-02-19 19:20:09 +0000
commit7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae (patch)
tree4d885b8aa45917ceba4f64f2fc2af74f2766adee /src
parentPut a few std::vector<SPitem*> (diff)
downloadinkscape-7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae.tar.gz
inkscape-7e4b6f793d31d3245bd8afbf6f10aa255ac3e7ae.zip
added a set to the Selection
(bzr r13922.1.6)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/cairo-renderer.cpp5
-rw-r--r--src/extension/internal/latex-text-renderer.cpp5
-rw-r--r--src/selection-chemistry.cpp10
-rw-r--r--src/selection.cpp23
-rw-r--r--src/selection.h12
-rw-r--r--src/sp-defs.cpp5
-rw-r--r--src/sp-filter.cpp5
-rw-r--r--src/sp-item-group.cpp29
-rw-r--r--src/sp-object.cpp6
-rw-r--r--src/sp-object.h5
-rw-r--r--src/sp-switch.cpp14
-rw-r--r--src/sp-switch.h2
-rw-r--r--src/ui/dialog/grid-arrange-tab.cpp28
-rw-r--r--src/ui/dialog/tags.cpp4
-rw-r--r--src/ui/tools/eraser-tool.cpp2
-rw-r--r--src/xml/repr-util.cpp12
-rw-r--r--src/xml/repr.h3
17 files changed, 83 insertions, 87 deletions
diff --git a/src/extension/internal/cairo-renderer.cpp b/src/extension/internal/cairo-renderer.cpp
index 7ce5cdf8a..f614ec745 100644
--- a/src/extension/internal/cairo-renderer.cpp
+++ b/src/extension/internal/cairo-renderer.cpp
@@ -294,9 +294,8 @@ static void sp_group_render(SPGroup *group, CairoRenderContext *ctx)
CairoRenderer *renderer = ctx->getRenderer();
TRACE(("sp_group_render opacity: %f\n", SP_SCALE24_TO_FLOAT(item->style->opacity.value)));
- SelContainer l(group->childList(false));
- l.reverse();
- for(SelContainer::const_iterator x=l.begin();x!=l.end();x++){
+ std::vector<SPObject*> l(group->childList(false));
+ for(std::vector<SPObject*>::const_iterator x=l.begin();x!=l.end();x++){
SPObject *o = reinterpret_cast<SPObject *>(*x);
SPItem *item = dynamic_cast<SPItem *>(o);
if (item) {
diff --git a/src/extension/internal/latex-text-renderer.cpp b/src/extension/internal/latex-text-renderer.cpp
index dab27a0e1..a2de264ab 100644
--- a/src/extension/internal/latex-text-renderer.cpp
+++ b/src/extension/internal/latex-text-renderer.cpp
@@ -228,9 +228,8 @@ LaTeXTextRenderer::writePostamble()
void LaTeXTextRenderer::sp_group_render(SPGroup *group)
{
- SelContainer l = (group->childList(false));
- l.reverse();
- for(SelContainer::const_iterator x=l.begin();x!=l.end();x++){
+ std::vector<SPObject*> l = (group->childList(false));
+ for(std::vector<SPObject*>::const_iterator x=l.begin();x!=l.end();x++){
SPObject *o = reinterpret_cast<SPObject *>(*x);
SPItem *item = dynamic_cast<SPItem *>(o);
if (item) {
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp
index f1c96b6b8..736e020dd 100644
--- a/src/selection-chemistry.cpp
+++ b/src/selection-chemistry.cpp
@@ -558,7 +558,7 @@ void sp_edit_clear_all(Inkscape::Selection *selection)
g_return_if_fail(group != NULL);
std::vector<SPItem*> items = sp_item_group_item_list(group);
- for(int i=0;i<items.size();i++){
+ for(unsigned int i=0;i<items.size();i++){
reinterpret_cast<SPObject*>(items[i])->deleteObject();
}
@@ -3061,7 +3061,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
doc->ensureUpToDate();
- SelContainer items(selection->list());
+ std::vector<SPObject*> items(selection->list());
// Keep track of parent, this is where <use> will be inserted.
Inkscape::XML::Node *the_first_repr = reinterpret_cast<SPObject *>( items.front() )->getRepr();
@@ -3128,7 +3128,7 @@ void sp_selection_symbol(SPDesktop *desktop, bool /*apply*/ )
}
// Move selected items to new <symbol>
- for (SelContainer::const_iterator i=items.begin();i!=items.end();i++){
+ for (std::vector<SPObject*>::const_iterator i=items.begin();i!=items.end();i++){
Inkscape::XML::Node *repr = SP_OBJECT(*i)->getRepr();
repr->parent()->removeChild(repr);
symbol_repr->addChild(repr,NULL);
@@ -3195,7 +3195,7 @@ void sp_selection_unsymbol(SPDesktop *desktop)
desktop->currentLayer()->getRepr()->appendChild(group);
// Move all children of symbol to group
- SelContainer children = symbol->childList(false);
+ std::vector<SPObject*> children = symbol->childList(false);
// Converting a group to a symbol inserts a group for non-translational transform.
// In converting a symbol back to a group we strip out the inserted group (or any other
@@ -3212,7 +3212,7 @@ void sp_selection_unsymbol(SPDesktop *desktop)
}
}
- for (SelContainer::const_iterator i=children.begin();i!=children.end();i++){
+ for (std::vector<SPObject*>::const_iterator i=children.begin();i!=children.end();i++){
Inkscape::XML::Node *repr = SP_OBJECT(*i)->getRepr();
repr->parent()->removeChild(repr);
group->addChild(repr,NULL);
diff --git a/src/selection.cpp b/src/selection.cpp
index 2e8251048..fd3b6abae 100644
--- a/src/selection.cpp
+++ b/src/selection.cpp
@@ -42,7 +42,9 @@
namespace Inkscape {
Selection::Selection(LayerModel *layers, SPDesktop *desktop) :
- _objs(SelContainer()),
+ _objs(std::list<SPObject*>()),
+ _objs_vector(std::vector<SPObject*>()),
+ _objs_set(std::set<SPObject*>()),
_reprs(std::vector<XML::Node*>()),
_items(std::vector<SPItem*>()),
_layers(layers),
@@ -145,7 +147,7 @@ bool Selection::includes(SPObject *obj) const {
g_return_val_if_fail(SP_IS_OBJECT(obj), FALSE);
- return ( find(_objs.begin(),_objs.end(),obj)!=_objs.end() );
+ return ( _objs_set.find(obj)!=_objs_set.end() );
}
void Selection::add(SPObject *obj, bool persist_selection_context/* = false */) {
@@ -178,6 +180,7 @@ void Selection::_add(SPObject *obj) {
_removeObjectAncestors(obj);
_objs.push_front(obj);
+ _objs_set.insert(obj);
add_3D_boxes_recursively(obj);
@@ -232,6 +235,7 @@ void Selection::_remove(SPObject *obj) {
remove_3D_boxes_recursively(obj);
_objs.remove(obj);
+ _objs_set.erase(obj);
}
void Selection::setList(std::vector<SPItem*> const &list) {
@@ -276,8 +280,15 @@ void Selection::clear() {
_emitChanged();
}
-SelContainer const &Selection::list() {
- return _objs;
+std::vector<SPObject*> const &Selection::list() {
+ if(!_objs_vector.empty())
+ return _objs_vector;
+
+ for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) {
+ _objs_vector.push_back(*iter);
+ }
+ return _objs_vector;
+
}
std::vector<SPItem*> const &Selection::itemList() {
@@ -285,7 +296,7 @@ std::vector<SPItem*> const &Selection::itemList() {
return _items;
}
- for ( SelContainer::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) {
+ for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) {
SPObject *obj=reinterpret_cast<SPObject *>(*iter);
if (SP_IS_ITEM(obj)) {
_items.push_back(SP_ITEM(obj));
@@ -470,7 +481,7 @@ std::vector<Inkscape::SnapCandidatePoint> Selection::getSnapPoints(SnapPreferenc
}
void Selection::_removeObjectDescendants(SPObject *obj) {
- for ( SelContainer::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) {
+ for ( std::list<SPObject*>::const_iterator iter=_objs.begin();iter!=_objs.end();iter++ ) {
SPObject *sel_obj=reinterpret_cast<SPObject *>(*iter);
SPObject *parent = sel_obj->parent;
while (parent) {
diff --git a/src/selection.h b/src/selection.h
index 2d5e7c34a..e40810ded 100644
--- a/src/selection.h
+++ b/src/selection.h
@@ -16,14 +16,10 @@
#include <vector>
#include <map>
#include <list>
+#include <set>
#include <stddef.h>
#include <sigc++/sigc++.h>
-#include <boost/multi_index_container.hpp>
-#include <boost/multi_index/ordered_index.hpp>
-#include <boost/multi_index/identity.hpp>
-#include <boost/multi_index/member.hpp>
-
#include "gc-managed.h"
#include "gc-finalized.h"
#include "gc-anchored.h"
@@ -254,7 +250,7 @@ public:
XML::Node *singleRepr();
/** Returns the list of selected objects. */
- std::list<SPObject*> const &list();
+ std::vector<SPObject*> const &list();
/** Returns the list of selected SPItems. */
std::vector<SPItem*> const &itemList();
/** Returns a list of the xml nodes of all selected objects. */
@@ -376,7 +372,9 @@ private:
/** Releases an active layer object that is being removed. */
void _releaseContext(SPObject *obj);
- mutable std::list<SPObject*> _objs;
+ mutable std::list<SPObject*> _objs; //to more efficiently remove arbitrary elements
+ mutable std::vector<SPObject*> _objs_vector; // to be returned by list();
+ mutable std::set<SPObject*> _objs_set; //to efficiently test if object is selected
mutable std::vector<XML::Node*> _reprs;
mutable std::vector<SPItem*> _items;
diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp
index d52fa038a..76843fd28 100644
--- a/src/sp-defs.cpp
+++ b/src/sp-defs.cpp
@@ -46,9 +46,8 @@ void SPDefs::update(SPCtx *ctx, guint flags) {
}
flags &= SP_OBJECT_MODIFIED_CASCADE;
- SelContainer l(this->childList(true));
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l(this->childList(true));
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *child = SP_OBJECT(*i);
if (flags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
child->updateDisplay(ctx, flags);
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index bf8f7a5a4..93a979287 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -244,9 +244,8 @@ void SPFilter::update(SPCtx *ctx, guint flags) {
childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
}
childflags &= SP_OBJECT_MODIFIED_CASCADE;
- SelContainer l(this->childList(true, SPObject::ActionUpdate));
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l(this->childList(true, SPObject::ActionUpdate));
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *child = SP_OBJECT (*i);
if( SP_IS_FILTER_PRIMITIVE( child ) ) {
child->updateDisplay(ctx, childflags);
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index f09a4ee47..8a40df5ed 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -171,9 +171,8 @@ void SPGroup::update(SPCtx *ctx, unsigned int flags) {
childflags |= SP_OBJECT_PARENT_MODIFIED_FLAG;
}
childflags &= SP_OBJECT_MODIFIED_CASCADE;
- SelContainer l=this->childList(true, SPObject::ActionUpdate);
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=this->childList(true, SPObject::ActionUpdate);
+ for(std::vector<SPObject*> ::const_iterator i=l.begin();i!=l.end();i++){
SPObject *child = SP_OBJECT (*i);
if (childflags || (child->uflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
@@ -216,9 +215,8 @@ void SPGroup::modified(guint flags) {
flags &= SP_OBJECT_MODIFIED_CASCADE;
- SelContainer l=this->childList(true);
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=this->childList(true);
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *child = SP_OBJECT (*i);
if (flags || (child->mflags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_CHILD_MODIFIED_FLAG))) {
@@ -291,8 +289,8 @@ Geom::OptRect SPGroup::bbox(Geom::Affine const &transform, SPItem::BBoxType bbox
Geom::OptRect bbox;
// TODO CPPIFY: replace this const_cast later
- SelContainer l=const_cast<SPGroup*>(this)->childList(false, SPObject::ActionBBox);
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=const_cast<SPGroup*>(this)->childList(false, SPObject::ActionBBox);
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *o = SP_OBJECT (*i);
SPItem *item = dynamic_cast<SPItem *>(o);
if (item && !item->isHidden()) {
@@ -305,9 +303,8 @@ Geom::OptRect SPGroup::bbox(Geom::Affine const &transform, SPItem::BBoxType bbox
}
void SPGroup::print(SPPrintContext *ctx) {
- SelContainer l=this->childList(false);
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=this->childList(false);
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *o = SP_OBJECT (*i);
SPItem *item = dynamic_cast<SPItem *>(o);
if (item) {
@@ -360,9 +357,8 @@ Inkscape::DrawingItem *SPGroup::show (Inkscape::Drawing &drawing, unsigned int k
}
void SPGroup::hide (unsigned int key) {
- SelContainer l=this->childList(false, SPObject::ActionShow);
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=this->childList(false, SPObject::ActionShow);
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *o = SP_OBJECT (*i);
SPItem *item = dynamic_cast<SPItem *>(o);
@@ -793,9 +789,8 @@ gint SPGroup::getItemCount() const {
void SPGroup::_showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags) {
Inkscape::DrawingItem *ac = NULL;
- SelContainer l=this->childList(false, SPObject::ActionShow);
- l.reverse();
- for(SelContainer::const_iterator i=l.begin();i!=l.end();i++){
+ std::vector<SPObject*> l=this->childList(false, SPObject::ActionShow);
+ for(std::vector<SPObject*>::const_iterator i=l.begin();i!=l.end();i++){
SPObject *o = SP_OBJECT (*i);
SPItem * child = dynamic_cast<SPItem *>(o);
if (child) {
diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index 3ea480f66..6cc5d7114 100644
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
@@ -382,14 +382,14 @@ void SPObject::changeCSS(SPCSSAttr *css, gchar const *attr)
sp_repr_css_change(this->getRepr(), css, attr);
}
-SelContainer SPObject::childList(bool add_ref, Action) {
- SelContainer l;
+std::vector<SPObject*> SPObject::childList(bool add_ref, Action) {
+ std::vector<SPObject*> l;
for ( SPObject *child = firstChild() ; child; child = child->getNext() ) {
if (add_ref) {
sp_object_ref (child);
}
- l.push_front(child);
+ l.push_back(child);
}
return l;
diff --git a/src/sp-object.h b/src/sp-object.h
index 858587611..1f3032a52 100644
--- a/src/sp-object.h
+++ b/src/sp-object.h
@@ -55,6 +55,7 @@ class SPObject;
#include <sigc++/functors/slot.h>
#include <sigc++/signal.h>
#include <list>
+#include <vector>
#include "version.h"
#include "util/forward-pointer-iterator.h"
@@ -335,10 +336,10 @@ public:
enum Action { ActionGeneral, ActionBBox, ActionUpdate, ActionShow };
/**
- * Retrieves the children as a GSList object, optionally ref'ing the children
+ * Retrieves the children as a std vector object, optionally ref'ing the children
* in the process, if add_ref is specified.
*/
- SelContainer childList(bool add_ref, Action action = ActionGeneral);
+ std::vector<SPObject*> childList(bool add_ref, Action action = ActionGeneral);
/**
* Append repr as child of this object.
diff --git a/src/sp-switch.cpp b/src/sp-switch.cpp
index 0090f1855..2c9427df8 100644
--- a/src/sp-switch.cpp
+++ b/src/sp-switch.cpp
@@ -55,13 +55,13 @@ SPObject *SPSwitch::_evaluateFirst() {
return first;
}
-SelContainer SPSwitch::_childList(bool add_ref, SPObject::Action action) {
+std::vector<SPObject*> SPSwitch::_childList(bool add_ref, SPObject::Action action) {
if ( action != SPObject::ActionGeneral ) {
return this->childList(add_ref, action);
}
SPObject *child = _evaluateFirst();
- SelContainer x;
+ std::vector<SPObject*> x;
if (NULL == child)
return x;
@@ -69,7 +69,7 @@ SelContainer SPSwitch::_childList(bool add_ref, SPObject::Action action) {
//g_object_ref (G_OBJECT (child));
sp_object_ref(child);
}
- x.push_front(child);
+ x.push_back(child);
return x;
}
@@ -110,8 +110,8 @@ void SPSwitch::_reevaluate(bool /*add_to_drawing*/) {
_releaseLastItem(_cached_item);
- SelContainer item_list = _childList(false, SPObject::ActionShow);
- for ( SelContainer::const_iterator iter=item_list.begin();iter!=item_list.end();iter++) {
+ std::vector<SPObject*> item_list = _childList(false, SPObject::ActionShow);
+ for ( std::vector<SPObject*>::const_reverse_iterator iter=item_list.rbegin();iter!=item_list.rend();iter++) {
SPObject *o = SP_OBJECT (*iter);
if ( !SP_IS_ITEM (o) ) {
continue;
@@ -144,9 +144,9 @@ void SPSwitch::_releaseLastItem(SPObject *obj)
void SPSwitch::_showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags) {
SPObject *evaluated_child = this->_evaluateFirst();
- SelContainer l = this->_childList(false, SPObject::ActionShow);
+ std::vector<SPObject*> l = this->_childList(false, SPObject::ActionShow);
- for ( SelContainer::const_iterator iter=l.begin();iter!=l.end();iter++) {
+ for ( std::vector<SPObject*>::const_reverse_iterator iter=l.rbegin();iter!=l.rend();iter++) {
SPObject *o = SP_OBJECT (*iter);
if (SP_IS_ITEM (o)) {
diff --git a/src/sp-switch.h b/src/sp-switch.h
index 6a83072e7..7152e1b82 100644
--- a/src/sp-switch.h
+++ b/src/sp-switch.h
@@ -29,7 +29,7 @@ public:
void resetChildEvaluated() { _reevaluate(); }
- SelContainer _childList(bool add_ref, SPObject::Action action);
+ std::vector<SPObject*> _childList(bool add_ref, SPObject::Action action);
virtual void _showChildren (Inkscape::Drawing &drawing, Inkscape::DrawingItem *ai, unsigned int key, unsigned int flags);
SPObject *_evaluateFirst();
diff --git a/src/ui/dialog/grid-arrange-tab.cpp b/src/ui/dialog/grid-arrange-tab.cpp
index d62032e9d..10498b0f9 100644
--- a/src/ui/dialog/grid-arrange-tab.cpp
+++ b/src/ui/dialog/grid-arrange-tab.cpp
@@ -48,7 +48,7 @@
* 0 *elem1 == *elem2
* >0 *elem1 goes after *elem2
*/
-static int sp_compare_x_position(SPItem *first, SPItem *second)
+static bool sp_compare_x_position(SPItem *first, SPItem *second)
{
using Geom::X;
using Geom::Y;
@@ -58,7 +58,7 @@ static int sp_compare_x_position(SPItem *first, SPItem *second)
if ( !a || !b ) {
// FIXME?
- return 0;
+ return false;
}
double const a_height = a->dimensions()[Y];
@@ -76,44 +76,38 @@ static int sp_compare_x_position(SPItem *first, SPItem *second)
}
if (!a_in_b_vert) {
- return -1;
+ return true;
}
if (a_in_b_vert && a->min()[X] > b->min()[X]) {
- return 1;
+ return false;
}
if (a_in_b_vert && a->min()[X] < b->min()[X]) {
- return -1;
+ return true;
}
- return 0;
+ return false;
}
/*
* Sort items by their y co-ordinates.
*/
-static int sp_compare_y_position(SPItem *first, SPItem *second)
+static bool sp_compare_y_position(SPItem *first, SPItem *second)
{
Geom::OptRect a = first->documentVisualBounds();
Geom::OptRect b = second->documentVisualBounds();
if ( !a || !b ) {
// FIXME?
- return 0;
+ return false;
}
if (a->min()[Geom::Y] > b->min()[Geom::Y]) {
- return 1;
+ return false;
}
if (a->min()[Geom::Y] < b->min()[Geom::Y]) {
- return -1;
+ return true;
}
- return 0;
-}
-static bool sp_compare_y_position_obj(SPObject *first, SPObject *second){
- return sp_compare_y_position(static_cast<SPItem*>(first),static_cast<SPItem*>(second))<0;
-}
-static bool sp_compare_x_position_obj(SPObject *first, SPObject *second){
- return sp_compare_x_position(static_cast<SPItem*>(first),static_cast<SPItem*>(second))<0;
+ return false;
}
diff --git a/src/ui/dialog/tags.cpp b/src/ui/dialog/tags.cpp
index c2df5fc1c..bd34c7c66 100644
--- a/src/ui/dialog/tags.cpp
+++ b/src/ui/dialog/tags.cpp
@@ -371,8 +371,8 @@ void TagsPanel::_objectsSelected( Selection *sel ) {
_selectedConnection.block();
_tree.get_selection()->unselect_all();
- SelContainer tmp=sel->list();
- for(SelContainer::const_iterator i=tmp.begin();i!=tmp.end();i++)
+ std::vector<SPObject*> tmp=sel->list();
+ for(std::vector<SPObject*>::const_iterator i=tmp.begin();i!=tmp.end();i++)
{
SPObject *obj = reinterpret_cast<SPObject *>(*i);
_store->foreach(sigc::bind<SPObject *>( sigc::mem_fun(*this, &TagsPanel::_checkForSelected), obj));
diff --git a/src/ui/tools/eraser-tool.cpp b/src/ui/tools/eraser-tool.cpp
index 520b93e72..b61a108f0 100644
--- a/src/ui/tools/eraser-tool.cpp
+++ b/src/ui/tools/eraser-tool.cpp
@@ -711,7 +711,7 @@ void EraserTool::set_to_accumulated() {
if ( !selection->isEmpty() ) {
// If the item was not completely erased, track the new remainder.
std::vector<SPItem*> nowSel(selection->itemList());
- for (std::vector<SPItem*>::const_iterator i2 = nowSel.begin();i!=nowSel.end();i2++) {
+ for (std::vector<SPItem*>::const_iterator i2 = nowSel.begin();i2!=nowSel.end();i2++) {
remainingItems.push_back(SP_ITEM(*i2));
}
}
diff --git a/src/xml/repr-util.cpp b/src/xml/repr-util.cpp
index 12280ea5a..447f2ff40 100644
--- a/src/xml/repr-util.cpp
+++ b/src/xml/repr-util.cpp
@@ -259,7 +259,7 @@ gchar const *sp_xml_ns_prefix_uri(gchar const *prefix)
* -1 first object's position is less than the second
* @todo Rewrite this function's description to be understandable
*/
-int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second)
+bool sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second)
{
int p1, p2;
if (first->parent() == second->parent()) {
@@ -276,9 +276,9 @@ int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::No
g_assert(ancestor != NULL);
if (ancestor == first) {
- return 1;
+ return false;
} else if (ancestor == second) {
- return -1;
+ return true;
} else {
Inkscape::XML::Node const *to_first = AncetreFils(first, ancestor);
Inkscape::XML::Node const *to_second = AncetreFils(second, ancestor);
@@ -288,9 +288,9 @@ int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::No
}
}
- if (p1 > p2) return 1;
- if (p1 < p2) return -1;
- return 0;
+ if (p1 > p2) return false;
+ if (p1 < p2) return true;
+ return false;
/* effic: Assuming that the parent--child relationship is consistent
(i.e. that the parent really does contain first and second among
diff --git a/src/xml/repr.h b/src/xml/repr.h
index e1d7fdfd6..c96560a98 100644
--- a/src/xml/repr.h
+++ b/src/xml/repr.h
@@ -118,7 +118,8 @@ unsigned sp_repr_set_svg_double(Inkscape::XML::Node *repr, char const *key, doub
unsigned sp_repr_set_point(Inkscape::XML::Node *repr, char const *key, Geom::Point const & val);
unsigned sp_repr_get_point(Inkscape::XML::Node *repr, char const *key, Geom::Point *val);
-int sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second);
+//c++-style comparison : returns (bool)(a<b)
+bool sp_repr_compare_position(Inkscape::XML::Node const *first, Inkscape::XML::Node const *second);
// Searching
/**