OSX: emit aboutToShow signal for top-level dock menu.
Qt sets a QCocoaMenuDelegate on every menu it creates in order to emit the (OSX specific) aboutToShow signal. However, there are a few cases where OSX will copy a menu without copying the delegate. One of those cases is the dock: the result of -[NSApplication applicationDockMenu:] is used to create a new menu, to which a few more items are copied. This copy is then send back to the dock. This patch invokes the delegate's -menuWillOpen: method when -[NSApplication applicationDockMenu:] is called. Note that sub-menus won't receive the call-back, because the dock doesn't tell the application what happens after returning from applicationDockMenu:. Task-number: QTBUG-39604 Change-Id: I0e06df371a3d77342ae4b7148041214e5c4579d7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
This commit is contained in:
parent
bb3d2ca9f1
commit
e409eafe23
@ -163,6 +163,9 @@ static void cleanupCocoaApplicationDelegate()
|
|||||||
- (NSMenu *)applicationDockMenu:(NSApplication *)sender
|
- (NSMenu *)applicationDockMenu:(NSApplication *)sender
|
||||||
{
|
{
|
||||||
Q_UNUSED(sender);
|
Q_UNUSED(sender);
|
||||||
|
// Manually invoke the delegate's -menuWillOpen: method.
|
||||||
|
// See QTBUG-39604 (and its fix) for details.
|
||||||
|
[[dockMenu delegate] menuWillOpen:dockMenu];
|
||||||
return [[dockMenu retain] autorelease];
|
return [[dockMenu retain] autorelease];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user