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:
Tor Arne Vestbø 2020-10-14 12:20:38 +02:00
parent 1f66d914e4
commit 40e6fe7801
10 changed files with 439 additions and 450 deletions

View File

@ -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) \

View File

@ -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
*/

View File

@ -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

View File

@ -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.

View File

@ -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.
*/

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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