@@ -55,11 +55,11 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
5555 const qreal sceneWidth = parentItem()->width();
5656 const qreal sceneHeight = parentItem()->height();
5757
58− if (newX <= 0 && newY < m_panelHeight) { // top left corner
59− const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-m_panelHeight, 2));
58+ if (newX <= 0 && newY < m_topBoundaryOffset) { // top left corner
59+ const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-m_topBoundaryOffset, 2));
6060 Q_EMIT pushedTopLeftCorner(qAbs(distance), buttons);
61− } else if (newX >= sceneWidth-1 && newY < m_panelHeight) { // top right corner
62− const auto distance = qSqrt(qPow(newX-sceneWidth, 2) + qPow(newY-m_panelHeight, 2));
61+ } else if (newX >= sceneWidth-1 && newY < m_topBoundaryOffset) { // top right corner
62+ const auto distance = qSqrt(qPow(newX-sceneWidth, 2) + qPow(newY-m_topBoundaryOffset, 2));
6363 Q_EMIT pushedTopRightCorner(qAbs(distance), buttons);
6464 } else if (newX < 0 && newY >= sceneHeight-1) { // bottom left corner
6565 const auto distance = qSqrt(qPow(newX, 2) + qPow(newY-sceneHeight, 2));
@@ -71,8 +71,8 @@ void MousePointer::handleMouseEvent(ulong timestamp, QPointF movement, Qt::Mouse
7171 Q_EMIT pushedLeftBoundary(qAbs(newX), buttons);
7272 } else if (newX >= sceneWidth) { // right edge
7373 Q_EMIT pushedRightBoundary(newX - (sceneWidth - 1), buttons);
74− } else if (newY < m_panelHeight) { // top edge
75− Q_EMIT pushedTopBoundary(qAbs(newY - m_panelHeight), buttons);
74+ } else if (newY < m_topBoundaryOffset) { // top edge
75+ Q_EMIT pushedTopBoundary(qAbs(newY - m_topBoundaryOffset), buttons);
7676 } else if (Q_LIKELY(newX > 0 && newX < sceneWidth-1 && newY > 0 && newY < sceneHeight-1)) { // normal pos, not pushing
7777 Q_EMIT pushStopped();
7878 }
@@ -96,22 +96,27 @@ void MousePointer::handleWheelEvent(ulong timestamp, QPoint angleDelta, Qt::Keyb
9696 QPoint() /* pixelDelta */, angleDelta, modifiers, Qt::ScrollUpdate);
9797}
9898
99+int MousePointer::topBoundaryOffset() const
100+{
101+ return m_topBoundaryOffset;
102+}
103+
104+void MousePointer::setTopBoundaryOffset(int topBoundaryOffset)
105+{
106+ if (m_topBoundaryOffset == topBoundaryOffset)
107+ return;
108+
109+ m_topBoundaryOffset = topBoundaryOffset;
110+ Q_EMIT topBoundaryOffsetChanged(topBoundaryOffset);
111+}
112+
99113void MousePointer::itemChange(ItemChange change, const ItemChangeData &value)
100114{
101115 if (change == ItemSceneChange) {
102116 registerWindow(value.window);
103− if (value.window) {
104− m_panelHeight = QQmlProperty::read(this, "panelHeight").toInt(); // when we move e.g. to a different screen (with possible different DGU)
105− }
106117 }
107118}
108119
109−void MousePointer::componentComplete()
110−{
111− MirMousePointerInterface::componentComplete();
112− m_panelHeight = QQmlProperty::read(this, "panelHeight").toInt();
113−}
114−
115120void MousePointer::registerWindow(QWindow *window)
116121{
117122 if (window == m_registeredWindow) {