From 002a5fefc63f830dc95eddd72ba5e59efeb5b1b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fauconnier?= Date: Mon, 15 Nov 2021 10:22:05 +0100 Subject: [PATCH] ruler and triangle were no longer receiving mouse move events --- src/board/UBBoardView.cpp | 29 +++++++++++++++++++++++++++++ src/tools/UBGraphicsAxes.cpp | 1 - src/tools/UBGraphicsRuler.cpp | 6 ++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 147b78eb..99402ca9 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -1243,6 +1243,35 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event) if (!mTabletStylusIsPressed && scene()) { scene()->inputDeviceMove(mapToScene(UBGeometryUtils::pointConstrainedInRect(event->pos(), rect())) , mMouseButtonIsPressed); } + if (UBDrawingController::drawingController()->isDrawingTool()) + { + QGraphicsItem* item = scene()->itemAt(mapToScene(event->pos()), QTransform()); + if (item) + { + //if showMarkerPreviewCircle, showPenPreviewCircle or showEraserPreviewCircle is true, then the topmost visible item under the mouse is the preview circle + QGraphicsEllipseItem* circle = dynamic_cast(scene()->itemAt(mapToScene(event->pos()), QTransform())); + if (circle) + { + circle->setVisible(false); + item = scene()->itemAt(mapToScene(event->pos()), QTransform()); + if (item) + { + if (item->type() == UBGraphicsRuler::Type || item->type() == UBGraphicsTriangle::Type) + { + QGraphicsView::mouseMoveEvent(event); + } + } + circle->setVisible(true); + } + else + { + if (item->type() == UBGraphicsRuler::Type || item->type() == UBGraphicsTriangle::Type) + { + QGraphicsView::mouseMoveEvent(event); + } + } + } + } event->accept (); } diff --git a/src/tools/UBGraphicsAxes.cpp b/src/tools/UBGraphicsAxes.cpp index 9fb6be2f..279d0342 100644 --- a/src/tools/UBGraphicsAxes.cpp +++ b/src/tools/UBGraphicsAxes.cpp @@ -428,7 +428,6 @@ void UBGraphicsAxes::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) setCursor(Qt::ArrowCursor); mCloseSvgItem->setVisible(mShowButtons); mNumbersSvgItem->setVisible(mShowButtons); - UBDrawingController::drawingController()->mActiveRuler = NULL; event->accept(); update(); } diff --git a/src/tools/UBGraphicsRuler.cpp b/src/tools/UBGraphicsRuler.cpp index dd4a9e0c..d42ece6a 100644 --- a/src/tools/UBGraphicsRuler.cpp +++ b/src/tools/UBGraphicsRuler.cpp @@ -420,6 +420,9 @@ void UBGraphicsRuler::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); + if (UBDrawingController::drawingController()->mActiveRuler == nullptr) + UBDrawingController::drawingController()->mActiveRuler = this; + if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) { @@ -450,7 +453,6 @@ void UBGraphicsRuler::hoverEnterEvent(QGraphicsSceneHoverEvent *event) else if (UBDrawingController::drawingController()->isDrawingTool()) { setCursor(drawRulerLineCursor()); - UBDrawingController::drawingController()->mActiveRuler = this; event->accept(); } } @@ -462,7 +464,7 @@ void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) mCloseSvgItem->setVisible(mShowButtons); mResizeSvgItem->setVisible(mShowButtons); mRotateSvgItem->setVisible(mShowButtons); - UBDrawingController::drawingController()->mActiveRuler = NULL; + UBDrawingController::drawingController()->mActiveRuler = nullptr; event->accept(); update(); }