From afebe07514de872004c7a041ff0cf0c0fa3ff2b0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 2 May 2022 17:19:49 +0200 Subject: [PATCH] Part: optimize hasShapesInSelection() by avoiding performing a possibly expensive transformation See also: https://forum.freecadweb.org/viewtopic.php?p=592445#p592445 --- src/Mod/Part/Gui/Command.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index a201714346..05a308d668 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -277,7 +277,8 @@ bool hasShapesInSelection() bool hasShapes = false; std::vector docobjs = Gui::Selection().getObjectsOfType(App::DocumentObject::getClassTypeId()); for (std::vector::iterator it = docobjs.begin(); it != docobjs.end(); ++it) { - if (!Part::Feature::getTopoShape(*it).isNull()) { + // Only check for the existence of a shape but don't perform a transformation + if (!Part::Feature::getTopoShape(*it, nullptr, false, nullptr, nullptr, true, false, false).isNull()) { hasShapes = true; break; } @@ -1302,7 +1303,7 @@ void CmdPartReverseShape::activated(int iMsg) bool CmdPartReverseShape::isActive(void) { - return PartGui::getShapesFromSelection().size() > 0; + return PartGui::hasShapesInSelection(); } //===========================================================================