Fix titles of submenus in application menu.
This commit is contained in:
parent
937b811c8d
commit
995b9dacc9
2 changed files with 16 additions and 0 deletions
|
@ -26,6 +26,11 @@ class MenuMac : public Menu {
|
||||||
private:
|
private:
|
||||||
friend class Menu;
|
friend class Menu;
|
||||||
|
|
||||||
|
// The MenuController doesn't set title for menus, however it's required by
|
||||||
|
// application menu to show submenus correctly, fix it by iterating all
|
||||||
|
// submenus and set their titles.
|
||||||
|
static void FixMenuTitles(NSMenu* menu);
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(MenuMac);
|
DISALLOW_COPY_AND_ASSIGN(MenuMac);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,16 @@ void MenuMac::Popup(NativeWindow* native_window) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
void MenuMac::FixMenuTitles(NSMenu* menu) {
|
||||||
|
int size = [menu numberOfItems];
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
NSMenuItem* item = [menu itemAtIndex:i];
|
||||||
|
if ([item hasSubmenu])
|
||||||
|
[[item submenu] setTitle:[item title]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
v8::Handle<v8::Value> Menu::SetApplicationMenu(const v8::Arguments &args) {
|
v8::Handle<v8::Value> Menu::SetApplicationMenu(const v8::Arguments &args) {
|
||||||
v8::HandleScope scope;
|
v8::HandleScope scope;
|
||||||
|
@ -75,6 +85,7 @@ v8::Handle<v8::Value> Menu::SetApplicationMenu(const v8::Arguments &args) {
|
||||||
scoped_nsobject<MenuController> menu_controller(
|
scoped_nsobject<MenuController> menu_controller(
|
||||||
[[MenuController alloc] initWithModel:menu->model_.get()
|
[[MenuController alloc] initWithModel:menu->model_.get()
|
||||||
useWithPopUpButtonCell:NO]);
|
useWithPopUpButtonCell:NO]);
|
||||||
|
MenuMac::FixMenuTitles([menu_controller menu]);
|
||||||
[NSApp setMainMenu:[menu_controller menu]];
|
[NSApp setMainMenu:[menu_controller menu]];
|
||||||
|
|
||||||
// Ensure the menu_controller_ is destroyed after main menu is set.
|
// Ensure the menu_controller_ is destroyed after main menu is set.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue