From 8a4342e6e1daa5c37869e5137a30471c2b04df5d Mon Sep 17 00:00:00 2001 From: wandererfan Date: Wed, 18 Sep 2024 12:30:40 -0400 Subject: [PATCH] [TD]fix BrokenView selection (fix #16567) --- src/Mod/TechDraw/Gui/Command.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index e6099ddf04..87ef3d3bf6 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -559,6 +559,10 @@ void CmdTechDrawBrokenView::activated(int iMsg) xShapesFromBase = dvp->XSource.getValues(); } + auto doc = getDocument(); + if (dvp) { + doc = dvp->getDocument(); + } // get the shape objects from the selection std::vector shapes; @@ -566,16 +570,17 @@ void CmdTechDrawBrokenView::activated(int iMsg) App::DocumentObject* faceObj = nullptr; std::string faceName; getSelectedShapes(this, shapes, xShapes, faceObj, faceName); - shapes.insert(shapes.end(), shapesFromBase.begin(), shapesFromBase.end()); - shapes.insert(xShapes.end(), xShapesFromBase.begin(), xShapesFromBase.end()); - if (!dvp || (shapes.empty() && xShapes.empty())) { + // we need either a base view (dvp) or some shape objects in the selection + if (!dvp && (shapes.empty() && xShapes.empty())) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Empty selection"), QObject::tr("Please select objects to break or a base view and break definition objects.")); return; } - auto doc = dvp->getDocument(); + shapes.insert(shapes.end(), shapesFromBase.begin(), shapesFromBase.end()); + shapes.insert(xShapes.end(), xShapesFromBase.begin(), xShapesFromBase.end()); + // pick the Break objects out of the selected pile std::vector selection = getSelection().getSelectionEx(