Call QPlatformCursor::pointerEvent with native coordinates.
It's a QPlatform* class and works in the native (platform) coordinate system. Change-Id: Ibf36bc68d84ecd668b35e0c22e1fa35cfc456a5d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
This commit is contained in:
parent
d98415dd6b
commit
c87f3b2292
@ -1821,16 +1821,23 @@ void QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::Mo
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
QMouseEvent ev(type, localPoint, localPoint, globalPoint, button, buttons, e->modifiers, e->source);
|
||||
ev.setTimestamp(e->timestamp);
|
||||
#ifndef QT_NO_CURSOR
|
||||
if (!e->synthetic()) {
|
||||
if (const QScreen *screen = window->screen())
|
||||
if (QPlatformCursor *cursor = screen->handle()->cursor())
|
||||
if (QPlatformCursor *cursor = screen->handle()->cursor()) {
|
||||
const QPointF nativeLocalPoint = QHighDpi::toNativePixels(localPoint, screen);
|
||||
const QPointF nativeGlobalPoint = QHighDpi::toNativePixels(globalPoint, screen);
|
||||
QMouseEvent ev(type, nativeLocalPoint, nativeLocalPoint, nativeGlobalPoint,
|
||||
button, buttons, e->modifiers, e->source);
|
||||
ev.setTimestamp(e->timestamp);
|
||||
cursor->pointerEvent(ev);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
QMouseEvent ev(type, localPoint, localPoint, globalPoint, button, buttons, e->modifiers, e->source);
|
||||
ev.setTimestamp(e->timestamp);
|
||||
|
||||
if (window->d_func()->blockedByModalWindow) {
|
||||
// a modal window is blocking this window, don't allow mouse events through
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user