Make input events work for widgets on wayland
authorJørgen Lind <jorgen.lind@nokia.com>
Mon, 28 Nov 2011 14:04:37 +0000 (15:04 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 28 Nov 2011 15:57:58 +0000 (16:57 +0100)
Wayland windows does not know about their position

Change-Id: Ia37dd0fe6e33073eeeba22c88da9bd4bcad5421f
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/widgets/kernel/qapplication.cpp
src/widgets/kernel/qapplication_p.h
src/widgets/kernel/qwidgetwindow_qpa.cpp

index 33dd07e..beeb3da 100644 (file)
@@ -2777,7 +2777,7 @@ bool QApplicationPrivate::tryModalHelper(QWidget *widget, QWidget **rettop)
 /*
    \internal
 */
-QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint &globalPos,
+QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint &windowPos,
                                                 QPoint *pos, QEvent::Type type,
                                                 Qt::MouseButtons buttons, QWidget *buttonDown,
                                                 QWidget *alienWidget)
@@ -2800,7 +2800,7 @@ QWidget *QApplicationPrivate::pickMouseReceiver(QWidget *candidate, const QPoint
 
     if (mouseGrabber && mouseGrabber != candidate) {
         receiver = mouseGrabber;
-        *pos = receiver->mapFromGlobal(globalPos);
+        *pos = receiver->mapFrom(candidate, windowPos);
 #ifdef ALIEN_DEBUG
         qDebug() << "  ** receiver adjusted to:" << receiver << "pos:" << pos;
 #endif
index c353a29..7b66360 100644 (file)
@@ -443,7 +443,7 @@ public:
     static QString styleSheet;
 #endif
     static QPointer<QWidget> leaveAfterRelease;
-    static QWidget *pickMouseReceiver(QWidget *candidate, const QPoint &globalPos, QPoint *pos,
+    static QWidget *pickMouseReceiver(QWidget *candidate, const QPoint &windowPos, QPoint *pos,
                                       QEvent::Type type, Qt::MouseButtons buttons,
                                       QWidget *buttonDown, QWidget *alienWidget);
     static bool sendMouseEvent(QWidget *receiver, QMouseEvent *event, QWidget *alienWidget,
index 7d8b57f..5b7ded9 100644 (file)
@@ -267,7 +267,7 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event)
     if (event->type() == QEvent::MouseButtonPress && !qt_button_down)
         qt_button_down = widget;
 
-    QWidget *receiver = QApplicationPrivate::pickMouseReceiver(m_widget, event->globalPos(), &mapped, event->type(), event->buttons(),
+    QWidget *receiver = QApplicationPrivate::pickMouseReceiver(m_widget, event->windowPos().toPoint(), &mapped, event->type(), event->buttons(),
                                                                qt_button_down, widget);
 
     if (!receiver) {