summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-10-14 12:20:38 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-10-18 13:31:09 +0200
commit40e6fe780150161bb608f5df356bfe4f00861be5 (patch)
tree97749eb338e4365656d65da8bc1168570e9ca96d /src/gui
parent1f66d914e435e733a7741e6b98abf92594122c01 (diff)
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>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/doc/src/nativeinterfaces.qdoc422
-rw-r--r--src/gui/doc/src/qtgui.qdoc4
-rw-r--r--src/gui/kernel/qoffscreensurface.cpp25
-rw-r--r--src/gui/kernel/qopenglcontext.cpp8
-rw-r--r--src/gui/kernel/qopenglcontext_platform.h2
-rw-r--r--src/gui/platform/android/qandroidnativeinterface.cpp15
-rw-r--r--src/gui/platform/macos/qcocoanativeinterface.mm54
-rw-r--r--src/gui/platform/unix/qunixnativeinterface.cpp108
-rw-r--r--src/gui/platform/windows/qwindowsnativeinterface.cpp247
9 files changed, 437 insertions, 448 deletions
diff --git a/src/gui/doc/src/nativeinterfaces.qdoc b/src/gui/doc/src/nativeinterfaces.qdoc
deleted file mode 100644
index f7137a76a9..0000000000
--- a/src/gui/doc/src/nativeinterfaces.qdoc
+++ /dev/null
@@ -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
-*/
diff --git a/src/gui/doc/src/qtgui.qdoc b/src/gui/doc/src/qtgui.qdoc
index b8a71d5176..d6b013ea96 100644
--- a/src/gui/doc/src/qtgui.qdoc
+++ b/src/gui/doc/src/qtgui.qdoc
@@ -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
diff --git a/src/gui/kernel/qoffscreensurface.cpp b/src/gui/kernel/qoffscreensurface.cpp
index 3144bc6f8c..d80a081105 100644
--- a/src/gui/kernel/qoffscreensurface.cpp
+++ b/src/gui/kernel/qoffscreensurface.cpp
@@ -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
@@ -355,6 +343,19 @@ QPlatformOffscreenSurface *QOffscreenSurface::handle() const
}
/*!
+ \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.
\internal
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index 490d082fd4..6cc2d65a35 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -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.
*/
diff --git a/src/gui/kernel/qopenglcontext_platform.h b/src/gui/kernel/qopenglcontext_platform.h
index 80a29a1021..c0e1c59fdf 100644
--- a/src/gui/kernel/qopenglcontext_platform.h
+++ b/src/gui/kernel/qopenglcontext_platform.h
@@ -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
diff --git a/src/gui/platform/android/qandroidnativeinterface.cpp b/src/gui/platform/android/qandroidnativeinterface.cpp
index bdb322add0..b1063034a0 100644
--- a/src/gui/platform/android/qandroidnativeinterface.cpp
+++ b/src/gui/platform/android/qandroidnativeinterface.cpp
@@ -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
diff --git a/src/gui/platform/macos/qcocoanativeinterface.mm b/src/gui/platform/macos/qcocoanativeinterface.mm
index f9d5f5dbe5..5d199f8a0f 100644
--- a/src/gui/platform/macos/qcocoanativeinterface.mm
+++ b/src/gui/platform/macos/qcocoanativeinterface.mm
@@ -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);
diff --git a/src/gui/platform/unix/qunixnativeinterface.cpp b/src/gui/platform/unix/qunixnativeinterface.cpp
index 378282936e..43184daa12 100644
--- a/src/gui/platform/unix/qunixnativeinterface.cpp
+++ b/src/gui/platform/unix/qunixnativeinterface.cpp
@@ -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
diff --git a/src/gui/platform/windows/qwindowsnativeinterface.cpp b/src/gui/platform/windows/qwindowsnativeinterface.cpp
index 950c86d7fb..700a3b34bf 100644
--- a/src/gui/platform/windows/qwindowsnativeinterface.cpp
+++ b/src/gui/platform/windows/qwindowsnativeinterface.cpp
@@ -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