Home
Phabricator
Search
Log In
Paste
P669
Masterwork From Distant Lands
Active
Public
Actions
Authored by
davidedmundson
on Feb 15 2021, 10:11 AM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Subscribers
None
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
Log In to Comment