@@ -55,11 +55,11 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
55 const qreal sceneWidth = parentItem()->width();
55 const qreal sceneWidth = parentItem()->width();
56 const qreal sceneHeight = parentItem()->height();
56 const qreal sceneHeight = parentItem()->height();
58− if (newX <= 0 && newY < m_panelHeight) { // top left corner
58+ if (newX <= 0 && newY < m_topBoundaryOffset) { // top left corner
59− const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-m_panelHeight, 2));
59+ const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-m_topBoundaryOffset, 2));
60 Q_EMIT pushedTopLeftCorner(qAbs(distance), buttons);
60 Q_EMIT pushedTopLeftCorner(qAbs(distance), buttons);
61− } else if (newX >= sceneWidth-1 && newY < m_panelHeight) { // top right corner
61+ } else if (newX >= sceneWidth-1 && newY < m_topBoundaryOffset) { // top right corner
62− const auto distance = qSqrt(qPow(newX-sceneWidth, 2) + qPow(newY-m_panelHeight, 2));
62+ const auto distance = qSqrt(qPow(newX-sceneWidth, 2) + qPow(newY-m_topBoundaryOffset, 2));
63 Q_EMIT pushedTopRightCorner(qAbs(distance), buttons);
63 Q_EMIT pushedTopRightCorner(qAbs(distance), buttons);
64 } else if (newX < 0 && newY >= sceneHeight-1) { // bottom left corner
64 } else if (newX < 0 && newY >= sceneHeight-1) { // bottom left corner
65 const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-sceneHeight, 2));
65 const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-sceneHeight, 2));
@@ -71,8 +71,8 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
71 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
71 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
72 } else if (newX >= sceneWidth) { // right edge
72 } else if (newX >= sceneWidth) { // right edge
73 Q_EMIT pushedRightBoundary(newX - (sceneWidth - 1), buttons);
73 Q_EMIT pushedRightBoundary(newX - (sceneWidth - 1), buttons);
74− } else if (newY < m_panelHeight) { // top edge
74+ } else if (newY < m_topBoundaryOffset) { // top edge
75− Q_EMIT pushedTopBoundary(qAbs(newY - m_panelHeight), buttons);
75+ Q_EMIT pushedTopBoundary(qAbs(newY - m_topBoundaryOffset), buttons);
76 } else if (Q_LIKELY(newX > 0 && newX < sceneWidth-1 && newY > 0 && newY < sceneHeight-1)) { // normal pos, not pushing
76 } else if (Q_LIKELY(newX > 0 && newX < sceneWidth-1 && newY > 0 && newY < sceneHeight-1)) { // normal pos, not pushing
77 Q_EMIT pushStopped();
77 Q_EMIT pushStopped();
@@ -96,22 +96,27 @@ void MousePointer::handleWheelEvent(ulong timestamp, QPoint angleDelta, Qt::Keyb
96 QPoint() /* pixelDelta */, angleDelta, modifiers, Qt::ScrollUpdate);
96 QPoint() /* pixelDelta */, angleDelta, modifiers, Qt::ScrollUpdate);
99+int MousePointer::topBoundaryOffset() const
101+ return m_topBoundaryOffset;
104+void MousePointer::setTopBoundaryOffset(int topBoundaryOffset)
106+ if (m_topBoundaryOffset == topBoundaryOffset)
109+ m_topBoundaryOffset = topBoundaryOffset;
110+ Q_EMIT topBoundaryOffsetChanged(topBoundaryOffset);
99void MousePointer::itemChange(ItemChange change, const ItemChangeData &value)
113void MousePointer::itemChange(ItemChange change, const ItemChangeData &value)
101 if (change == ItemSceneChange) {
115 if (change == ItemSceneChange) {
102 registerWindow(value.window);
116 registerWindow(value.window);
104− m_panelHeight = QQmlProperty::read(this, "panelHeight").toInt(); // when we move e.g. to a different screen (with possible different DGU)
109−void MousePointer::componentComplete()
111− MirMousePointerInterface::componentComplete();
112− m_panelHeight = QQmlProperty::read(this, "panelHeight").toInt();
115void MousePointer::registerWindow(QWindow *window)
120void MousePointer::registerWindow(QWindow *window)
117 if (window == m_registeredWindow) {
122 if (window == m_registeredWindow) {