diff --git a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp
index 01e6446265..4c1c911495 100644
--- a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp
+++ b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp
@@ -1463,7 +1463,7 @@ CmdTechDrawExtensionLockUnlockView::CmdTechDrawExtensionLockUnlockView()
sGroup = QT_TR_NOOP("TechDraw");
sMenuText = QT_TR_NOOP("Lock/Unlock View");
sToolTipText = QT_TR_NOOP("Lock or unlock the position of a view:
\
-- Select a single view
\
+- Select view(s)
\
- Click this tool");
sWhatsThis = "TechDraw_ExtensionLockUnlockView";
sStatusTip = sMenuText;
@@ -1472,18 +1472,22 @@ CmdTechDrawExtensionLockUnlockView::CmdTechDrawExtensionLockUnlockView()
void CmdTechDrawExtensionLockUnlockView::activated(int iMsg)
{
- // lock/unlock a selected view
Q_UNUSED(iMsg);
- std::vector selection;
- TechDraw::DrawViewPart* objFeat{nullptr};
- if (!_checkSel(this, selection, objFeat, QT_TRANSLATE_NOOP("Command","TechDraw Lock/Unlock View"))) {
+ std::vector selection = getSelection().getSelectionEx();
+
+ if (selection.empty()) {
return;
}
+
Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Lock/Unlock View"));
- if (objFeat->isDerivedFrom()) {
- bool lockPosition = objFeat->LockPosition.getValue();
- lockPosition = !lockPosition;
- objFeat->LockPosition.setValue(lockPosition);
+ for (auto& sel : selection) {
+ auto* obj = static_cast(sel.getObject());
+
+ if (obj->isDerivedFrom()) {
+ bool lockPosition = obj->LockPosition.getValue();
+ lockPosition = !lockPosition;
+ obj->LockPosition.setValue(lockPosition);
+ }
}
Gui::Command::commitCommand();
}