From e2a0570921b695352ad70753878958fdf83c06d1 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 13 May 2025 14:51:29 +0200 Subject: [PATCH] TechDraw: Lock multiple views --- src/Mod/TechDraw/Gui/CommandExtensionPack.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) 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(); }