diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 207ac6ce..2e8cd802 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -169,7 +169,7 @@ void UBBoardController::setupViews() mControlLayout = new QHBoxLayout(mControlContainer); mControlLayout->setContentsMargins(0, 0, 0, 0); - mControlView = new UBBoardView(this, mControlContainer, true); + mControlView = new UBBoardView(this, mControlContainer, true, false); mControlView->setInteractive(true); mControlView->setMouseTracking(true); diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 37c2fa15..cfc93094 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -65,7 +65,7 @@ #include "core/memcheck.h" -UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool pIsControl) +UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool isControl, bool isDesktop) : QGraphicsView (pParent) , mController (pController) , mIsCreatingTextZone (false) @@ -75,7 +75,8 @@ UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool , mLongPressInterval(1000) , mIsDragInProgress(false) , mMultipleSelectionIsEnabled(false) -, isControl(pIsControl) +, bIsControl(isControl) +, bIsDesktop(isDesktop) , mRubberBandInPlayMode(false) //enables rubberband with play tool { init (); @@ -86,14 +87,15 @@ UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent, bool mLongPressTimer.setSingleShot(true); } -UBBoardView::UBBoardView (UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent, bool pIscontrol) +UBBoardView::UBBoardView (UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent, bool isControl, bool isDesktop) : QGraphicsView (pParent) , mController (pController) , suspendedMousePressEvent(NULL) , mLongPressInterval(1000) , mIsDragInProgress(false) , mMultipleSelectionIsEnabled(false) -, isControl(pIscontrol) +, bIsControl(isControl) +, bIsDesktop(isDesktop) { init (); @@ -850,7 +852,7 @@ void UBBoardView::longPressEvent() void UBBoardView::mousePressEvent (QMouseEvent *event) { - if (!isControl) { + if (!bIsControl && !bIsDesktop) { event->ignore(); return; } @@ -896,6 +898,10 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) } else if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) { + if (bIsDesktop) { + event->ignore(); + return; + } connect(&mLongPressTimer, SIGNAL(timeout()), this, SLOT(longPressEvent())); if (!movingItem && !mController->cacheIsVisible()) mLongPressTimer.start(); @@ -1017,6 +1023,11 @@ UBBoardView::mouseMoveEvent (QMouseEvent *event) return; } + if (bIsDesktop) { + event->ignore(); + return; + } + if (currentTool != UBStylusTool::Play || mRubberBandInPlayMode) { if (!movingItem && (mMouseButtonIsPressed || mTabletStylusIsPressed) && mUBRubberBand && mUBRubberBand->isVisible()) { @@ -1099,6 +1110,11 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event) if (currentTool == UBStylusTool::Selector) { + if (bIsDesktop) { + event->ignore(); + return; + } + bool bReleaseIsNeed = true; if (movingItem != determineItemToPress(scene()->itemAt(this->mapToScene(event->posF().toPoint())))) { @@ -1161,6 +1177,11 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event) } else if (currentTool == UBStylusTool::Play) { + if (bIsDesktop) { + event->ignore(); + return; + } + if (mWidgetMoved) { movingItem = NULL; diff --git a/src/board/UBBoardView.h b/src/board/UBBoardView.h index 5c486a30..5374104c 100644 --- a/src/board/UBBoardView.h +++ b/src/board/UBBoardView.h @@ -31,8 +31,8 @@ class UBBoardView : public QGraphicsView public: - UBBoardView(UBBoardController* pController, QWidget* pParent = 0, bool pIsControl = false); - UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0, bool pIscontrol = false); + UBBoardView(UBBoardController* pController, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false); + UBBoardView(UBBoardController* pController, int pStartLayer, int pEndLayer, QWidget* pParent = 0, bool isControl = false, bool isDesktop = false); virtual ~UBBoardView(); UBGraphicsScene* scene(); @@ -153,7 +153,8 @@ class UBBoardView : public QGraphicsView bool mIsDragInProgress; bool mMultipleSelectionIsEnabled; - bool isControl; + bool bIsControl; + bool bIsDesktop; bool mRubberBandInPlayMode; static bool hasSelectedParents(QGraphicsItem * item); diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index d4ae1e75..aabc8381 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -65,7 +65,7 @@ UBDesktopAnnotationController::UBDesktopAnnotationController(QObject *parent, UB , mDesktopStylusTool(UBDrawingController::drawingController()->stylusTool()) { - mTransparentDrawingView = new UBBoardView(UBApplication::boardController, static_cast(0), true); // deleted in UBDesktopAnnotationController::destructor + mTransparentDrawingView = new UBBoardView(UBApplication::boardController, static_cast(0), false, true); // deleted in UBDesktopAnnotationController::destructor mTransparentDrawingView->setAttribute(Qt::WA_TranslucentBackground, true); #ifdef Q_WS_MAC mTransparentDrawingView->setAttribute(Qt::WA_MacNoShadow, true);