summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoamenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoamenu.h')
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.h97
1 files changed, 61 insertions, 36 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h
index bf8bba1ddf..479d4b53c2 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.h
+++ b/src/plugins/platforms/cocoa/qcocoamenu.h
@@ -1,9 +1,10 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author James Turner <james.turner@kdab.com>
** Contact: http://www.qt-project.org/
**
-** This file is part of the QtGui module of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
@@ -39,42 +40,66 @@
**
****************************************************************************/
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qmacdefines_mac.h"
-#import <Cocoa/Cocoa.h>
-
-QT_FORWARD_DECLARE_CLASS(QMenu)
-QT_FORWARD_DECLARE_CLASS(QAction)
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
-
-@protocol NSMenuDelegate <NSObject>
-- (void)menu:(NSMenu*)menu willHighlightItem:(NSMenuItem*)item;
-- (void)menuWillOpen:(NSMenu*)menu;
-- (void)menuDidClose:(NSMenu*)menu;
-- (BOOL)hasShortcut:(NSMenu *)menu forKey:(NSString *)key forModifiers:(NSUInteger)modifier
- whichItem:(NSMenuItem**)outItem;
-@end
+#ifndef QCOCOAMENU_H
+#define QCOCOAMENU_H
-#endif
+#include <QtCore/QList>
+#include <qpa/qplatformmenu.h>
+#include "qcocoamenuitem.h"
+
+@class NSMenuItem;
+@class NSMenu;
+@class NSObject;
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
-@interface QT_MANGLE_NAMESPACE(QNativeCocoaMenu) : NSMenu <NSMenuDelegate>
+class QCocoaMenu : public QPlatformMenu
{
- QMenu *qmenu;
- QAction *previousAction;
-}
-- (id)initWithQMenu:(QMenu*)menu;
-- (BOOL)menuHasKeyEquivalent:(NSMenu *)menu forEvent:(NSEvent *)event target:(id *)target action:(SEL *)action;
-- (NSInteger)indexOfItemWithTarget:(id)anObject andAction:(SEL)actionSelector;
-@end
+public:
+ QCocoaMenu();
+
+ inline virtual void setTag(quintptr tag)
+ { m_tag = tag; }
+ inline virtual quintptr tag() const
+ { return m_tag; }
+
+ void insertMenuItem(QPlatformMenuItem *menuItem, QPlatformMenuItem *before);
+ void removeMenuItem(QPlatformMenuItem *menuItem);
+ void syncMenuItem(QPlatformMenuItem *menuItem);
+ void setEnabled(bool enabled);
+ void syncSeparatorsCollapsible(bool enable);
+
+ void syncModalState(bool modal);
+
+ virtual void setText(const QString &text);
+ void setParentItem(QCocoaMenuItem* item);
+
+ inline NSMenu *nsMenu() const
+ { return m_nativeMenu; }
+ inline NSMenuItem *nsMenuItem() const
+ { return m_nativeItem; }
+
+ virtual QPlatformMenuItem *menuItemAt(int position) const;
+ virtual QPlatformMenuItem *menuItemForTag(quintptr tag) const;
+
+ QList<QCocoaMenuItem *> merged() const;
+private:
+ QCocoaMenuItem *itemOrNull(int index) const;
+ void insertNative(QCocoaMenuItem *item, QCocoaMenuItem *beforeItem);
+
+ QList<QCocoaMenuItem *> m_menuItems;
+ NSMenu *m_nativeMenu;
+ NSMenuItem *m_nativeItem;
+ NSObject *m_delegate;
+ bool m_enabled;
+ quintptr m_tag;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif