From 435d06ab4503d845c6e348c92caf2fd6f3371217 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 10 Mar 2019 18:01:25 +0100 Subject: [PATCH] keep selection order with Selection.getSelection() --- src/Gui/Selection.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index 45a9f4a397..44b6b7e581 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -1246,11 +1246,14 @@ PyObject *SelectionSingleton::sGetSelection(PyObject * /*self*/, PyObject *args) try { std::set noduplicates; + std::vector selectedObjects; // keep the order of selection Py::List list; for (std::vector::iterator it = sel.begin(); it != sel.end(); ++it) { - noduplicates.insert(it->pObject); + if (noduplicates.insert(it->pObject).second) { + selectedObjects.push_back(it->pObject); + } } - for (std::set::iterator it = noduplicates.begin(); it != noduplicates.end(); ++it) { + for (std::vector::iterator it = selectedObjects.begin(); it != selectedObjects.end(); ++it) { list.append(Py::asObject((*it)->getPyObject())); } return Py::new_reference_to(list);