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);