From aab1cfade3c81c3473cb928612bba7b7997f0511 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 6 Mar 2017 14:04:05 +0100 Subject: [PATCH 1/2] Fix duplicated points selection --- .../Scene_points_with_normal_item.cpp | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp index bc841281536..16bdfcf525d 100644 --- a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp @@ -467,9 +467,28 @@ void Scene_points_with_normal_item::resetSelection() void Scene_points_with_normal_item::selectDuplicates() { std::set unique_points; - for (Point_set::iterator ptit = d->m_points->begin(); ptit!= d->m_points->end();++ptit ) + std::vector unselected, selected; + for (Point_set::iterator ptit = d->m_points->begin(); ptit!= d->m_points->end(); ++ ptit) if ( !unique_points.insert(d->m_points->point(*ptit)).second) - d->m_points->select(ptit); + selected.push_back (*ptit); + else + unselected.push_back (*ptit); + + for (std::size_t i = 0; i < unselected.size(); ++ i) + *(d->m_points->begin() + i) = unselected[i]; + for (std::size_t i = 0; i < selected.size(); ++ i) + *(d->m_points->begin() + (unselected.size() + i)) = selected[i]; + + if (selected.empty ()) + { + d->m_points->unselect_all(); + } + else + { + d->m_points->set_first_selected + (d->m_points->begin() + unselected.size()); + } + invalidateOpenGLBuffers(); Q_EMIT itemChanged(); } From a29c9a8d6012fabfa4d69ed8da3fc08825479789 Mon Sep 17 00:00:00 2001 From: Simon Giraudot Date: Mon, 27 Mar 2017 07:45:14 +0200 Subject: [PATCH 2/2] Fix identation --- .../Polyhedron/Scene_points_with_normal_item.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp index 16bdfcf525d..6ea005616cc 100644 --- a/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_points_with_normal_item.cpp @@ -480,14 +480,14 @@ void Scene_points_with_normal_item::selectDuplicates() *(d->m_points->begin() + (unselected.size() + i)) = selected[i]; if (selected.empty ()) - { - d->m_points->unselect_all(); - } + { + d->m_points->unselect_all(); + } else - { - d->m_points->set_first_selected - (d->m_points->begin() + unselected.size()); - } + { + d->m_points->set_first_selected + (d->m_points->begin() + unselected.size()); + } invalidateOpenGLBuffers(); Q_EMIT itemChanged();