From 9dc74ccafa0b6bebf80281b4ef9708a201680766 Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Mon, 13 Aug 2012 11:58:56 +0300 Subject: [PATCH] Fixed sync of magnifier tool on control and display screens. --- src/board/UBBoardController.cpp | 1 + src/domain/UBGraphicsScene.cpp | 17 ++++++++++++++--- src/domain/UBGraphicsScene.h | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 89cdfefd..b28ac7c8 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1486,6 +1486,7 @@ void UBBoardController::boardViewResized(QResizeEvent* event) mPaletteManager->containerResized(); + UBApplication::boardController->controlView()->scene()->moveMagnifier(); } diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 9ee4fb67..c90dc0a2 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1979,7 +1979,16 @@ void UBGraphicsScene::addMagnifier(UBMagnifierParams params) setModified(true); } -void UBGraphicsScene::moveMagnifier(QPoint newPos) +void UBGraphicsScene::moveMagnifier() +{ + if (magniferControlViewWidget) + { + QPoint magnifierPos = QPoint(magniferControlViewWidget->pos().x() + magniferControlViewWidget->size().width() / 2, magniferControlViewWidget->pos().y() + magniferControlViewWidget->size().height() / 2 ); + moveMagnifier(magnifierPos, true); + } +} + +void UBGraphicsScene::moveMagnifier(QPoint newPos, bool forceGrab) { QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer()); QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView(); @@ -1987,6 +1996,8 @@ void UBGraphicsScene::moveMagnifier(QPoint newPos) QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); + QRect qcr = cView->geometry(); + QRect qdr = dView->geometry(); int cvW = cView->width(); int dvW = dView->width(); qreal wCoeff = (qreal)dvW / (qreal)cvW; @@ -1999,8 +2010,8 @@ void UBGraphicsScene::moveMagnifier(QPoint newPos) QPoint cvPoint = cView->mapFromGlobal(globalPoint); QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y()); - magniferControlViewWidget->grabNMove(globalPoint, globalPoint, false, false); - magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, false, true); + magniferControlViewWidget->grabNMove(globalPoint, globalPoint, forceGrab, false); + magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, forceGrab, true); setModified(true); } diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index a9a82f11..027ef706 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -326,7 +326,8 @@ public slots: void selectionChangedProcessing(); void updateGroupButtonState(); - void moveMagnifier(QPoint newPos); + void moveMagnifier(); + void moveMagnifier(QPoint newPos, bool forceGrab = false); void closeMagnifier(); void zoomInMagnifier(); void zoomOutMagnifier();