void Ut_StatusIndicatorMenuWindow::testStatusIndicatorMenuIsClosedWhenStatusBarIsTapped() { QFETCH(bool, pressInside); QFETCH(bool, releaseInside); QFETCH(MSceneWindow::SceneWindowState, sceneWindowState); statusIndicatorMenuWindow->displayActive(); // Map the bounding rect to the scene QRectF statusBarGeometry(statusIndicatorMenuWindow->statusBar->sceneBoundingRect()); QPoint pressPoint(statusBarGeometry.x(), statusBarGeometry.y()); QPoint releasePoint(statusBarGeometry.x(), statusBarGeometry.y()); if (!pressInside) { pressPoint += QPoint(-1, -1); } if (!releaseInside) { releasePoint += QPoint(-1, -1); } // Then map the press point to the viewport pressPoint = statusIndicatorMenuWindow->mapFromScene(pressPoint); releasePoint = statusIndicatorMenuWindow->mapFromScene(releasePoint); QMouseEvent pressEvent(QEvent::MouseButtonPress, pressPoint, Qt::LeftButton, Qt::MouseButtons(Qt::LeftButton), Qt::KeyboardModifiers(Qt::NoModifier)); QMouseEvent releaseEvent(QEvent::MouseButtonRelease, releasePoint, Qt::LeftButton, Qt::MouseButtons(Qt::LeftButton), Qt::KeyboardModifiers(Qt::NoModifier)); statusIndicatorMenuWindow->mousePressEvent(&pressEvent); statusIndicatorMenuWindow->mouseReleaseEvent(&releaseEvent); QCOMPARE(statusIndicatorMenuWindow->menuWidget->sceneWindowState(), sceneWindowState); }
void UBRubberBand::mouseMoveEvent(QMouseEvent *event) { determineResizingMode(event->pos()); if (mMouseIsPressed) { UBBoardView *view = UBApplication::boardController->controlView(); QRect currentGeometry = geometry(); QPoint pressPoint(event->pos()); QPoint pressPointGlobal(view->mapToGlobal(pressPoint)); QPoint prevPressPointGlobal(view->mapToGlobal(mLastPressedPoint)); QPoint movePointGlogal = (view->mapToGlobal(mLastMousePos)); QPoint topLeftResizeVector(pressPointGlobal - prevPressPointGlobal); QPoint rightBottomResizeVector(pressPointGlobal - movePointGlogal); bool bGeometryChange = true; switch(mResizingMode) { case None: { QPointF itemsMoveVector(view->mapToScene(pressPointGlobal) - view->mapToScene(prevPressPointGlobal)); move(pos()+pressPointGlobal - prevPressPointGlobal); view->moveRubberedItems(itemsMoveVector); bGeometryChange = false; break; } case Top: { currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y()); }break; case Bottom: { currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y()); }break; case Left: { currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x()); }break; case Right: { currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x()); }break; case TopLeft: { currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x()); currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y()); }break; case TopRight: { currentGeometry.setY(currentGeometry.y()+topLeftResizeVector.y()); currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x()); } break; case BottomLeft: { currentGeometry.setX(currentGeometry.x()+topLeftResizeVector.x()); currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y()); }break; case BottomRight: { currentGeometry.setWidth(currentGeometry.width()+rightBottomResizeVector.x()); currentGeometry.setHeight(currentGeometry.height()+rightBottomResizeVector.y()); }break; } if(bGeometryChange) { setGeometry(currentGeometry); } mLastMousePos = event->pos(); } QRubberBand::mouseMoveEvent(event); }