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(); }