Add QPlatformInterface::Private::QWindowsWindow
Remove QWindowsWindowFunctions Task-number: QTBUG-83252 Change-Id: Iacfdf2e0f430208901c182e461c4617e1ef526ce Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
ac98b6e4ea
commit
b61ab2b425
@ -107,7 +107,17 @@ struct Q_GUI_EXPORT QXcbWindow
|
|||||||
virtual void setWindowIconText(const QString &text) = 0;
|
virtual void setWindowIconText(const QString &text) = 0;
|
||||||
virtual uint visualId() const = 0;
|
virtual uint visualId() const = 0;
|
||||||
};
|
};
|
||||||
#endif
|
#endif // xcb
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
struct Q_GUI_EXPORT QWindowsWindow
|
||||||
|
{
|
||||||
|
QT_DECLARE_PLATFORM_INTERFACE(QWindowsWindow)
|
||||||
|
|
||||||
|
virtual void setHasBorderInFullScreen(bool border) = 0;
|
||||||
|
virtual bool hasBorderInFullScreen() const = 0;
|
||||||
|
};
|
||||||
|
#endif // Q_OS_WIN
|
||||||
|
|
||||||
} // QPlatformInterface::Private
|
} // QPlatformInterface::Private
|
||||||
|
|
||||||
|
@ -41,6 +41,8 @@
|
|||||||
#include <QtGui/private/qguiapplication_p.h>
|
#include <QtGui/private/qguiapplication_p.h>
|
||||||
#include <qpa/qplatformopenglcontext.h>
|
#include <qpa/qplatformopenglcontext.h>
|
||||||
#include <qpa/qplatformintegration.h>
|
#include <qpa/qplatformintegration.h>
|
||||||
|
#include <qpa/qplatformwindow.h>
|
||||||
|
#include <qpa/qplatformwindow_p.h>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
@ -66,5 +68,6 @@ QOpenGLContext *QPlatformInterface::QWGLContext::fromNative(HGLRC context, HWND
|
|||||||
#endif // QT_NO_OPENGL
|
#endif // QT_NO_OPENGL
|
||||||
|
|
||||||
QT_DEFINE_PRIVATE_PLATFORM_INTERFACE(QWindowsApplication);
|
QT_DEFINE_PRIVATE_PLATFORM_INTERFACE(QWindowsApplication);
|
||||||
|
QT_DEFINE_PRIVATE_PLATFORM_INTERFACE(QWindowsWindow);
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
|
@ -10,7 +10,6 @@ qt_add_module(PlatformHeaders
|
|||||||
eglfsfunctions/qeglfsfunctions_p.h
|
eglfsfunctions/qeglfsfunctions_p.h
|
||||||
helper/qplatformheaderhelper_p.h
|
helper/qplatformheaderhelper_p.h
|
||||||
waylandfunctions/qwaylandwindowfunctions_p.h
|
waylandfunctions/qwaylandwindowfunctions_p.h
|
||||||
windowsfunctions/qwindowswindowfunctions_p.h
|
|
||||||
PUBLIC_LIBRARIES
|
PUBLIC_LIBRARIES
|
||||||
Qt::Core
|
Qt::Core
|
||||||
Qt::Gui
|
Qt::Gui
|
||||||
|
@ -11,7 +11,6 @@ qt_add_module(PlatformHeaders
|
|||||||
# eglfsfunctions/qeglfsfunctions_p.h
|
# eglfsfunctions/qeglfsfunctions_p.h
|
||||||
# helper/qplatformheaderhelper_p.h
|
# helper/qplatformheaderhelper_p.h
|
||||||
# waylandfunctions/qwaylandwindowfunctions_p.h
|
# waylandfunctions/qwaylandwindowfunctions_p.h
|
||||||
# windowsfunctions/qwindowswindowfunctions_p.h
|
|
||||||
# special case end
|
# special case end
|
||||||
PUBLIC_LIBRARIES
|
PUBLIC_LIBRARIES
|
||||||
Qt::Core
|
Qt::Core
|
||||||
|
@ -2,7 +2,6 @@ TARGET = QtPlatformHeaders
|
|||||||
CONFIG += header_module
|
CONFIG += header_module
|
||||||
|
|
||||||
include(eglfsfunctions/eglfsfunctions.pri)
|
include(eglfsfunctions/eglfsfunctions.pri)
|
||||||
include(windowsfunctions/windowsfunctions.pri)
|
|
||||||
include(helper/helper.pri)
|
include(helper/helper.pri)
|
||||||
include(waylandfunctions/waylandfunctions.pri)
|
include(waylandfunctions/waylandfunctions.pri)
|
||||||
|
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** Copyright (C) 2016 The Qt Company Ltd.
|
|
||||||
** Contact: https://www.qt.io/licensing/
|
|
||||||
**
|
|
||||||
** This file is part of the documentation of the Qt Toolkit.
|
|
||||||
**
|
|
||||||
** $QT_BEGIN_LICENSE:FDL$
|
|
||||||
** 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 Free Documentation License Usage
|
|
||||||
** Alternatively, this file may be used under the terms of the GNU Free
|
|
||||||
** Documentation License version 1.3 as published by the Free Software
|
|
||||||
** Foundation and appearing in the file included in the packaging of
|
|
||||||
** this file. Please review the following information to ensure
|
|
||||||
** the GNU Free Documentation License version 1.3 requirements
|
|
||||||
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
|
|
||||||
** $QT_END_LICENSE$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\class QWindowsWindowFunctions
|
|
||||||
\inmodule QtPlatformHeaders
|
|
||||||
\inheaderfile QtPlatformHeaders/QWindowsWindowFunctions
|
|
||||||
\since 5.5
|
|
||||||
\brief The QWindowsWindowFunctions class is an inline class containing
|
|
||||||
miscellaneous functionality for Windows window specific functionality.
|
|
||||||
|
|
||||||
A common usage pattern is as follows:
|
|
||||||
\snippet qwindowswindowfunctions/main.cpp 0
|
|
||||||
|
|
||||||
\note There is no binary compatibility guarantee for this class,
|
|
||||||
meaning that an application using it is only guaranteed to work with the Qt
|
|
||||||
version it was developed against.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\typedef QWindowsWindowFunctions::SetHasBorderInFullScreen
|
|
||||||
|
|
||||||
This is the typedef for the function returned by QGuiApplication::platformFunction when passed setHasBorderInFullScreenIdentifier.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn QByteArray QWindowsWindowFunctions::setHasBorderInFullScreenIdentifier()
|
|
||||||
\since 5.6
|
|
||||||
|
|
||||||
This function returns the bytearray that can be used to query
|
|
||||||
QGuiApplication::platformFunction to retrieve the SetHasBorderInFullScreen function.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn void QWindowsWindowFunctions::setHasBorderInFullScreen(QWindow *window, bool border)
|
|
||||||
\since 5.6
|
|
||||||
|
|
||||||
This is a convenience function that can be used directly instead of resolving the function pointer.
|
|
||||||
\a window and \a border will be relayed to the function retrieved by QGuiApplication. When \a border
|
|
||||||
is true then it will enable the WS_BORDER flag in full screen mode to enable other top level windows
|
|
||||||
inside the application to appear on top when required.
|
|
||||||
|
|
||||||
\note The setting must be applied before showing the window or switching it
|
|
||||||
to full screen. For QML, setHasBorderInFullScreenDefault() can be used to
|
|
||||||
set a default value.
|
|
||||||
|
|
||||||
See also \l [QtDoc] {Fullscreen OpenGL Based Windows}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\typedef QWindowsWindowFunctions::SetHasBorderInFullScreenDefault
|
|
||||||
\since 5.13
|
|
||||||
|
|
||||||
This is the typedef for the function returned by QGuiApplication::platformFunction
|
|
||||||
when passed setHasBorderInFullScreenDefaultIdentifier.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn QByteArray QWindowsWindowFunctions::setHasBorderInFullScreenDefaultIdentifier()
|
|
||||||
\since 5.13
|
|
||||||
|
|
||||||
This function returns the bytearray that can be used to query
|
|
||||||
QGuiApplication::platformFunction to retrieve the SetHasBorderInFullScreen function.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\fn void QWindowsWindowFunctions::setHasBorderInFullScreenDefault(bool border)
|
|
||||||
\since 5.13
|
|
||||||
|
|
||||||
This is a convenience function that can be used directly instead of resolving
|
|
||||||
the function pointer. \a border will be relayed to the function retrieved by
|
|
||||||
QGuiApplication. When \a border is true, the WS_BORDER flag will be set
|
|
||||||
in full screen mode for all windows by default.
|
|
||||||
|
|
||||||
See also \l [QtDoc] {Fullscreen OpenGL Based Windows}
|
|
||||||
\sa setHasBorderInFullScreen()
|
|
||||||
*/
|
|
@ -1,85 +0,0 @@
|
|||||||
/****************************************************************************
|
|
||||||
**
|
|
||||||
** 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$
|
|
||||||
**
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
#ifndef QWINDOWSWINDOWFUNCTIONS_H
|
|
||||||
#define QWINDOWSWINDOWFUNCTIONS_H
|
|
||||||
|
|
||||||
//
|
|
||||||
// W A R N I N G
|
|
||||||
// -------------
|
|
||||||
//
|
|
||||||
// This file is not part of the Qt API. It exists purely as an
|
|
||||||
// implementation detail. This header file may change from version to
|
|
||||||
// version without notice, or even be removed.
|
|
||||||
//
|
|
||||||
// We mean it.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include <QtCore/QByteArray>
|
|
||||||
#include <QtGui/QGuiApplication>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
class QWindow;
|
|
||||||
|
|
||||||
class QWindowsWindowFunctions {
|
|
||||||
public:
|
|
||||||
typedef void (*SetHasBorderInFullScreen)(QWindow *window, bool border);
|
|
||||||
static const QByteArray setHasBorderInFullScreenIdentifier() { return QByteArrayLiteral("WindowsSetHasBorderInFullScreen"); }
|
|
||||||
static void setHasBorderInFullScreen(QWindow *window, bool border)
|
|
||||||
{
|
|
||||||
SetHasBorderInFullScreen func = reinterpret_cast<SetHasBorderInFullScreen>(QGuiApplication::platformFunction(setHasBorderInFullScreenIdentifier()));
|
|
||||||
if (func)
|
|
||||||
func(window, border);
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef void (*SetHasBorderInFullScreenDefault)(bool border);
|
|
||||||
static const QByteArray setHasBorderInFullScreenDefaultIdentifier() { return QByteArrayLiteral("WindowsSetHasBorderInFullScreenDefault"); }
|
|
||||||
static void setHasBorderInFullScreenDefault(bool border)
|
|
||||||
{
|
|
||||||
auto func = reinterpret_cast<SetHasBorderInFullScreenDefault>(QGuiApplication::platformFunction(setHasBorderInFullScreenDefaultIdentifier()));
|
|
||||||
if (func)
|
|
||||||
func(border);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
#endif // QWINDOWSWINDOWFUNCTIONS_H
|
|
@ -1 +0,0 @@
|
|||||||
HEADERS += $$PWD/qwindowswindowfunctions_p.h
|
|
@ -256,15 +256,6 @@ QFont QWindowsNativeInterface::logFontToQFont(const void *logFont, int verticalD
|
|||||||
return QWindowsFontDatabase::LOGFONT_to_QFont(*reinterpret_cast<const LOGFONT *>(logFont), verticalDpi);
|
return QWindowsFontDatabase::LOGFONT_to_QFont(*reinterpret_cast<const LOGFONT *>(logFont), verticalDpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFunctionPointer QWindowsNativeInterface::platformFunction(const QByteArray &function) const
|
|
||||||
{
|
|
||||||
if (function == QWindowsWindowFunctions::setHasBorderInFullScreenIdentifier())
|
|
||||||
return QFunctionPointer(QWindowsWindow::setHasBorderInFullScreenStatic);
|
|
||||||
if (function == QWindowsWindowFunctions::setHasBorderInFullScreenDefaultIdentifier())
|
|
||||||
return QFunctionPointer(QWindowsWindow::setHasBorderInFullScreenDefault);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant QWindowsNativeInterface::gpu() const
|
QVariant QWindowsNativeInterface::gpu() const
|
||||||
{
|
{
|
||||||
return GpuDescription::detect().toVariant();
|
return GpuDescription::detect().toVariant();
|
||||||
|
@ -42,7 +42,6 @@
|
|||||||
|
|
||||||
#include <QtGui/qfont.h>
|
#include <QtGui/qfont.h>
|
||||||
#include <QtGui/qpa/qplatformnativeinterface.h>
|
#include <QtGui/qpa/qplatformnativeinterface.h>
|
||||||
#include <QtPlatformHeaders/private/qwindowswindowfunctions_p.h>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
@ -104,8 +103,6 @@ public:
|
|||||||
QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) 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;
|
void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) override;
|
||||||
|
|
||||||
QFunctionPointer platformFunction(const QByteArray &function) const override;
|
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void darkModeChanged(bool);
|
void darkModeChanged(bool);
|
||||||
};
|
};
|
||||||
|
@ -1182,6 +1182,17 @@ QPoint QWindowsBaseWindow::mapFromGlobal(const QPoint &pos) const
|
|||||||
return QWindowsGeometryHint::mapFromGlobal(handle(), pos);
|
return QWindowsGeometryHint::mapFromGlobal(handle(), pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QWindowsBaseWindow::setHasBorderInFullScreen(bool)
|
||||||
|
{
|
||||||
|
Q_UNIMPLEMENTED();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool QWindowsBaseWindow::hasBorderInFullScreen() const
|
||||||
|
{
|
||||||
|
Q_UNIMPLEMENTED();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\class QWindowsDesktopWindow
|
\class QWindowsDesktopWindow
|
||||||
\brief Window wrapping GetDesktopWindow not allowing any manipulation.
|
\brief Window wrapping GetDesktopWindow not allowing any manipulation.
|
||||||
@ -3113,9 +3124,14 @@ void QWindowsWindow::setHasBorderInFullScreenDefault(bool border)
|
|||||||
m_borderInFullScreenDefault = border;
|
m_borderInFullScreenDefault = border;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QWindowsWindow::hasBorderInFullScreen() const
|
||||||
|
{
|
||||||
|
return testFlag(HasBorderInFullScreen);
|
||||||
|
}
|
||||||
|
|
||||||
void QWindowsWindow::setHasBorderInFullScreen(bool border)
|
void QWindowsWindow::setHasBorderInFullScreen(bool border)
|
||||||
{
|
{
|
||||||
if (testFlag(HasBorderInFullScreen) == border)
|
if (hasBorderInFullScreen() == border)
|
||||||
return;
|
return;
|
||||||
if (border)
|
if (border)
|
||||||
setFlag(HasBorderInFullScreen);
|
setFlag(HasBorderInFullScreen);
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
#include "qwindowscursor.h"
|
#include "qwindowscursor.h"
|
||||||
|
|
||||||
#include <qpa/qplatformwindow.h>
|
#include <qpa/qplatformwindow.h>
|
||||||
#include <QtPlatformHeaders/private/qwindowswindowfunctions_p.h>
|
#include <qpa/qplatformwindow_p.h>
|
||||||
|
|
||||||
#if QT_CONFIG(vulkan)
|
#if QT_CONFIG(vulkan)
|
||||||
#include "qwindowsvulkaninstance.h"
|
#include "qwindowsvulkaninstance.h"
|
||||||
@ -124,7 +124,8 @@ struct QWindowsWindowData
|
|||||||
const QString &title);
|
const QString &title);
|
||||||
};
|
};
|
||||||
|
|
||||||
class QWindowsBaseWindow : public QPlatformWindow
|
class QWindowsBaseWindow : public QPlatformWindow,
|
||||||
|
public QPlatformInterface::Private::QWindowsWindow
|
||||||
{
|
{
|
||||||
Q_DISABLE_COPY_MOVE(QWindowsBaseWindow)
|
Q_DISABLE_COPY_MOVE(QWindowsBaseWindow)
|
||||||
public:
|
public:
|
||||||
@ -140,6 +141,9 @@ public:
|
|||||||
QPoint mapFromGlobal(const QPoint &pos) const override;
|
QPoint mapFromGlobal(const QPoint &pos) const override;
|
||||||
virtual QMargins fullFrameMargins() const { return frameMargins_sys(); }
|
virtual QMargins fullFrameMargins() const { return frameMargins_sys(); }
|
||||||
|
|
||||||
|
void setHasBorderInFullScreen(bool border) override;
|
||||||
|
bool hasBorderInFullScreen() const override;
|
||||||
|
|
||||||
using QPlatformWindow::screenForGeometry;
|
using QPlatformWindow::screenForGeometry;
|
||||||
|
|
||||||
virtual HWND handle() const = 0;
|
virtual HWND handle() const = 0;
|
||||||
@ -358,7 +362,8 @@ public:
|
|||||||
void registerTouchWindow();
|
void registerTouchWindow();
|
||||||
static void setHasBorderInFullScreenStatic(QWindow *window, bool border);
|
static void setHasBorderInFullScreenStatic(QWindow *window, bool border);
|
||||||
static void setHasBorderInFullScreenDefault(bool border);
|
static void setHasBorderInFullScreenDefault(bool border);
|
||||||
void setHasBorderInFullScreen(bool border);
|
void setHasBorderInFullScreen(bool border) override;
|
||||||
|
bool hasBorderInFullScreen() const override;
|
||||||
static QString formatWindowTitle(const QString &title);
|
static QString formatWindowTitle(const QString &title);
|
||||||
|
|
||||||
static const char *embeddedNativeParentHandleProperty;
|
static const char *embeddedNativeParentHandleProperty;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user