Make input events work for widgets on wayland

Wayland windows does not know about their position

Change-Id: Ia37dd0fe6e33073eeeba22c88da9bd4bcad5421f
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
bb10
Jørgen Lind 2011-11-28 15:04:37 +01:00 committed by Qt by Nokia
parent 67e613963d
commit f6c107d799
3 changed files with 4 additions and 4 deletions

View 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

View 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,

View 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) {