diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index 97c8e2af..3b404db6 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -1104,7 +1104,7 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) break; default: - if(UBDrawingController::drawingController()->mActiveRuler==NULL) { + if (UBDrawingController::drawingController()->activeRuler() == nullptr) { viewport()->setCursor (QCursor (Qt::BlankCursor)); } if (scene () && !mTabletStylusIsPressed) { diff --git a/src/board/UBDrawingController.cpp b/src/board/UBDrawingController.cpp index 705e1d18..b1843eb6 100644 --- a/src/board/UBDrawingController.cpp +++ b/src/board/UBDrawingController.cpp @@ -34,6 +34,7 @@ #include "domain/UBGraphicsScene.h" #include "board/UBBoardController.h" +#include "tools/UBAbstractDrawRuler.h" #include "gui/UBMainWindow.h" #include "core/memcheck.h" @@ -58,7 +59,6 @@ void UBDrawingController::destroy() UBDrawingController::UBDrawingController(QObject * parent) : QObject(parent) - , mActiveRuler(NULL) , mStylusTool((UBStylusTool::Enum)-1) , mLatestDrawingTool((UBStylusTool::Enum)-1) , mIsDesktopMode(false) @@ -322,6 +322,23 @@ void UBDrawingController::setMarkerAlpha(qreal alpha) emit colorPaletteChanged(); } +void UBDrawingController::setActiveRuler(UBAbstractDrawRuler* ruler) +{ + mActiveRuler = ruler; +} + +UBAbstractDrawRuler* UBDrawingController::activeRuler() const +{ + QGraphicsItem* item = dynamic_cast(mActiveRuler.data()); + + if (item && item->isVisible()) + { + return mActiveRuler; + } + + return nullptr; +} + void UBDrawingController::penToolSelected(bool checked) { diff --git a/src/board/UBDrawingController.h b/src/board/UBDrawingController.h index 01c11187..61d4ad82 100644 --- a/src/board/UBDrawingController.h +++ b/src/board/UBDrawingController.h @@ -64,7 +64,8 @@ class UBDrawingController : public QObject void setMarkerColor(bool onDarkBackground, const QColor& color, int pIndex); void setMarkerAlpha(qreal alpha); - UBAbstractDrawRuler* mActiveRuler; + void setActiveRuler(UBAbstractDrawRuler* ruler); + UBAbstractDrawRuler* activeRuler() const; void setInDesktopMode(bool mode){ mIsDesktopMode = mode; @@ -89,6 +90,7 @@ class UBDrawingController : public QObject void colorIndexChanged(int index); private: + QPointer mActiveRuler; UBStylusTool::Enum mStylusTool; UBStylusTool::Enum mLatestDrawingTool; bool mIsDesktopMode; diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index e6ef1b3b..0b95a110 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -451,8 +451,8 @@ bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pre mAddedItems.clear(); mRemovedItems.clear(); - if (UBDrawingController::drawingController()->mActiveRuler) - UBDrawingController::drawingController()->mActiveRuler->StartLine(scenePos, width); + if (UBDrawingController::drawingController()->activeRuler()) + UBDrawingController::drawingController()->activeRuler()->StartLine(scenePos, width); else { moveTo(scenePos); drawLineTo(scenePos, width, UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line); @@ -539,7 +539,7 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres width /= UBApplication::boardController->systemScaleFactor(); width /= UBApplication::boardController->currentZoom(); - if (currentTool == UBStylusTool::Line || dc->mActiveRuler) + if (currentTool == UBStylusTool::Line || dc->activeRuler()) { if (UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker) if(NULL != mpLastPolygon && NULL != mCurrentStroke && mAddedItems.size() > 0){ @@ -573,8 +573,8 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres if (!mCurrentStroke) mCurrentStroke = new UBGraphicsStroke(this); - if(dc->mActiveRuler){ - dc->mActiveRuler->DrawLine(position, width); + if(dc->activeRuler()){ + dc->activeRuler()->DrawLine(position, width); } else if (currentTool == UBStylusTool::Line) { @@ -859,7 +859,7 @@ void UBGraphicsScene::drawPenCircle(const QPointF &pPoint) cursor = UBResources::resources()->penCursor; } - if (!UBDrawingController::drawingController()->mActiveRuler) + if (!UBDrawingController::drawingController()->activeRuler()) { // set cursor only if no active ruler if (controlView() && controlView()->viewport()) diff --git a/src/tools/UBGraphicsRuler.cpp b/src/tools/UBGraphicsRuler.cpp index da0b056a..84b45831 100644 --- a/src/tools/UBGraphicsRuler.cpp +++ b/src/tools/UBGraphicsRuler.cpp @@ -450,7 +450,7 @@ void UBGraphicsRuler::hoverEnterEvent(QGraphicsSceneHoverEvent *event) else if (UBDrawingController::drawingController()->isDrawingTool()) { setCursor(drawRulerLineCursor()); - UBDrawingController::drawingController()->mActiveRuler = this; + UBDrawingController::drawingController()->setActiveRuler(this); event->accept(); } } @@ -462,7 +462,7 @@ void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) mCloseSvgItem->setVisible(mShowButtons); mResizeSvgItem->setVisible(mShowButtons); mRotateSvgItem->setVisible(mShowButtons); - UBDrawingController::drawingController()->mActiveRuler = nullptr; + UBDrawingController::drawingController()->setActiveRuler(nullptr); event->accept(); update(); } diff --git a/src/tools/UBGraphicsTriangle.cpp b/src/tools/UBGraphicsTriangle.cpp index c93fdedc..981741d0 100644 --- a/src/tools/UBGraphicsTriangle.cpp +++ b/src/tools/UBGraphicsTriangle.cpp @@ -886,7 +886,7 @@ void UBGraphicsTriangle::hoverEnterEvent(QGraphicsSceneHoverEvent *event) } else if (UBDrawingController::drawingController()->isDrawingTool()) { setCursor(drawRulerLineCursor()); - UBDrawingController::drawingController()->mActiveRuler = this; + UBDrawingController::drawingController()->setActiveRuler(this); event->accept(); } @@ -904,7 +904,7 @@ void UBGraphicsTriangle::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) mVFlipSvgItem->setVisible(false); mHFlipSvgItem->setVisible(false); mRotateSvgItem->setVisible(false); - UBDrawingController::drawingController()->mActiveRuler = NULL; + UBDrawingController::drawingController()->setActiveRuler(nullptr); event->accept(); update(); }