14#include <QtCore/private/qcore_mac_p.h>
15#include <QtCore/private/qthread_p.h>
16#include <QtCore/qcoreapplication.h>
17#include <QtGui/private/qguiapplication_p.h>
32+ (instancetype)sharedMenuLoader
35 static dispatch_once_t onceToken;
36 dispatch_once(&onceToken, ^{
37 shared = [[
self alloc] init];
48 if ((self = [super
init])) {
52 theMenu = [[NSMenu alloc] initWithTitle:@"Main Menu"];
56 NSMenuItem *appItem = [[[NSMenuItem alloc] init] autorelease];
57 appItem.title = appName;
58 [theMenu addItem:appItem];
64 aboutItem.title = [@"About " stringByAppendingString:appName];
68 aboutItem.action =
@selector(orderFrontStandardAboutPanel:);
72 [appMenu addItem:aboutItem];
80 [appMenu addItem:aboutQtItem];
82 [appMenu addItem:[NSMenuItem separatorItem]];
94 [appMenu addItem:preferencesItem];
96 [appMenu addItem:[NSMenuItem separatorItem]];
101 NSMenu *servicesMenu = [[[NSMenu alloc] initWithTitle:@"Services"] autorelease];
103 [NSApplication sharedApplication].servicesMenu = servicesMenu;
104 [appMenu addItem:servicesItem];
106 [appMenu addItem:[NSMenuItem separatorItem]];
109 hideItem = [[NSMenuItem alloc] initWithTitle:[@"Hide " stringByAppendingString:appName]
110 action:@selector(hide:)
113 [appMenu addItem:hideItem];
117 action:@selector(hideOtherApplications:)
120 hideAllOthersItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | NSEventModifierFlagOption;
121 [appMenu addItem:hideAllOthersItem];
124 showAllItem = [[NSMenuItem alloc] initWithTitle:@"Show All"
125 action:@selector(unhideAllApplications:)
128 [appMenu addItem:showAllItem];
130 [appMenu addItem:[NSMenuItem separatorItem]];
134 quitItem.title = [@"Quit " stringByAppendingString:appName];
139 quitItem.action =
@selector(terminate:);
140 [appMenu addItem:quitItem];
151 [aboutQtItem release];
152 [preferencesItem release];
153 [servicesItem release];
155 [hideAllOthersItem release];
156 [showAllItem release];
162- (
void)ensureAppMenuInMenu:(NSMenu *)menu
168 NSMenu *mainMenu = [NSApp mainMenu];
169 if (mainMenu ==
menu)
176 auto unparentAppMenu = ^bool (NSMenu *supermenu) {
177 auto index = [supermenu indexOfItemWithSubmenu:appMenu];
179 [supermenu removeItemAtIndex:index];
185 if (!mainMenu || !unparentAppMenu(mainMenu))
187 unparentAppMenu(
appMenu.supermenu);
189 NSMenuItem *appMenuItem = [[[NSMenuItem alloc] initWithTitle:@"Apple"
190 action:nil keyEquivalent:@""] autorelease];
192 [menu insertItem:appMenuItem atIndex:0];
197 return [[theMenu retain] autorelease];
200- (NSMenu *)applicationMenu
202 return [[appMenu retain] autorelease];
205- (NSMenuItem *)quitMenuItem
207 return [[quitItem retain] autorelease];
210- (NSMenuItem *)preferencesMenuItem
212 return [[preferencesItem retain] autorelease];
215- (NSMenuItem *)aboutMenuItem
217 return [[aboutItem retain] autorelease];
220- (NSMenuItem *)aboutQtMenuItem
222 return [[aboutQtItem retain] autorelease];
225- (NSMenuItem *)hideMenuItem
227 return [[hideItem retain] autorelease];
234 if (qt_objc_cast<QCocoaNSMenuItem *>(
item).platformMenuItem == platformItem)
245 const auto location = [
self indexOfLastAppSpecificMenuItem];
246 [appMenu insertItem:item atIndex:NSInteger(location) + 1];
251- (
void)orderFrontStandardAboutPanel:(
id)sender
253 [NSApp orderFrontStandardAboutPanel:sender];
256- (
void)hideOtherApplications:(
id)sender
258 [NSApp hideOtherApplications:sender];
261- (
void)unhideAllApplications:(
id)sender
263 [NSApp unhideAllApplications:sender];
271- (
void)qtTranslateApplicationMenu
273#ifndef QT_NO_TRANSLATION
284- (BOOL)validateMenuItem:(NSMenuItem*)menuItem
286 if (menuItem.action ==
@selector(hideOtherApplications:)
287 || menuItem.action == @
selector(unhideAllApplications:)
289 return [NSApp validateMenuItem:menuItem];
292 return menuItem.enabled;
295- (NSArray<NSMenuItem *> *)mergeable
298 auto items = [NSArray arrayWithObjects:preferencesItem, aboutItem, aboutQtItem,
299 appMenu.itemArray[[
self indexOfLastAppSpecificMenuItem]], nil];
307 const auto location = [appMenu.itemArray indexOfObjectWithOptions:NSEnumerationReverse
308 passingTest:^BOOL(NSMenuItem *item, NSUInteger, BOOL *) {
309 if (auto qtItem = qt_objc_cast<QCocoaNSMenuItem*>(item))
310 return qtItem != quitItem;
QString arg(qlonglong a, int fieldwidth=0, int base=10, QChar fillChar=u' ') const
QString qt_mac_applicationName()
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
QFileSelector selector
[1]