diff --git a/src/domain/UBSelectionFrame.cpp b/src/domain/UBSelectionFrame.cpp index ed3cbbd3..0ebc912d 100644 --- a/src/domain/UBSelectionFrame.cpp +++ b/src/domain/UBSelectionFrame.cpp @@ -111,9 +111,15 @@ void UBSelectionFrame::setEnclosedItems(const QList pGraphicsIte QRegion resultRegion; UBGraphicsFlags resultFlags; mEnclosedtems.clear(); + + // If at least one of the enclosed items is locked, the entire selection is + // considered to be locked. + mIsLocked = false; + foreach (QGraphicsItem *nextItem, pGraphicsItems) { UBGraphicsItemDelegate *nextDelegate = UBGraphicsItem::Delegate(nextItem); if (nextDelegate) { + mIsLocked = (mIsLocked || nextDelegate->isLocked()); mEnclosedtems.append(nextDelegate); resultRegion |= nextItem->boundingRegion(nextItem->sceneTransform()); resultFlags |= nextDelegate->ubflags(); @@ -129,6 +135,14 @@ void UBSelectionFrame::setEnclosedItems(const QList pGraphicsIte if (resultRect.isEmpty()) { hide(); } + + if (mIsLocked) { + QColor baseColor = UBSettings::paletteColor; + baseColor.setAlphaF(baseColor.alphaF() / 3); + setLocalBrush(QBrush(baseColor)); + } + else + setLocalBrush(QBrush(UBSettings::paletteColor)); } void UBSelectionFrame::updateRect() @@ -168,6 +182,9 @@ void UBSelectionFrame::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBSelectionFrame::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { + if (mIsLocked) + return; + QPointF dp = event->pos() - mPressedPos; QPointF rotCenter = mapToScene(rect().center()); diff --git a/src/domain/UBSelectionFrame.h b/src/domain/UBSelectionFrame.h index 47d482a6..cda1f5f0 100644 --- a/src/domain/UBSelectionFrame.h +++ b/src/domain/UBSelectionFrame.h @@ -103,6 +103,8 @@ private: QPointF mLastTranslateOffset; qreal mRotationAngle; + bool mIsLocked; + QList mButtons; DelegateButton *mDeleteButton;