diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-24 14:53:38 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-07-24 17:26:51 +0200 |
commit | ff97e083ed4dd233f499f72da4ed83e3a7f2b380 (patch) | |
tree | d586d48f4304b3974bf938a63b9a2069d4abd0e8 /src | |
parent | c692f41ae51d3f2296d06178b98fe73476a51bc5 (diff) |
Windows QPA: Move window properties to the new interfaces
Affects the custom margin used by QWizard.
Task-number: QTBUG-83252
Change-Id: Iffda043f106282f682e119ec955fa2b2eb0f259e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qplatformwindow_p.h | 5 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsnativeinterface.cpp | 31 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsnativeinterface.h | 5 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.cpp | 10 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowswindow.h | 7 | ||||
-rw-r--r-- | src/widgets/dialogs/qwizard_win.cpp | 12 |
6 files changed, 26 insertions, 44 deletions
diff --git a/src/gui/kernel/qplatformwindow_p.h b/src/gui/kernel/qplatformwindow_p.h index fdcb62b364..d69e7a5749 100644 --- a/src/gui/kernel/qplatformwindow_p.h +++ b/src/gui/kernel/qplatformwindow_p.h @@ -57,6 +57,8 @@ QT_BEGIN_NAMESPACE +class QMargins; + class QPlatformWindowPrivate { public: @@ -116,6 +118,9 @@ struct Q_GUI_EXPORT QWindowsWindow virtual void setHasBorderInFullScreen(bool border) = 0; virtual bool hasBorderInFullScreen() const = 0; + + virtual QMargins customMargins() const = 0; + virtual void setCustomMargins(const QMargins &margins) = 0; }; #endif // Q_OS_WIN diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp index a62ce1323f..103db19a69 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp @@ -144,37 +144,6 @@ void *QWindowsNativeInterface::nativeResourceForCursor(const QByteArray &resourc } #endif // !QT_NO_CURSOR -static const char customMarginPropertyC[] = "WindowsCustomMargins"; - -QVariant QWindowsNativeInterface::windowProperty(QPlatformWindow *window, const QString &name) const -{ - auto *platformWindow = static_cast<QWindowsWindow *>(window); - if (name == QLatin1String(customMarginPropertyC)) - return QVariant::fromValue(platformWindow->customMargins()); - return QVariant(); -} - -QVariant QWindowsNativeInterface::windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const -{ - const QVariant result = windowProperty(window, name); - return result.isValid() ? result : defaultValue; -} - -void QWindowsNativeInterface::setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) -{ - auto *platformWindow = static_cast<QWindowsWindow *>(window); - if (name == QLatin1String(customMarginPropertyC)) - platformWindow->setCustomMargins(qvariant_cast<QMargins>(value)); -} - -QVariantMap QWindowsNativeInterface::windowProperties(QPlatformWindow *window) const -{ - QVariantMap result; - const QString customMarginProperty = QLatin1String(customMarginPropertyC); - result.insert(customMarginProperty, windowProperty(window, customMarginProperty)); - return result; -} - void *QWindowsNativeInterface::nativeResourceForIntegration(const QByteArray &resource) { #ifdef QT_NO_OPENGL diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.h b/src/plugins/platforms/windows/qwindowsnativeinterface.h index 95b6bf847c..6b3740a17b 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.h +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.h @@ -98,11 +98,6 @@ public: QVariant gpu() const; QVariant gpuList() const; - QVariantMap windowProperties(QPlatformWindow *window) const override; - QVariant windowProperty(QPlatformWindow *window, const QString &name) const override; - QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const override; - void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) override; - Q_SIGNALS: void darkModeChanged(bool); }; diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp index 9668f58112..2da4251179 100644 --- a/src/plugins/platforms/windows/qwindowswindow.cpp +++ b/src/plugins/platforms/windows/qwindowswindow.cpp @@ -1193,6 +1193,16 @@ bool QWindowsBaseWindow::hasBorderInFullScreen() const return false; } +QMargins QWindowsBaseWindow::customMargins() const +{ + return {}; +} + +void QWindowsBaseWindow::setCustomMargins(const QMargins &) +{ + Q_UNIMPLEMENTED(); +} + /*! \class QWindowsDesktopWindow \brief Window wrapping GetDesktopWindow not allowing any manipulation. diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h index 6c6c86ef47..beed3e17df 100644 --- a/src/plugins/platforms/windows/qwindowswindow.h +++ b/src/plugins/platforms/windows/qwindowswindow.h @@ -144,6 +144,9 @@ public: void setHasBorderInFullScreen(bool border) override; bool hasBorderInFullScreen() const override; + QMargins customMargins() const override; + void setCustomMargins(const QMargins &margins) override; + using QPlatformWindow::screenForGeometry; virtual HWND handle() const = 0; @@ -304,8 +307,8 @@ public: QWindowsMenuBar *menuBar() const; void setMenuBar(QWindowsMenuBar *mb); - QMargins customMargins() const { return m_data.customMargins; } - void setCustomMargins(const QMargins &m); + QMargins customMargins() const override { return m_data.customMargins; } + void setCustomMargins(const QMargins &m) override; void setStyle(unsigned s) const; void setExStyle(unsigned s) const; diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp index 5a666b542b..8edbe14150 100644 --- a/src/widgets/dialogs/qwizard_win.cpp +++ b/src/widgets/dialogs/qwizard_win.cpp @@ -43,7 +43,8 @@ #include "qwizard_win_p.h" #include <private/qapplication_p.h> -#include <qpa/qplatformnativeinterface.h> +#include <qpa/qplatformwindow.h> +#include <qpa/qplatformwindow_p.h> #include "qwizard.h" #include "qpaintengine.h" #include "qapplication.h" @@ -166,6 +167,8 @@ QVistaHelper::~QVistaHelper() void QVistaHelper::updateCustomMargins(bool vistaMargins) { + using namespace QPlatformInterface::Private; + if (QWindow *window = wizard->windowHandle()) { // Reduce top frame to zero since we paint it ourselves. Use // device pixel to avoid rounding errors. @@ -176,11 +179,8 @@ void QVistaHelper::updateCustomMargins(bool vistaMargins) // The dynamic property takes effect when creating the platform window. window->setProperty("_q_windowsCustomMargins", customMarginsV); // If a platform window exists, change via native interface. - if (QPlatformWindow *platformWindow = window->handle()) { - QGuiApplication::platformNativeInterface()-> - setWindowProperty(platformWindow, QStringLiteral("WindowsCustomMargins"), - customMarginsV); - } + if (auto platformWindow = dynamic_cast<QWindowsWindow *>(window->handle())) + platformWindow->setCustomMargins(customMarginsDp); } } |