diff options
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsnativeinterface.cpp')
-rw-r--r-- | src/plugins/platforms/windows/qwindowsnativeinterface.cpp | 192 |
1 files changed, 4 insertions, 188 deletions
diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp index d1d181d66e..e709123097 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp @@ -1,67 +1,25 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qwindowsnativeinterface.h" -#include "qwindowsclipboard.h" #include "qwindowswindow.h" #include "qwindowsscreen.h" #include "qwindowscontext.h" #include "qwindowscursor.h" #include "qwindowsopenglcontext.h" -#include "qwindowsopengltester.h" #include "qwindowsintegration.h" -#include "qwindowsmime.h" +#include "qwindowstheme.h" #include "qwin10helpers.h" #include <QtGui/qwindow.h> #include <QtGui/qopenglcontext.h> #include <QtGui/qscreen.h> #include <qpa/qplatformscreen.h> -#include <QtFontDatabaseSupport/private/qwindowsfontdatabase_p.h> QT_BEGIN_NAMESPACE enum ResourceType { RenderingContextType, - EglContextType, - EglDisplayType, - EglConfigType, HandleType, GlHandleType, GetDCType, @@ -73,9 +31,6 @@ static int resourceType(const QByteArray &key) { static const char *names[] = { // match ResourceType "renderingcontext", - "eglcontext", - "egldisplay", - "eglconfig", "handle", "glhandle", "getdc", @@ -89,9 +44,6 @@ static int resourceType(const QByteArray &key) return int(result - names); } -QWindowsWindowFunctions::WindowActivationBehavior QWindowsNativeInterface::m_windowActivationBehavior = - QWindowsWindowFunctions::DefaultActivateWindow; - void *QWindowsNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window) { if (!window || !window->handle()) { @@ -153,41 +105,10 @@ 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 - Q_UNUSED(resource) + Q_UNUSED(resource); #else if (resourceType(resource) == GlHandleType) { if (const QWindowsStaticOpenGLContext *sc = QWindowsIntegration::staticOpenGLContext()) @@ -206,114 +127,9 @@ void *QWindowsNativeInterface::nativeResourceForContext(const QByteArray &resour return nullptr; } - auto *glcontext = static_cast<QWindowsOpenGLContext *>(context->handle()); - switch (resourceType(resource)) { - case RenderingContextType: // Fall through. - case EglContextType: - return glcontext->nativeContext(); - case EglDisplayType: - return glcontext->nativeDisplay(); - case EglConfigType: - return glcontext->nativeConfig(); - default: - break; - } - qWarning("%s: Invalid key '%s' requested.", __FUNCTION__, resource.constData()); return nullptr; } #endif // !QT_NO_OPENGL -/*! - \brief Creates a non-visible window handle for filtering messages. -*/ - -void *QWindowsNativeInterface::createMessageWindow(const QString &classNameTemplate, - const QString &windowName, - void *eventProc) const -{ - QWindowsContext *ctx = QWindowsContext::instance(); - const HWND hwnd = ctx->createDummyWindow(classNameTemplate, - (wchar_t*)windowName.utf16(), - (WNDPROC)eventProc); - return hwnd; -} - -/*! - \brief Registers a unique window class with a callback function based on \a classNameIn. -*/ - -QString QWindowsNativeInterface::registerWindowClass(const QString &classNameIn, void *eventProc) const -{ - return QWindowsContext::instance()->registerWindowClass(classNameIn, (WNDPROC)eventProc); -} - -bool QWindowsNativeInterface::asyncExpose() const -{ - return QWindowsContext::instance()->asyncExpose(); -} - -void QWindowsNativeInterface::setAsyncExpose(bool value) -{ - QWindowsContext::instance()->setAsyncExpose(value); -} - -void QWindowsNativeInterface::registerWindowsMime(void *mimeIn) -{ - QWindowsContext::instance()->mimeConverter().registerMime(reinterpret_cast<QWindowsMime *>(mimeIn)); -} - -void QWindowsNativeInterface::unregisterWindowsMime(void *mimeIn) -{ - QWindowsContext::instance()->mimeConverter().unregisterMime(reinterpret_cast<QWindowsMime *>(mimeIn)); -} - -int QWindowsNativeInterface::registerMimeType(const QString &mimeType) -{ - return QWindowsMime::registerMimeType(mimeType); -} - -QFont QWindowsNativeInterface::logFontToQFont(const void *logFont, int verticalDpi) -{ - return QWindowsFontDatabase::LOGFONT_to_QFont(*reinterpret_cast<const LOGFONT *>(logFont), verticalDpi); -} - -bool QWindowsNativeInterface::isTabletMode() -{ -#if QT_CONFIG(clipboard) - if (const QWindowsClipboard *clipboard = QWindowsClipboard::instance()) - return qt_windowsIsTabletMode(clipboard->clipboardViewer()); -#endif - return false; -} - -QFunctionPointer QWindowsNativeInterface::platformFunction(const QByteArray &function) const -{ - if (function == QWindowsWindowFunctions::setTouchWindowTouchTypeIdentifier()) - return QFunctionPointer(QWindowsWindow::setTouchWindowTouchTypeStatic); - if (function == QWindowsWindowFunctions::setHasBorderInFullScreenIdentifier()) - return QFunctionPointer(QWindowsWindow::setHasBorderInFullScreenStatic); - if (function == QWindowsWindowFunctions::setHasBorderInFullScreenDefaultIdentifier()) - return QFunctionPointer(QWindowsWindow::setHasBorderInFullScreenDefault); - if (function == QWindowsWindowFunctions::setWindowActivationBehaviorIdentifier()) - return QFunctionPointer(QWindowsNativeInterface::setWindowActivationBehavior); - if (function == QWindowsWindowFunctions::isTabletModeIdentifier()) - return QFunctionPointer(QWindowsNativeInterface::isTabletMode); - return nullptr; -} - -QVariant QWindowsNativeInterface::gpu() const -{ - return GpuDescription::detect().toVariant(); -} - -QVariant QWindowsNativeInterface::gpuList() const -{ - QVariantList result; - const auto gpus = GpuDescription::detectAll(); - for (const auto &gpu : gpus) - result.append(gpu.toVariant()); - return result; -} - QT_END_NAMESPACE |