doc: Update and flesh out native interface docs
The namespace and overviews are in the qtdoc repository. Docs for individual interfaces should live with their platform. Change-Id: Iba5fd7e9ebc4f1f634ec9dc3ec125ce88a1312ba Reviewed-by: Paul Wicking <paul.wicking@qt.io>
This commit is contained in:
parent
1f66d914e4
commit
40e6fe7801
@ -1268,8 +1268,8 @@ inline int qIntCast(float f) { return int(f); }
|
||||
|
||||
// Declares an accessor for the native interface
|
||||
#define QT_DECLARE_NATIVE_INTERFACE_ACCESSOR \
|
||||
template <typename NativeInterface> \
|
||||
NativeInterface *nativeInterface() const;
|
||||
template <typename QNativeInterface> \
|
||||
QNativeInterface *nativeInterface() const;
|
||||
|
||||
// Provides a definition for the interface destructor
|
||||
#define QT_DEFINE_NATIVE_INTERFACE2(Namespace, InterfaceClass) \
|
||||
|
@ -1,422 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 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$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/*!
|
||||
\group native_interfaces
|
||||
\title Native Interfaces
|
||||
|
||||
Native interfaces provide access to native APIs of the classes they extend.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\namespace QNativeInterface::Private
|
||||
\inmodule QtGui
|
||||
\since 6.0
|
||||
\brief Contains the classes providing native interfaces.
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QCocoaGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformOpenGLContext.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QCocoaMenu
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformMenu.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QCocoaWindow
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformWindow.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QEGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformOpenGLContext.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QEvdevKeyMapper
|
||||
\since 6.0
|
||||
\brief Native interface to QKeyMapper.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QGLXContext
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformOpenGLContext.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QWGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformOpenGLContext.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QWindowsApplication
|
||||
\since 6.0
|
||||
\brief Native interface to QGuiApplication, to be retrieved from QPlatformIntegration.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::TouchWindowTouchType
|
||||
|
||||
This enum represents the supported TouchWindow touch flags for registerTouchWindow().
|
||||
|
||||
\value NormalTouch
|
||||
\value FineTouch
|
||||
\value WantPalmTouch
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setTouchWindowTouchType(QNativeInterface::Private::QWindowsApplication::TouchWindowTouchTypes type)
|
||||
|
||||
Sets the touch window type for all windows to \a type.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::TouchWindowTouchTypes QNativeInterface::Private::QWindowsApplication::touchWindowTouchType() const
|
||||
|
||||
Returns the currently set the touch window type.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior
|
||||
|
||||
This enum specifies the behavior of QWidget::activateWindow() and
|
||||
QWindow::requestActivate().
|
||||
|
||||
\value DefaultActivateWindow The window is activated according to the default
|
||||
behavior of the Windows operating system. This means the window will not
|
||||
be activated in some circumstances (most notably when the calling process
|
||||
is not the active process); only the taskbar entry will be flashed.
|
||||
\value AlwaysActivateWindow The window is always activated, even when the
|
||||
calling process is not the active process.
|
||||
|
||||
\sa QWidget::activateWindow(), QWindow::requestActivate()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setWindowActivationBehavior(QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior behavior)
|
||||
|
||||
Sets the window activation behavior to \a behavior.
|
||||
|
||||
\sa QWidget::activateWindow(), QWindow::requestActivate()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior QNativeInterface::Private::QWindowsApplication::windowActivationBehavior() const
|
||||
|
||||
Returns the currently set the window activation behavior.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isTabletMode() const
|
||||
|
||||
Returns \c true if Windows 10 operates in \e{Tablet Mode}.
|
||||
In this mode, Windows forces all application main windows to open in maximized
|
||||
state. Applications should then avoid resizing windows or restoring geometries
|
||||
to non-maximized states.
|
||||
|
||||
\sa QWidget::showMaximized(), QWidget::saveGeometry(), QWidget::restoreGeometry()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::DarkModeHandlingFlag
|
||||
|
||||
This enum specifies the behavior of the application when Windows
|
||||
is configured to use dark mode for applications.
|
||||
|
||||
\value DarkModeWindowFrames The window frames will be switched to dark.
|
||||
\value DarkModeStyle The Windows Vista style will be turned off and
|
||||
a simple dark style will be used.
|
||||
|
||||
\sa isDarkMode(), setDarkModeHandling()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isDarkMode() const
|
||||
|
||||
Returns \c true if Windows 10 is configured to use dark mode for
|
||||
applications.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setDarkModeHandling(DarkModeHandling handling)
|
||||
|
||||
Sets the dark mode handling to \a handling.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::DarkModeHandling QNativeInterface::Private::QWindowsApplication::darkModeHandling() const
|
||||
|
||||
Returns the currently set dark mode handling.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isWinTabEnabled() const
|
||||
|
||||
Returns whether the \e{Tablet WinTab Driver} (\c Wintab32.dll) is used.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::setWinTabEnabled(bool enabled)
|
||||
|
||||
Sets whether the \e{Tablet WinTab Driver} (\c Wintab32.dll) should be used to \a enabled.
|
||||
|
||||
Returns \c true on success, \c false otherwise.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::registerMime(QWindowsMime *mime)
|
||||
|
||||
Registers the converter \a mime to the system.
|
||||
|
||||
\sa QNativeInterface::Private::QWindowsMime, unregisterMime()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::unregisterMime(QWindowsMime *mime)
|
||||
|
||||
Unregisters the converter \a mime from the system.
|
||||
|
||||
\sa QNativeInterface::Private::QWindowsMime, registerMime()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn int QNativeInterface::Private::QWindowsApplication::registerMimeType(const QString &mime)
|
||||
|
||||
Registers the MIME type \a mime, and returns an ID number
|
||||
identifying the format on Windows.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn HWND QNativeInterface::Private::QWindowsApplication::createMessageWindow(const QString &, const QString &, QFunctionPointer) const
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::asyncExpose() const
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setAsyncExpose(bool)
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QNativeInterface::Private::QWindowsApplication::gpu()
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QNativeInterface::Private::QWindowsApplication::gpuList()
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QWindowsMime
|
||||
\since 6.0
|
||||
\brief The QWindowsMime class maps open-standard MIME to Window Clipboard formats.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
|
||||
Qt's drag-and-drop and clipboard facilities use the MIME standard.
|
||||
On X11, this maps trivially to the Xdnd protocol, but on Windows
|
||||
although some applications use MIME types to describe clipboard
|
||||
formats, others use arbitrary non-standardized naming conventions,
|
||||
or unnamed built-in formats of Windows.
|
||||
|
||||
By instantiating subclasses of QWinMime that provide conversions
|
||||
between Windows Clipboard and MIME formats, you can convert
|
||||
proprietary clipboard formats to MIME formats.
|
||||
|
||||
Qt has predefined support for the following Windows Clipboard formats:
|
||||
|
||||
\table
|
||||
\header \li Windows Format \li Equivalent MIME type
|
||||
\row \li \c CF_UNICODETEXT \li \c text/plain
|
||||
\row \li \c CF_TEXT \li \c text/plain
|
||||
\row \li \c CF_DIB \li \c{image/xyz}, where \c xyz is
|
||||
a \l{QImageWriter::supportedImageFormats()}{Qt image format}
|
||||
\row \li \c CF_HDROP \li \c text/uri-list
|
||||
\row \li \c CF_INETURL \li \c text/uri-list
|
||||
\row \li \c CF_HTML \li \c text/html
|
||||
\endtable
|
||||
|
||||
An example use of this class would be to map the Windows Metafile
|
||||
clipboard format (\c CF_METAFILEPICT) to and from the MIME type
|
||||
\c{image/x-wmf}. This conversion might simply be adding or removing
|
||||
a header, or even just passing on the data. See \l{Drag and Drop}
|
||||
for more information on choosing and definition MIME types.
|
||||
|
||||
You can check if a MIME type is convertible using canConvertFromMime() and
|
||||
can perform conversions with convertToMime() and convertFromMime().
|
||||
|
||||
\since 6.0
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsMime::~QWindowsMime()
|
||||
|
||||
Destroys the conversion object.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsMime::canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const
|
||||
|
||||
Returns \c true if the converter can convert from the \a mimeData to
|
||||
the format specified in \a formatetc.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsMime::canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const
|
||||
|
||||
Returns \c true if the converter can convert to the \a mimeType from
|
||||
the available formats in \a pDataObj.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QString QNativeInterface::Private::QWindowsMime::mimeForFormat(const FORMATETC &formatetc) const
|
||||
|
||||
Returns the mime type that will be created form the format specified
|
||||
in \a formatetc, or an empty string if this converter does not support
|
||||
\a formatetc.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QList<FORMATETC> QNativeInterface::Private::QWindowsMime::formatsForMime(const QString &mimeType, const QMimeData *mimeData) const
|
||||
|
||||
Returns a QList of FORMATETC structures representing the different windows clipboard
|
||||
formats that can be provided for the \a mimeType from the \a mimeData.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QNativeInterface::Private::QWindowsMime::convertToMime(const QString &mimeType, IDataObject *pDataObj,
|
||||
QVariant::Type preferredType) const
|
||||
|
||||
Returns a QVariant containing the converted data for \a mimeType from \a pDataObj.
|
||||
If possible the QVariant should be of the \a preferredType to avoid needless conversions.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsMime::convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM * pmedium) const
|
||||
|
||||
Convert the \a mimeData to the format specified in \a formatetc.
|
||||
The converted data should then be placed in \a pmedium structure.
|
||||
|
||||
Return true if the conversion was successful.
|
||||
|
||||
All subclasses must reimplement this pure virtual function.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QWindowsWindow
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformWindow.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsWindow::setHasBorderInFullScreen(bool border)
|
||||
|
||||
Sets whether the WS_BORDER flag will be set for the window in full screen mode
|
||||
to \a border.
|
||||
|
||||
See also \l [QtDoc] {Fullscreen OpenGL Based Windows}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsWindow::hasBorderInFullScreen() const
|
||||
|
||||
Returns whether the WS_BORDER flag will be set for the window in full screen
|
||||
mode.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QMargins QNativeInterface::Private::QWindowsWindow::customMargins() const
|
||||
|
||||
Returns the margin to be used when handling the \c WM_NCCALCSIZE message.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsWindow::setCustomMargins(const QMargins &margins)
|
||||
|
||||
Sets the\a margins to be used when handling the \c WM_NCCALCSIZE message. It is
|
||||
possible to remove a frame border by specifying a negative value.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QXcbScreen
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformScreen.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QXcbWindow
|
||||
\since 6.0
|
||||
\brief Native interface to QPlatformWindow.
|
||||
\inmodule QtGui
|
||||
\ingroup native_interfaces
|
||||
*/
|
@ -113,10 +113,6 @@
|
||||
and font handling, classes like QRawFont and QGlyphRun can be
|
||||
used.
|
||||
|
||||
\section1 Native Interfaces
|
||||
|
||||
See \l{Native Interfaces}.
|
||||
|
||||
\section1 OpenGL and OpenGL ES Integration
|
||||
|
||||
QWindow supports rendering using OpenGL and OpenGL ES, depending
|
||||
|
@ -50,18 +50,6 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
|
||||
/*!
|
||||
\fn template <typename NativeInterface> NativeInterface *QOffScreenSurface::nativeInterface()
|
||||
|
||||
Returns a native interface of type \c NativeInterface for the surface.
|
||||
|
||||
This function provides access to platform specific functionality
|
||||
of QOffScreenSurface, as defined in the QNativeInterface namespace.
|
||||
|
||||
If the requested interface is not available a \nullptr is returned.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QOffscreenSurface
|
||||
\inmodule QtGui
|
||||
@ -354,6 +342,19 @@ QPlatformOffscreenSurface *QOffscreenSurface::handle() const
|
||||
return d->platformOffscreenSurface;
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn template <typename QNativeInterface> QNativeInterface *QOffscreenSurface::nativeInterface() const
|
||||
|
||||
Returns a native interface of the given type for the surface.
|
||||
|
||||
This function provides access to platform specific functionality
|
||||
of QOffScreenSurface, as defined in the QNativeInterface namespace:
|
||||
|
||||
\annotatedlist native-interfaces-qoffscreensurface
|
||||
|
||||
If the requested interface is not available a \nullptr is returned.
|
||||
*/
|
||||
|
||||
/*!
|
||||
Returns the platform surface corresponding to the offscreen surface.
|
||||
|
||||
|
@ -347,12 +347,14 @@ void QOpenGLContextPrivate::_q_screenDestroyed(QObject *object)
|
||||
}
|
||||
|
||||
/*!
|
||||
\fn template <typename NativeInterface> NativeInterface *QOpenGLContext::nativeInterface() const
|
||||
\fn template <typename QNativeInterface> QNativeInterface *QOpenGLContext::nativeInterface() const
|
||||
|
||||
Returns a native interface of type \c NativeInterface for the context.
|
||||
Returns a native interface of the given type for the context.
|
||||
|
||||
This function provides access to platform specific functionality
|
||||
of QOpenGLContext, as defined in the QNativeInterface namespace.
|
||||
of QOpenGLContext, as defined in the QNativeInterface namespace:
|
||||
|
||||
\annotatedlist native-interfaces-qopenglcontext
|
||||
|
||||
If the requested interface is not available a \nullptr is returned.
|
||||
*/
|
||||
|
@ -70,7 +70,7 @@ namespace QNativeInterface {
|
||||
struct Q_GUI_EXPORT QCocoaGLContext
|
||||
{
|
||||
QT_DECLARE_NATIVE_INTERFACE(QCocoaGLContext)
|
||||
static QOpenGLContext *fromNative(QT_IGNORE_DEPRECATIONS(NSOpenGLContext) *, QOpenGLContext *shareContext = nullptr);
|
||||
static QOpenGLContext *fromNative(QT_IGNORE_DEPRECATIONS(NSOpenGLContext) *context, QOpenGLContext *shareContext = nullptr);
|
||||
virtual QT_IGNORE_DEPRECATIONS(NSOpenGLContext) *nativeContext() const = 0;
|
||||
};
|
||||
#endif
|
||||
|
@ -47,7 +47,19 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
using namespace QNativeInterface::Private;
|
||||
|
||||
#if defined(Q_OS_ANDROID)
|
||||
/*!
|
||||
\class QNativeInterface::QAndroidOffscreenSurface
|
||||
\since 6.0
|
||||
\brief Native interface to a offscreen surface on Android.
|
||||
|
||||
Accessed through QOffscreenSurface::nativeInterface().
|
||||
|
||||
\inmodule QtGui
|
||||
\inheaderfile QOffscreenSurface
|
||||
\ingroup native-interfaces
|
||||
\ingroup native-interfaces-qoffscreensurface
|
||||
*/
|
||||
|
||||
QT_DEFINE_NATIVE_INTERFACE(QAndroidOffscreenSurface, QOffscreenSurface);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QAndroidOffScreenIntegration);
|
||||
|
||||
@ -56,6 +68,5 @@ QOffscreenSurface *QNativeInterface::QAndroidOffscreenSurface::fromNative(ANati
|
||||
return QGuiApplicationPrivate::platformIntegration()->call<
|
||||
&QAndroidOffScreenIntegration::createOffscreenSurface>(nativeSurface);
|
||||
}
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -50,12 +50,66 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
using namespace QNativeInterface::Private;
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QCocoaWindow
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface for QPlatformWindow on \macos.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QCocoaWindow);
|
||||
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QCocoaMenu
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface for QPlatformMenu on \macos.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QCocoaMenu);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QCocoaMenuBar);
|
||||
|
||||
#ifndef QT_NO_OPENGL
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QCocoaGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to an NSOpenGLContext on \macos.
|
||||
|
||||
Accessed through QOpenGLContext::nativeInterface().
|
||||
|
||||
\inmodule QtGui
|
||||
\inheaderfile QOpenGLContext
|
||||
\ingroup native-interfaces
|
||||
\ingroup native-interfaces-qopenglcontext
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QOpenGLContext *QNativeInterface::QCocoaGLContext::fromNative(NSOpenGLContext *context, QOpenGLContext *shareContext = nullptr)
|
||||
|
||||
\brief Adopts an NSOpenGLContext.
|
||||
|
||||
The adopted NSOpenGLContext is retained. Ownership of the created QOpenGLContext is transferred to the caller.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn NSOpenGLContext *QNativeInterface::QCocoaGLContext::nativeContext() const
|
||||
|
||||
\return the underlying NSOpenGLContext.
|
||||
*/
|
||||
|
||||
struct Q_GUI_EXPORT QCocoaGLContext
|
||||
{
|
||||
QT_DECLARE_NATIVE_INTERFACE(QCocoaGLContext)
|
||||
static QOpenGLContext *fromNative(QT_IGNORE_DEPRECATIONS(NSOpenGLContext) *, QOpenGLContext *shareContext = nullptr);
|
||||
virtual QT_IGNORE_DEPRECATIONS(NSOpenGLContext) *nativeContext() const = 0;
|
||||
};
|
||||
|
||||
QT_DEFINE_NATIVE_INTERFACE(QCocoaGLContext, QOpenGLContext);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QCocoaGLIntegration);
|
||||
|
||||
|
@ -56,6 +56,46 @@ using namespace QNativeInterface::Private;
|
||||
#ifndef QT_NO_OPENGL
|
||||
|
||||
#if defined(Q_OS_LINUX)
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QGLXContext
|
||||
\since 6.0
|
||||
\brief Native interface to a GLX context.
|
||||
|
||||
Accessed through QOpenGLContext::nativeInterface().
|
||||
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
\ingroup native-interfaces-qopenglcontext
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QOpenGLContext *QNativeInterface::QGLXContext::fromNative(GLXContext configBasedContext, QOpenGLContext *shareContext = nullptr)
|
||||
|
||||
\brief Adopts a GLXContext created from an FBConfig.
|
||||
|
||||
The context must be created from a framebuffer configuration, using the \c glXCreateNewContext function.
|
||||
|
||||
Ownership of the created QOpenGLContext is transferred to the caller.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QOpenGLContext *QNativeInterface::QGLXContext::fromNative(GLXContext visualBasedContext, void *visualInfo, QOpenGLContext *shareContext = nullptr)
|
||||
|
||||
\brief Adopts a GLXContext created from an X visual.
|
||||
|
||||
The context must be created from a visual, using the \c glXCreateContext function.
|
||||
The same visual must be passed as a pointer to an \c XVisualInfo struct, in the \a visualInfo argument.
|
||||
|
||||
Ownership of the created QOpenGLContext is transferred to the caller.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn GLXContext QNativeInterface::QGLXContext::nativeContext() const
|
||||
|
||||
\return the underlying GLXContext.
|
||||
*/
|
||||
|
||||
QT_DEFINE_NATIVE_INTERFACE(QGLXContext, QOpenGLContext);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QGLXIntegration);
|
||||
|
||||
@ -70,9 +110,38 @@ QOpenGLContext *QNativeInterface::QGLXContext::fromNative(GLXContext visualBased
|
||||
return QGuiApplicationPrivate::platformIntegration()->call<
|
||||
&QGLXIntegration::createOpenGLContext>(visualBasedContext, visualInfo, shareContext);
|
||||
}
|
||||
#endif
|
||||
#endif // defined(Q_OS_LINUX)
|
||||
|
||||
#if QT_CONFIG(egl)
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QEGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to an EGL context.
|
||||
|
||||
Accessed through QOpenGLContext::nativeInterface().
|
||||
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
\ingroup native-interfaces-qopenglcontext
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QOpenGLContext *QNativeInterface::QEGLContext::fromNative(EGLContext context, EGLDisplay display, QOpenGLContext *shareContext = nullptr)
|
||||
|
||||
\brief Adopts an EGLContext.
|
||||
|
||||
The same \c EGLDisplay passed to \c eglCreateContext must be passed as the \a display argument.
|
||||
|
||||
Ownership of the created QOpenGLContext is transferred to the caller.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn EGLContext QNativeInterface::QEGLContext::nativeContext() const
|
||||
|
||||
\return the underlying EGLContext.
|
||||
*/
|
||||
|
||||
QT_DEFINE_NATIVE_INTERFACE(QEGLContext, QOpenGLContext);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QEGLIntegration);
|
||||
|
||||
@ -81,20 +150,51 @@ QOpenGLContext *QNativeInterface::QEGLContext::fromNative(EGLContext context, EG
|
||||
return QGuiApplicationPrivate::platformIntegration()->call<
|
||||
&QEGLIntegration::createOpenGLContext>(context, display, shareContext);
|
||||
}
|
||||
#endif
|
||||
#endif // QT_CONFIG(egl)
|
||||
|
||||
#endif // QT_NO_OPENGL
|
||||
|
||||
#if QT_CONFIG(xcb)
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QXcbScreen
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface to QPlatformScreen.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QXcbScreen);
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QXcbWindow
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface to QPlatformWindow.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QXcbWindow);
|
||||
#endif
|
||||
|
||||
#endif // QT_CONFIG(xcb)
|
||||
|
||||
#if QT_CONFIG(vsp2)
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QVsp2Screen);
|
||||
#endif
|
||||
|
||||
#if QT_CONFIG(evdev)
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QEvdevKeyMapper
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface to QKeyMapper.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QEvdevKeyMapper);
|
||||
|
||||
template <>
|
||||
@ -102,6 +202,6 @@ QEvdevKeyMapper *QKeyMapper::nativeInterface<QEvdevKeyMapper>() const
|
||||
{
|
||||
return dynamic_cast<QEvdevKeyMapper*>(QGuiApplicationPrivate::platformIntegration());
|
||||
}
|
||||
#endif
|
||||
#endif // QT_CONFIG(evdev)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -51,6 +51,48 @@ using namespace QNativeInterface::Private;
|
||||
|
||||
#ifndef QT_NO_OPENGL
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::QWGLContext
|
||||
\since 6.0
|
||||
\brief Native interface to a WGL context on Windows.
|
||||
|
||||
Accessed through QOpenGLContext::nativeInterface().
|
||||
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
\ingroup native-interfaces-qopenglcontext
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QOpenGLContext *QNativeInterface::QWGLContext::fromNative(HGLRC context, HWND window, QOpenGLContext *shareContext = nullptr)
|
||||
|
||||
\brief Adopts an WGL context handle.
|
||||
|
||||
The \a window is needed because the its pixel format will be queried. When the
|
||||
adoption is successful, QOpenGLContext::format() will return a QSurfaceFormat
|
||||
describing this pixel format.
|
||||
|
||||
\note The window specified by \a window must have its pixel format set to a
|
||||
format compatible with the context's. If no SetPixelFormat() call was made on
|
||||
any device context belonging to the window, adopting the context will fail.
|
||||
|
||||
Ownership of the created QOpenGLContext is transferred to the caller.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn HGLRC QNativeInterface::QWGLContext::nativeContext() const
|
||||
|
||||
\return the underlying context handle.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn HMODULE QNativeInterface::QWGLContext::openGLModuleHandle()
|
||||
|
||||
\return the handle for the OpenGL implementation that is currently in use.
|
||||
|
||||
\note This function requires that the QGuiApplication instance is already created.
|
||||
*/
|
||||
|
||||
QT_DEFINE_NATIVE_INTERFACE(QWGLContext, QOpenGLContext);
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QWindowsGLIntegration);
|
||||
|
||||
@ -68,7 +110,212 @@ QOpenGLContext *QNativeInterface::QWGLContext::fromNative(HGLRC context, HWND wi
|
||||
|
||||
#endif // QT_NO_OPENGL
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QWindowsApplication
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface to QGuiApplication, to be retrieved from QPlatformIntegration.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QWindowsApplication);
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::TouchWindowTouchType
|
||||
|
||||
This enum represents the supported TouchWindow touch flags for registerTouchWindow().
|
||||
|
||||
\value NormalTouch
|
||||
\value FineTouch
|
||||
\value WantPalmTouch
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setTouchWindowTouchType(QNativeInterface::Private::QWindowsApplication::TouchWindowTouchTypes type)
|
||||
|
||||
Sets the touch window type for all windows to \a type.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::TouchWindowTouchTypes QNativeInterface::Private::QWindowsApplication::touchWindowTouchType() const
|
||||
|
||||
Returns the currently set the touch window type.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior
|
||||
|
||||
This enum specifies the behavior of QWidget::activateWindow() and
|
||||
QWindow::requestActivate().
|
||||
|
||||
\value DefaultActivateWindow The window is activated according to the default
|
||||
behavior of the Windows operating system. This means the window will not
|
||||
be activated in some circumstances (most notably when the calling process
|
||||
is not the active process); only the taskbar entry will be flashed.
|
||||
\value AlwaysActivateWindow The window is always activated, even when the
|
||||
calling process is not the active process.
|
||||
|
||||
\sa QWidget::activateWindow(), QWindow::requestActivate()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setWindowActivationBehavior(QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior behavior)
|
||||
|
||||
Sets the window activation behavior to \a behavior.
|
||||
|
||||
\sa QWidget::activateWindow(), QWindow::requestActivate()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::WindowActivationBehavior QNativeInterface::Private::QWindowsApplication::windowActivationBehavior() const
|
||||
|
||||
Returns the currently set the window activation behavior.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isTabletMode() const
|
||||
|
||||
Returns \c true if Windows 10 operates in \e{Tablet Mode}.
|
||||
In this mode, Windows forces all application main windows to open in maximized
|
||||
state. Applications should then avoid resizing windows or restoring geometries
|
||||
to non-maximized states.
|
||||
|
||||
\sa QWidget::showMaximized(), QWidget::saveGeometry(), QWidget::restoreGeometry()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QNativeInterface::Private::QWindowsApplication::DarkModeHandlingFlag
|
||||
|
||||
This enum specifies the behavior of the application when Windows
|
||||
is configured to use dark mode for applications.
|
||||
|
||||
\value DarkModeWindowFrames The window frames will be switched to dark.
|
||||
\value DarkModeStyle The Windows Vista style will be turned off and
|
||||
a simple dark style will be used.
|
||||
|
||||
\sa isDarkMode(), setDarkModeHandling()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isDarkMode() const = 0
|
||||
|
||||
Returns \c true if Windows 10 is configured to use dark mode for
|
||||
applications.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setDarkModeHandling(DarkModeHandling handling) = 0
|
||||
|
||||
Sets the dark mode handling to \a handling.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QNativeInterface::Private::QWindowsApplication::DarkModeHandling QNativeInterface::Private::QWindowsApplication::darkModeHandling() const
|
||||
|
||||
Returns the currently set dark mode handling.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::isWinTabEnabled() const = 0
|
||||
|
||||
Returns whether the \e{Tablet WinTab Driver} (\c Wintab32.dll) is used.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::setWinTabEnabled(bool enabled)
|
||||
|
||||
Sets whether the \e{Tablet WinTab Driver} (\c Wintab32.dll) should be used to \a enabled.
|
||||
|
||||
Returns \c true on success, \c false otherwise.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::registerMime(QWindowsMime *mime)
|
||||
|
||||
Registers the converter \a mime to the system.
|
||||
|
||||
\sa QNativeInterface::Private::QWindowsMime, unregisterMime()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::unregisterMime(QWindowsMime *mime)
|
||||
|
||||
Unregisters the converter \a mime from the system.
|
||||
|
||||
\sa QNativeInterface::Private::QWindowsMime, registerMime()
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn int QNativeInterface::Private::QWindowsApplication::registerMimeType(const QString &mime)
|
||||
|
||||
Registers the MIME type \a mime, and returns an ID number
|
||||
identifying the format on Windows.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn HWND QNativeInterface::Private::QWindowsApplication::createMessageWindow(const QString &, const QString &, QFunctionPointer) const
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsApplication::asyncExpose() const
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsApplication::setAsyncExpose(bool)
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QNativeInterface::Private::QWindowsApplication::gpu()
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QVariant QNativeInterface::Private::QWindowsApplication::gpuList()
|
||||
\internal
|
||||
*/
|
||||
|
||||
/*!
|
||||
\class QNativeInterface::Private::QWindowsWindow
|
||||
\since 6.0
|
||||
\internal
|
||||
\brief Native interface to QPlatformWindow.
|
||||
\inmodule QtGui
|
||||
\ingroup native-interfaces
|
||||
*/
|
||||
|
||||
QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QWindowsWindow);
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsWindow::setHasBorderInFullScreen(bool border)
|
||||
|
||||
Sets whether the WS_BORDER flag will be set for the window in full screen mode
|
||||
to \a border.
|
||||
|
||||
See also \l [QtDoc] {Fullscreen OpenGL Based Windows}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn bool QNativeInterface::Private::QWindowsWindow::hasBorderInFullScreen() const
|
||||
|
||||
Returns whether the WS_BORDER flag will be set for the window in full screen
|
||||
mode.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QMargins QNativeInterface::Private::QWindowsWindow::customMargins() const
|
||||
|
||||
Returns the margin to be used when handling the \c WM_NCCALCSIZE message.
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn void QNativeInterface::Private::QWindowsWindow::setCustomMargins(const QMargins &margins)
|
||||
|
||||
Sets the\a margins to be used when handling the \c WM_NCCALCSIZE message. It is
|
||||
possible to remove a frame border by specifying a negative value.
|
||||
*/
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
Loading…
Reference in New Issue
Block a user