Chromium Code Reviews| Index: chrome/browser/ui/cocoa/browser_window_command_handler.mm |
| diff --git a/chrome/browser/ui/cocoa/browser_window_command_handler.mm b/chrome/browser/ui/cocoa/browser_window_command_handler.mm |
| index 260c95cde6a68417a1c1a38d1f8114b019f1f025..a86cb4970d1172151dcb0723e001f028f047aa76 100644 |
| --- a/chrome/browser/ui/cocoa/browser_window_command_handler.mm |
| +++ b/chrome/browser/ui/cocoa/browser_window_command_handler.mm |
| @@ -24,6 +24,16 @@ |
| namespace { |
| +void SetToggleState(bool toggled, id item) { |
| + DCHECK([item respondsToSelector:@selector(state)] && |
| + [item respondsToSelector:@selector(setState:)]); |
| + |
| + NSInteger oldState = [item state]; |
| + NSInteger newState = toggled ? NSOnState : NSOffState; |
| + if (oldState != newState) |
| + [item setState:newState]; |
| +} |
| + |
| // Update a toggle state for an item if modified. The item may be an NSMenuItem |
| // or NSButton. Called by -validateUserInterfaceItem:. |
| void UpdateToggleStateWithTag(NSInteger tag, id item, NSWindow* window) { |
| @@ -37,11 +47,12 @@ void UpdateToggleStateWithTag(NSInteger tag, id item, NSWindow* window) { |
| // On Windows this logic happens in bookmark_bar_view.cc. This simply updates |
| // the menu item; it does not display the bookmark bar itself. |
| if (tag == IDC_SHOW_BOOKMARK_BAR) { |
| - bool toggled = browser->window()->IsBookmarkBarVisible(); |
| - NSInteger oldState = [item state]; |
| - NSInteger newState = toggled ? NSOnState : NSOffState; |
| - if (oldState != newState) |
| - [item setState:newState]; |
| + SetToggleState(browser->window()->IsBookmarkBarVisible(), item); |
| + return; |
| + } |
| + |
| + if (tag == IDC_TOGGLE_FULLSCREEN_TOOLBAR) { |
| + SetToggleState(browser->window()->ShouldHideFullscreenToolbar(), item); |
| return; |
| } |
| @@ -61,11 +72,8 @@ void UpdateToggleStateWithTag(NSInteger tag, id item, NSWindow* window) { |
| const std::string encoding = current_tab->GetEncoding(); |
| - bool toggled = encoding_controller.IsItemChecked(profile, encoding, tag); |
| - NSInteger oldState = [item state]; |
| - NSInteger newState = toggled ? NSOnState : NSOffState; |
| - if (oldState != newState) |
| - [item setState:newState]; |
| + SetToggleState(encoding_controller.IsItemChecked(profile, encoding, tag), |
| + item); |
| } |
| NSString* GetTitleForViewsFullscreenMenuItem(Browser* browser) { |
| @@ -88,17 +96,14 @@ NSString* GetTitleForFullscreenMenuItem(Browser* browser) { |
| return GetTitleForViewsFullscreenMenuItem(browser); |
| } |
| -// Get the text for the "Enter/Exit Presentation Mode" menu item. |
| -// TODO(jackhou): Remove the dependency on BrowserWindowController(Private). |
| NSString* GetTitleForPresentationModeMenuItem(Browser* browser) { |
| NSWindow* ns_window = browser->window()->GetNativeWindow(); |
| if (BrowserWindowController* controller = [ns_window windowController]) { |
| - return l10n_util::GetNSString([controller inPresentationMode] |
| - ? IDS_EXIT_PRESENTATION_MAC |
| - : IDS_ENTER_PRESENTATION_MAC); |
| + return l10n_util::GetNSString([controller inPresentationMode] |
| + ? IDS_EXIT_PRESENTATION_MAC |
| + : IDS_ENTER_PRESENTATION_MAC); |
| } |
| - |
| - return GetTitleForViewsFullscreenMenuItem(browser); |
| + return GetTitleForFullscreenMenuItem(browser); |
| } |
| // Identify the actual Browser to which the command should be dispatched. It |
| @@ -163,7 +168,12 @@ Browser* FindBrowserForSender(id sender, NSWindow* window) { |
| } |
| case IDC_PRESENTATION_MODE: { |
| if (NSMenuItem* menuItem = base::mac::ObjCCast<NSMenuItem>(item)) { |
| - [menuItem setTitle:GetTitleForPresentationModeMenuItem(browser)]; |
| + if (chrome::mac::SupportsSystemFullscreen()) { |
| + [menuItem setHidden:YES]; |
| + enable = NO; |
| + } else { |
| + [menuItem setTitle:GetTitleForPresentationModeMenuItem(browser)]; |
| + } |
| } |
| break; |
| } |
| @@ -196,6 +206,16 @@ Browser* FindBrowserForSender(id sender, NSWindow* window) { |
| [menuItem setHidden:shouldHide]; |
| break; |
| } |
| + case IDC_TOGGLE_FULLSCREEN_TOOLBAR: { |
|
Robert Sesek
2015/11/04 21:57:16
Maybe make this item unconditionally disabled or h
spqchan
2015/11/04 23:59:21
Done.
|
| + NSMenuItem* menuItem = base::mac::ObjCCast<NSMenuItem>(item); |
| + if (chrome::mac::SupportsSystemFullscreen()) { |
| + BOOL isFullscreenToolbarHidden = NO; |
|
Robert Sesek
2015/11/04 21:57:16
Should there be a TODO for this?
spqchan
2015/11/04 23:59:21
Done.
|
| + [menuItem setState:isFullscreenToolbarHidden]; |
| + } else { |
| + [menuItem setHidden:YES]; |
| + } |
| + break; |
| + } |
| default: |
| // Special handling for the contents of the Text Encoding submenu. On |
| // Mac OS, instead of enabling/disabling the top-level menu item, we |