summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-05-13 19:36:51 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-07 11:49:27 +0200
commitd7fc2fb5c666e58facfa15e64551a80dfda2c9d2 (patch)
tree4140e6e5cebb26a7820dd31f92286f504422d371 /src/plugins
parent7ad5c5346f3298d90f12531231cd021768f1fb26 (diff)
macOS: Remove QMenu indirection via QPlatformNativeInterface
Task-number: QTBUG-83252 Change-Id: I0c750d2b1912ced343d96ea0ca081c3319be2889 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm7
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenubar.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h9
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.mm28
5 files changed, 12 insertions, 40 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h
index 852642498b..bacc1f75cd 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.h
+++ b/src/plugins/platforms/cocoa/qcocoamenu.h
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
class QCocoaMenuBar;
class QCocoaMenu : public QPlatformMenu, public QCocoaMenuObject
+ , public QPlatformInterface::Private::QCocoaMenu
{
public:
QCocoaMenu();
@@ -76,7 +77,8 @@ public:
void setMinimumWidth(int width) override;
void setFont(const QFont &font) override;
- NSMenu *nsMenu() const;
+ NSMenu *nsMenu() const override;
+ void setAsDockMenu() const override;
inline bool isVisible() const { return m_visible; }
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index c19fd5b752..8937765f6b 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -52,6 +52,7 @@
#include "qcocoamenubar.h"
#include "qcocoawindow.h"
#include "qcocoascreen.h"
+#include "qcocoaapplicationdelegate.h"
QT_BEGIN_NAMESPACE
@@ -104,6 +105,12 @@ NSMenu *QCocoaMenu::nsMenu() const
return static_cast<NSMenu *>(m_nativeMenu);
}
+void QCocoaMenu::setAsDockMenu() const
+{
+ QMacAutoReleasePool pool;
+ QCocoaApplicationDelegate.sharedDelegate.dockMenu = m_nativeMenu;
+}
+
void QCocoaMenu::insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before)
{
QMacAutoReleasePool pool;
diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.h b/src/plugins/platforms/cocoa/qcocoamenubar.h
index 50b6e69720..94333e3bb1 100644
--- a/src/plugins/platforms/cocoa/qcocoamenubar.h
+++ b/src/plugins/platforms/cocoa/qcocoamenubar.h
@@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE
class QCocoaWindow;
class QCocoaMenuBar : public QPlatformMenuBar
+ , public QPlatformInterface::Private::QCocoaMenuBar
{
Q_OBJECT
public:
@@ -63,8 +64,7 @@ public:
QWindow *parentWindow() const override;
QPlatformMenu *menuForTag(quintptr tag) const override;
- inline NSMenu *nsMenu() const
- { return m_nativeMenu; }
+ NSMenu *nsMenu() const override { return m_nativeMenu; }
static void updateMenuBarImmediately();
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
index 4f82faf39b..faa4e72e46 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
@@ -84,15 +84,6 @@ private:
static void removeFromMimeList(void *macPasteboardMime);
static void registerDraggedTypes(const QStringList &types);
- // 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);
-
// Set a QWindow as a "guest" (subwindow) of a non-QWindow
static void setEmbeddedInForeignView(QPlatformWindow *window, bool embedded);
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
index 77187f2d20..3b11afa8a3 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
@@ -102,12 +102,6 @@ QPlatformNativeInterface::NativeResourceForIntegrationFunction QCocoaNativeInter
return NativeResourceForIntegrationFunction(QCocoaNativeInterface::removeFromMimeList);
if (resource.toLower() == "registerdraggedtypes")
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() == "registertouchwindow")
return NativeResourceForIntegrationFunction(QCocoaNativeInterface::registerTouchWindow);
if (resource.toLower() == "setembeddedinforeignview")
@@ -189,28 +183,6 @@ void QCocoaNativeInterface::registerDraggedTypes(const QStringList &types)
qt_mac_registerDraggedTypes(types);
}
-void QCocoaNativeInterface::setDockMenu(QPlatformMenu *platformMenu)
-{
- QMacAutoReleasePool pool;
- QCocoaMenu *cocoaPlatformMenu = static_cast<QCocoaMenu *>(platformMenu);
- NSMenu *menu = cocoaPlatformMenu->nsMenu();
- [QCocoaApplicationDelegate sharedDelegate].dockMenu = 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);
-}
-
void QCocoaNativeInterface::setEmbeddedInForeignView(QPlatformWindow *window, bool embedded)
{
Q_UNUSED(embedded); // "embedded" state is now automatically detected