diff options
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.h | 7 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.mm | 18 |
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); |