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 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
|
||||
|
||||
|
@ -41,6 +41,8 @@
|
||||
#include <QtGui/private/qguiapplication_p.h>
|
||||
#include <qpa/qplatformopenglcontext.h>
|
||||
#include <qpa/qplatformintegration.h>
|
||||
#include <qpa/qplatformwindow.h>
|
||||
#include <qpa/qplatformwindow_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -66,5 +68,6 @@ QOpenGLContext *QPlatformInterface::QWGLContext::fromNative(HGLRC context, HWND
|
||||
#endif // QT_NO_OPENGL
|
||||
|
||||
QT_DEFINE_PRIVATE_PLATFORM_INTERFACE(QWindowsApplication);
|
||||
QT_DEFINE_PRIVATE_PLATFORM_INTERFACE(QWindowsWindow);
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -10,7 +10,6 @@ qt_add_module(PlatformHeaders
|
||||
eglfsfunctions/qeglfsfunctions_p.h
|
||||
helper/qplatformheaderhelper_p.h
|
||||
waylandfunctions/qwaylandwindowfunctions_p.h
|
||||
windowsfunctions/qwindowswindowfunctions_p.h
|
||||
PUBLIC_LIBRARIES
|
||||
Qt::Core
|
||||
Qt::Gui
|
||||
|
@ -11,7 +11,6 @@ qt_add_module(PlatformHeaders
|
||||
# eglfsfunctions/qeglfsfunctions_p.h
|
||||
# helper/qplatformheaderhelper_p.h
|
||||
# waylandfunctions/qwaylandwindowfunctions_p.h
|
||||
# windowsfunctions/qwindowswindowfunctions_p.h
|
||||
# special case end
|
||||
PUBLIC_LIBRARIES
|
||||
Qt::Core
|
||||
|
@ -2,7 +2,6 @@ TARGET = QtPlatformHeaders
|
||||
CONFIG += header_module
|
||||
|
||||
include(eglfsfunctions/eglfsfunctions.pri)
|
||||
include(windowsfunctions/windowsfunctions.pri)
|
||||
include(helper/helper.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);
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
return GpuDescription::detect().toVariant();
|
||||
|
@ -42,7 +42,6 @@
|
||||
|
||||
#include <QtGui/qfont.h>
|
||||
#include <QtGui/qpa/qplatformnativeinterface.h>
|
||||
#include <QtPlatformHeaders/private/qwindowswindowfunctions_p.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
@ -104,8 +103,6 @@ public:
|
||||
QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const override;
|
||||
void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value) override;
|
||||
|
||||
QFunctionPointer platformFunction(const QByteArray &function) const override;
|
||||
|
||||
Q_SIGNALS:
|
||||
void darkModeChanged(bool);
|
||||
};
|
||||
|
@ -1182,6 +1182,17 @@ QPoint QWindowsBaseWindow::mapFromGlobal(const QPoint &pos) const
|
||||
return QWindowsGeometryHint::mapFromGlobal(handle(), pos);
|
||||
}
|
||||
|
||||
void QWindowsBaseWindow::setHasBorderInFullScreen(bool)
|
||||
{
|
||||
Q_UNIMPLEMENTED();
|
||||
}
|
||||
|
||||
bool QWindowsBaseWindow::hasBorderInFullScreen() const
|
||||
{
|
||||
Q_UNIMPLEMENTED();
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
\class QWindowsDesktopWindow
|
||||
\brief Window wrapping GetDesktopWindow not allowing any manipulation.
|
||||
@ -3113,9 +3124,14 @@ void QWindowsWindow::setHasBorderInFullScreenDefault(bool border)
|
||||
m_borderInFullScreenDefault = border;
|
||||
}
|
||||
|
||||
bool QWindowsWindow::hasBorderInFullScreen() const
|
||||
{
|
||||
return testFlag(HasBorderInFullScreen);
|
||||
}
|
||||
|
||||
void QWindowsWindow::setHasBorderInFullScreen(bool border)
|
||||
{
|
||||
if (testFlag(HasBorderInFullScreen) == border)
|
||||
if (hasBorderInFullScreen() == border)
|
||||
return;
|
||||
if (border)
|
||||
setFlag(HasBorderInFullScreen);
|
||||
|
@ -46,7 +46,7 @@
|
||||
#include "qwindowscursor.h"
|
||||
|
||||
#include <qpa/qplatformwindow.h>
|
||||
#include <QtPlatformHeaders/private/qwindowswindowfunctions_p.h>
|
||||
#include <qpa/qplatformwindow_p.h>
|
||||
|
||||
#if QT_CONFIG(vulkan)
|
||||
#include "qwindowsvulkaninstance.h"
|
||||
@ -124,7 +124,8 @@ struct QWindowsWindowData
|
||||
const QString &title);
|
||||
};
|
||||
|
||||
class QWindowsBaseWindow : public QPlatformWindow
|
||||
class QWindowsBaseWindow : public QPlatformWindow,
|
||||
public QPlatformInterface::Private::QWindowsWindow
|
||||
{
|
||||
Q_DISABLE_COPY_MOVE(QWindowsBaseWindow)
|
||||
public:
|
||||
@ -140,6 +141,9 @@ public:
|
||||
QPoint mapFromGlobal(const QPoint &pos) const override;
|
||||
virtual QMargins fullFrameMargins() const { return frameMargins_sys(); }
|
||||
|
||||
void setHasBorderInFullScreen(bool border) override;
|
||||
bool hasBorderInFullScreen() const override;
|
||||
|
||||
using QPlatformWindow::screenForGeometry;
|
||||
|
||||
virtual HWND handle() const = 0;
|
||||
@ -358,7 +362,8 @@ public:
|
||||
void registerTouchWindow();
|
||||
static void setHasBorderInFullScreenStatic(QWindow *window, 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 const char *embeddedNativeParentHandleProperty;
|
||||
|
Loading…
x
Reference in New Issue
Block a user