summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h7
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.mm18
2 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
index 2f79b49534..b1b8dccca5 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
@@ -52,6 +52,7 @@ class QWidget;
class QPlatformPrinterSupport;
class QPrintEngine;
class QPlatformMenu;
+class QPlatformMenuBar;
class QCocoaNativeInterface : public QPlatformNativeInterface
{
@@ -99,6 +100,12 @@ private:
// Dock menu support
static void setDockMenu(QPlatformMenu *platformMenu);
+ // Function to return NSMenu * from QPlatformMenu
+ static void *qMenuToNSMenu(QPlatformMenu *platformMenu);
+
+ // Function to return NSMenu * from QPlatformMenuBar
+ static void *qMenuBarToNSMenu(QPlatformMenuBar *platformMenuBar);
+
// QImage <-> CGImage conversion functions
static CGImageRef qImageToCGImage(const QImage &image);
static QImage cgImageToQImage(CGImageRef image);
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
index 9990537c1f..fde93a38db 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
@@ -109,6 +109,10 @@ QPlatformNativeInterface::NativeResourceForIntegrationFunction QCocoaNativeInter
return NativeResourceForIntegrationFunction(QCocoaNativeInterface::registerDraggedTypes);
if (resource.toLower() == "setdockmenu")
return NativeResourceForIntegrationFunction(QCocoaNativeInterface::setDockMenu);
+ if (resource.toLower() == "qmenutonsmenu")
+ return NativeResourceForIntegrationFunction(QCocoaNativeInterface::qMenuToNSMenu);
+ if (resource.toLower() == "qmenubartonsmenu")
+ return NativeResourceForIntegrationFunction(QCocoaNativeInterface::qMenuBarToNSMenu);
if (resource.toLower() == "qimagetocgimage")
return NativeResourceForIntegrationFunction(QCocoaNativeInterface::qImageToCGImage);
if (resource.toLower() == "cgimagetoqimage")
@@ -190,6 +194,20 @@ void QCocoaNativeInterface::setDockMenu(QPlatformMenu *platformMenu)
[NSApp setDockMenu: menu];
}
+void *QCocoaNativeInterface::qMenuToNSMenu(QPlatformMenu *platformMenu)
+{
+ QCocoaMenu *cocoaPlatformMenu = static_cast<QCocoaMenu *>(platformMenu);
+ NSMenu *menu = cocoaPlatformMenu->nsMenu();
+ return reinterpret_cast<void *>(menu);
+}
+
+void *QCocoaNativeInterface::qMenuBarToNSMenu(QPlatformMenuBar *platformMenuBar)
+{
+ QCocoaMenuBar *cocoaPlatformMenuBar = static_cast<QCocoaMenuBar *>(platformMenuBar);
+ NSMenu *menu = cocoaPlatformMenuBar->nsMenu();
+ return reinterpret_cast<void *>(menu);
+}
+
CGImageRef QCocoaNativeInterface::qImageToCGImage(const QImage &image)
{
return qt_mac_toCGImage(image, false, 0);