summaryrefslogtreecommitdiffstats
path: root/src/vanishing-point.cpp
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2015-04-29 21:14:01 +0000
committerMarc Jeanmougin <mc@M0nst3r.bouyguesbox.fr>2015-04-29 21:14:01 +0000
commit9b7af8caac08ad42a48214518bc004e258eb5873 (patch)
treedcaaac56217eb5da334ab420f5e791cf7eb70f23 /src/vanishing-point.cpp
parentBetter solution picking (diff)
parentcorrected test file (diff)
downloadinkscape-9b7af8caac08ad42a48214518bc004e258eb5873.tar.gz
inkscape-9b7af8caac08ad42a48214518bc004e258eb5873.zip
bzr merge lp:~mc.../inkscape/SelContainer
The main change of this branch is that the container for selections is now a std::vector and not a GSList. This change propagates in most of the codebase. Normally, there are no changes of semantics, except the following: -> childList is now in the intuitive order (childList()[0] is now firstChild) -> sp_selection_paste_impl is now in the opposite order (change is local to selection-chemistry.cpp, and simplify a few things there) -> selection.setReprList now takes the list in the opposite order. It was always the case (the list was always reversed before handing to it) -> a few comparison functions now work "the c++ way": the C way was to return -1 if a<b, 0 if a==b and 1 if a>b, now they return (bool)(a<b) so they can be used with std::sort (bzr r14074)
Diffstat (limited to 'src/vanishing-point.cpp')
-rw-r--r--src/vanishing-point.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/vanishing-point.cpp b/src/vanishing-point.cpp
index b62aacbc5..46f895c06 100644
--- a/src/vanishing-point.cpp
+++ b/src/vanishing-point.cpp
@@ -256,8 +256,9 @@ VanishingPoint::set_pos(Proj::Pt2 const &pt) {
std::list<SPBox3D *>
VanishingPoint::selectedBoxes(Inkscape::Selection *sel) {
std::list<SPBox3D *> sel_boxes;
- for (GSList const* i = sel->itemList(); i != NULL; i = i->next) {
- SPItem *item = static_cast<SPItem *>(i->data);
+ std::vector<SPItem*> itemlist=sel->itemList();
+ for (std::vector<SPItem*>::const_iterator i=itemlist.begin();i!=itemlist.end();i++) {
+ SPItem *item = *i;
SPBox3D *box = dynamic_cast<SPBox3D *>(item);
if (box && this->hasBox(box)) {
sel_boxes.push_back(box);
@@ -395,8 +396,9 @@ VPDragger::VPsOfSelectedBoxes() {
VanishingPoint *vp;
// FIXME: Should we take the selection from the parent VPDrag? I guess it shouldn't make a difference.
Inkscape::Selection *sel = SP_ACTIVE_DESKTOP->getSelection();
- for (GSList const* i = sel->itemList(); i != NULL; i = i->next) {
- SPItem *item = static_cast<SPItem *>(i->data);
+ std::vector<SPItem*> itemlist=sel->itemList();
+ for (std::vector<SPItem*>::const_iterator i=itemlist.begin();i!=itemlist.end();i++) {
+ SPItem *item = *i;
SPBox3D *box = dynamic_cast<SPBox3D *>(item);
if (box) {
vp = this->findVPWithBox(box);
@@ -577,8 +579,9 @@ VPDrag::updateDraggers ()
g_return_if_fail (this->selection != NULL);
- for (GSList const* i = this->selection->itemList(); i != NULL; i = i->next) {
- SPItem *item = static_cast<SPItem *>(i->data);
+ std::vector<SPItem*> itemlist=this->selection->itemList();
+ for (std::vector<SPItem*>::const_iterator i=itemlist.begin();i!=itemlist.end();i++) {
+ SPItem *item = *i;
SPBox3D *box = dynamic_cast<SPBox3D *>(item);
if (box) {
VanishingPoint vp;
@@ -609,8 +612,9 @@ VPDrag::updateLines ()
g_return_if_fail (this->selection != NULL);
- for (GSList const* i = this->selection->itemList(); i != NULL; i = i->next) {
- SPItem *item = static_cast<SPItem *>(i->data);
+ std::vector<SPItem*> itemlist=this->selection->itemList();
+ for (std::vector<SPItem*>::const_iterator i=itemlist.begin();i!=itemlist.end();i++) {
+ SPItem *item = *i;
SPBox3D *box = dynamic_cast<SPBox3D *>(item);
if (box) {
this->drawLinesForFace (box, Proj::X);
@@ -626,11 +630,11 @@ VPDrag::updateBoxHandles ()
// FIXME: Is there a way to update the knots without accessing the
// (previously) statically linked function KnotHolder::update_knots?
- GSList *sel = (GSList *) selection->itemList();
- if (!sel)
+ std::vector<SPItem*> sel = selection->itemList();
+ if (sel.empty())
return; // no selection
- if (g_slist_length (sel) > 1) {
+ if (sel.size() > 1) {
// Currently we only show handles if a single box is selected
return;
}