summaryrefslogtreecommitdiffstats
path: root/src/gui/platform/macos/qcocoanativeinterface.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/platform/macos/qcocoanativeinterface.mm')
-rw-r--r--src/gui/platform/macos/qcocoanativeinterface.mm86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/gui/platform/macos/qcocoanativeinterface.mm b/src/gui/platform/macos/qcocoanativeinterface.mm
new file mode 100644
index 0000000000..cb6acb4496
--- /dev/null
+++ b/src/gui/platform/macos/qcocoanativeinterface.mm
@@ -0,0 +1,86 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <QtGui/qtgui-config.h>
+#ifndef QT_NO_OPENGL
+# include <QtGui/private/qopenglcontext_p.h>
+#endif
+
+#include <QtGui/private/qguiapplication_p.h>
+#include <qpa/qplatformopenglcontext.h>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformwindow_p.h>
+#include <qpa/qplatformmenu_p.h>
+
+#include <AppKit/AppKit.h>
+
+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 \a context is retained. Ownership of the
+ created QOpenGLContext \a shareContext is transferred to the caller.
+*/
+
+/*!
+ \fn NSOpenGLContext *QNativeInterface::QCocoaGLContext::nativeContext() const
+
+ \return the underlying NSOpenGLContext.
+*/
+
+QT_DEFINE_NATIVE_INTERFACE(QCocoaGLContext);
+QT_DEFINE_PRIVATE_NATIVE_INTERFACE(QCocoaGLIntegration);
+
+QOpenGLContext *QNativeInterface::QCocoaGLContext::fromNative(NSOpenGLContext *nativeContext, QOpenGLContext *shareContext)
+{
+ return QGuiApplicationPrivate::platformIntegration()->call<
+ &QCocoaGLIntegration::createOpenGLContext>(nativeContext, shareContext);
+}
+
+#endif // QT_NO_OPENGL
+
+QT_END_NAMESPACE