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
parent
67e613963d
commit
f6c107d799
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue