Fix QWindow::mapTo|FromGlobal() for the embedded case
The code didn't make much sense:
- QHighDpi::fromNativeLocalPosition should not take global positions
- QPlatformWindow::mapFromGlobal() should not take local positions
Tested with a basic MFC window that has a QMainWindow as child
(parented with QWinWidget from QtWinMigrate). Menus would be off
when on a secondary screen with dpi factor > 1
Change-Id: Ib5cbf5d29ed97c786f7f7ba4e868b70cb5435239
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
bb10
parent
daf7f07c1b
commit
006aa6c2ee
|
|
@ -2763,7 +2763,7 @@ QPointF QWindow::mapToGlobal(const QPointF &pos) const
|
|||
// QTBUG-43252, prefer platform implementation for foreign windows.
|
||||
if (d->platformWindow
|
||||
&& (d->platformWindow->isForeignWindow() || d->platformWindow->isEmbedded())) {
|
||||
return QHighDpi::fromNativeLocalPosition(d->platformWindow->mapToGlobalF(QHighDpi::toNativeLocalPosition(pos, this)), this);
|
||||
return QHighDpi::fromNativeGlobalPosition(d->platformWindow->mapToGlobalF(QHighDpi::toNativeLocalPosition(pos, this)), this);
|
||||
}
|
||||
|
||||
if (!QHighDpiScaling::isActive())
|
||||
|
|
@ -2805,7 +2805,7 @@ QPointF QWindow::mapFromGlobal(const QPointF &pos) const
|
|||
// QTBUG-43252, prefer platform implementation for foreign windows.
|
||||
if (d->platformWindow
|
||||
&& (d->platformWindow->isForeignWindow() || d->platformWindow->isEmbedded())) {
|
||||
return QHighDpi::fromNativeLocalPosition(d->platformWindow->mapFromGlobalF(QHighDpi::toNativeLocalPosition(pos, this)), this);
|
||||
return QHighDpi::fromNativeLocalPosition(d->platformWindow->mapFromGlobalF(QHighDpi::toNativeGlobalPosition(pos, this)), this);
|
||||
}
|
||||
|
||||
if (!QHighDpiScaling::isActive())
|
||||
|
|
|
|||
Loading…
Reference in New Issue