Paste P669

Masterwork From Distant Lands
ActivePublic

Authored by davidedmundson on Feb 15 2021, 10:11 AM.
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp
index a53f0d09d7..310df05d6d 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -283,7 +283,7 @@ QPlatformServices *QPlatformIntegration::services() const
bool QPlatformIntegration::hasCapability(Capability cap) const
{
- return cap == NonFullScreenWindows || cap == NativeWidgets || cap == WindowManagement
+ return cap == NonFullScreenWindows || cap == NativeWidgets || cap == WindowManagement /*|| cap == KnownWindowGeometry*/
|| cap == TopStackedNativeChildWindows || cap == WindowActivation || cap == RhiBasedRendering;
}
diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h
index 75b942f998..f006a7bb07 100644
--- a/src/gui/kernel/qplatformintegration.h
+++ b/src/gui/kernel/qplatformintegration.h
@@ -133,7 +133,8 @@ public:
OpenGLOnRasterSurface,
MaximizeUsingFullscreenGeometry,
PaintEvents,
- RhiBasedRendering
+ RhiBasedRendering,
+ KnownWindowGeometry
};
virtual ~QPlatformIntegration() { }
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index d93f43a310..1c65231d86 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -531,7 +531,7 @@ void QWindowPrivate::create(bool recursive, WId nativeHandle)
// QPlatformWindow will poll geometry() during construction below. Set the
// screen here so that high-dpi scaling will use the correct scale factor.
- if (q->isTopLevel()) {
+ if (q->isTopLevel() && QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::KnownWindowGeometry)) {
if (QScreen *screen = screenForGeometry(geometry))
setTopLevelScreen(screen, false);
}
@@ -1733,15 +1733,19 @@ void QWindow::setGeometry(const QRect &rect)
d->positionPolicy = QWindowPrivate::WindowFrameExclusive;
if (d->platformWindow) {
- QScreen *newScreen = d->screenForGeometry(rect);
- if (newScreen && isTopLevel())
- d->setTopLevelScreen(newScreen, true);
-
QRect nativeRect;
- if (newScreen && isTopLevel())
- nativeRect = QHighDpi::toNativePixels(rect, newScreen);
- else
- nativeRect = QHighDpi::toNativeLocalPosition(rect, newScreen);
+ if (QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::KnownWindowGeometry)) {
+ QScreen *newScreen = d->screenForGeometry(rect);
+ if (newScreen && isTopLevel())
+ d->setTopLevelScreen(newScreen, true);
+
+ if (newScreen && isTopLevel())
+ nativeRect = QHighDpi::toNativePixels(rect, newScreen);
+ else
+ nativeRect = QHighDpi::toNativeLocalPosition(rect, newScreen);
+ } else {
+ nativeRect = rect;
+ }
d->platformWindow->setGeometry(nativeRect);
} else {
d->geometry = rect;
davidedmundson edited the content of this paste. (Show Details)Feb 15 2021, 10:11 AM
davidedmundson changed the title of this paste from untitled to Masterwork From Distant Lands.
davidedmundson edited the content of this paste. (Show Details)Feb 15 2021, 10:32 AM