diff --git a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp index 4bd186264a..f19ffbd650 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherElements.cpp @@ -512,6 +512,8 @@ void TaskSketcherElements::on_listWidgetElements_itemSelectionChanged(void) bool block = this->blockConnection(true); // avoid to be notified by itself Gui::Selection().clearSelection(); + std::vector elementSubNames; + for (int i=0;ilistWidgetElements->count(); i++) { ElementItem * ite=static_cast(ui->listWidgetElements->item(i)); @@ -566,7 +568,7 @@ void TaskSketcherElements::on_listWidgetElements_itemSelectionChanged(void) if (ite->isLineSelected) { ss << "Edge" << ite->ElementNbr + 1; - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); + elementSubNames.push_back(ss.str()); } if (ite->isStartingPointSelected) { @@ -574,7 +576,7 @@ void TaskSketcherElements::on_listWidgetElements_itemSelectionChanged(void) vertex= ite->StartingVertex; if (vertex!=-1) { ss << "Vertex" << vertex + 1; - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); + elementSubNames.push_back(ss.str()); } } @@ -583,7 +585,7 @@ void TaskSketcherElements::on_listWidgetElements_itemSelectionChanged(void) vertex= ite->EndVertex; if (vertex!=-1) { ss << "Vertex" << vertex + 1; - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); + elementSubNames.push_back(ss.str()); } } @@ -592,11 +594,15 @@ void TaskSketcherElements::on_listWidgetElements_itemSelectionChanged(void) vertex= ite->MidVertex; if (vertex!=-1) { ss << "Vertex" << vertex + 1; - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); + elementSubNames.push_back(ss.str()); } } } + if (!elementSubNames.empty()) { + Gui::Selection().addSelections(doc_name.c_str(), obj_name.c_str(), elementSubNames); + } + this->blockConnection(block); ui->listWidgetElements->blockSignals(false);