From f9fc27683e3e4451e69fc4ab9d954a0a72a7ed89 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 17 Jul 2013 12:16:12 +0200 Subject: [PATCH 1/3] selection behavior partially restored --- src/board/UBBoardView.cpp | 41 ++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index c9bd7e6b..e217d63c 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -91,7 +91,6 @@ UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool , mMultipleSelectionIsEnabled(false) , bIsControl(isControl) , bIsDesktop(isDesktop) - , mRubberBandInPlayMode(false) //enables rubberband with play tool { init (); @@ -989,10 +988,6 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) if (!movingItem && !mController->cacheIsVisible()) mLongPressTimer.start(); - if(mUBRubberBand) { - mUBRubberBand->hide(); - } - handleItemMousePress(event); event->accept(); break; @@ -1006,9 +1001,7 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) QListIterator it (scene ()->items (fuzzyRect)); while (it.hasNext () && !foundTextItem) - { foundTextItem = qgraphicsitem_cast(it.next ()); - } if (foundTextItem) { @@ -1109,7 +1102,7 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event) return; } - bool rubberMove = currentTool != (UBStylusTool::Play || mRubberBandInPlayMode) + bool rubberMove = (currentTool != (UBStylusTool::Play)) && (mMouseButtonIsPressed || mTabletStylusIsPressed) && !movingItem; @@ -1172,13 +1165,13 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event) case UBStylusTool::Text : case UBStylusTool::Capture : { - if (mRubberBand - && (mIsCreatingTextZone || mIsCreatingSceneGrabZone)) { + if (mRubberBand && (mIsCreatingTextZone || mIsCreatingSceneGrabZone)) { mRubberBand->setGeometry(QRect(mMouseDownPos, event->pos()).normalized()); event->accept(); - } else { - QGraphicsView::mouseMoveEvent (event); } + else + QGraphicsView::mouseMoveEvent (event); + } break; default: @@ -1266,10 +1259,6 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) else bReleaseIsNeed = true; - if (mUBRubberBand && mUBRubberBand->isVisible()) { - mUBRubberBand->hide(); - } - if (bReleaseIsNeed) { QGraphicsView::mouseReleaseEvent (event); @@ -1297,6 +1286,7 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) suspendedMousePressEvent = NULL; } } + QGraphicsView::mouseReleaseEvent (event); } else if (currentTool == UBStylusTool::Text) @@ -1368,10 +1358,6 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) else bReleaseIsNeed = true; - if (mUBRubberBand && mUBRubberBand->isVisible()) { - mUBRubberBand->hide(); - } - if (bReleaseIsNeed) { QGraphicsView::mouseReleaseEvent (event); @@ -1399,8 +1385,6 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) } else if (currentTool == UBStylusTool::Capture) { - if (mRubberBand) - mRubberBand->hide (); if (scene () && mRubberBand && mIsCreatingSceneGrabZone && mRubberBand->geometry ().width () > 16) { @@ -1428,6 +1412,19 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) } } + + if (mUBRubberBand) { + mUBRubberBand->hide(); + delete mUBRubberBand; + mUBRubberBand = NULL; + } + + if (mRubberBand) { + mRubberBand->hide(); + delete mRubberBand; + mRubberBand = NULL; + } + mMouseButtonIsPressed = false; mPendingStylusReleaseEvent = false; mTabletStylusIsPressed = false; From 29a36c46ab6c63b5957beeb07ea27d84fadc28a8 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 17 Jul 2013 13:12:49 +0200 Subject: [PATCH 2/3] hand tool behavior is correct. Fixed issue: 67 --- src/board/UBBoardView.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index e217d63c..0df26569 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -1084,7 +1084,7 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event) switch (currentTool) { case UBStylusTool::Hand : { - if (!mMouseButtonIsPressed && mTabletStylusIsPressed) { + if (!mMouseButtonIsPressed && !mTabletStylusIsPressed) { break; } QPointF eventPosition = event->posF (); From 1afbc194fee0607ecc2b29573695d876de42b48e Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 17 Jul 2013 14:07:40 +0200 Subject: [PATCH 3/3] selection take care about two special classes text and media item. Fixed issue: 30 --- src/board/UBBoardView.cpp | 15 ++++++++------- src/domain/UBGraphicsMediaItem.cpp | 12 ++++++++++++ src/domain/UBGraphicsMediaItem.h | 3 +++ src/domain/UBGraphicsTextItem.cpp | 9 +++++++++ src/domain/UBGraphicsTextItem.h | 2 ++ 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 0df26569..003af1f4 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -534,12 +534,7 @@ Here we determines cases when items should to get mouse press event at pressing case UBGraphicsTriangle::Type: case UBGraphicsCompass::Type: case UBGraphicsCache::Type: - return true; - case UBGraphicsDelegateFrame::Type: - case QGraphicsSvgItem::Type: - return true; - case DelegateButton::Type: return true; @@ -1233,7 +1228,6 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) { if (isUBItem(movingItem) && DelegateButton::Type != movingItem->type() && - QGraphicsSvgItem::Type != movingItem->type() && UBGraphicsDelegateFrame::Type != movingItem->type() && UBGraphicsCache::Type != movingItem->type() && QGraphicsWebView::Type != movingItem->type() && // for W3C widgets as Tools. @@ -1250,7 +1244,14 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) if (movingItem->isSelected()) bReleaseIsNeed = true; - movingItem->setSelected(true); + UBGraphicsTextItem* textItem = dynamic_cast(movingItem); + UBGraphicsMediaItem* movieItem = dynamic_cast(movingItem); + if(textItem) + textItem->setSelected(true); + else if(movieItem) + movieItem->setSelected(true); + else + movingItem->setSelected(true); } } diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index cec3c15e..71c8428f 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -121,6 +121,18 @@ UBGraphicsMediaItem::~UBGraphicsMediaItem() } +void UBGraphicsMediaItem::setSelected(bool selected) +{ + if(selected){ + Delegate()->createControls(); + if (mediaType_Audio == mMediaType) + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::ResizingHorizontally); + else + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); + } + UBGraphicsProxyWidget::setSelected(selected); +} + QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVariant &value) { if ((change == QGraphicsItem::ItemEnabledChange) diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index 7b0eeaf1..f69516fe 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -91,6 +91,9 @@ public: virtual void setSourceUrl(const QUrl &pSourceUrl); + void setSelected(bool selected); + + public slots: void toggleMute(); diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 5137eeee..72a30215 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -77,6 +77,15 @@ UBGraphicsTextItem::~UBGraphicsTextItem() { } +void UBGraphicsTextItem::setSelected(bool selected) +{ + if(selected){ + Delegate()->createControls(); + Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); + } + QGraphicsTextItem::setSelected(selected); +} + QVariant UBGraphicsTextItem::itemChange(GraphicsItemChange change, const QVariant &value) { QVariant newValue = value; diff --git a/src/domain/UBGraphicsTextItem.h b/src/domain/UBGraphicsTextItem.h index 637021e8..c4761876 100644 --- a/src/domain/UBGraphicsTextItem.h +++ b/src/domain/UBGraphicsTextItem.h @@ -92,6 +92,8 @@ class UBGraphicsTextItem : public QGraphicsTextItem, public UBItem, public UBRes virtual void setUuid(const QUuid &pUuid); void setHtml(const QString &text); + void setSelected(bool selected); + signals: void textUndoCommandAdded(UBGraphicsTextItem *textItem);