diff options
author | rdevlin.cronin <rdevlin.cronin@chromium.org> | 2014-12-15 11:59:52 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-15 20:00:37 +0000 |
commit | 72b4a2c50bf2bc01751aa5a98494bd943955a216 (patch) | |
tree | 41d3041f8a81a2b8d55e501ff8255af3f38048cb | |
parent | 94fa21a960e55bf0f7e72c92e5cfc40f51a327c8 (diff) | |
download | chromium_src-72b4a2c50bf2bc01751aa5a98494bd943955a216.zip chromium_src-72b4a2c50bf2bc01751aa5a98494bd943955a216.tar.gz chromium_src-72b4a2c50bf2bc01751aa5a98494bd943955a216.tar.bz2 |
[Extensions Toolbar Mac] Allow the overflow toolbar to use the theme provider
The overflow menu icons previously didn't have any images because there isn't
a theme provider for the menu's window. Allow image cells to provide a different
theme provider so these can display properly.
BUG=429810
Review URL: https://codereview.chromium.org/803613002
Cr-Commit-Position: refs/heads/master@{#308401}
5 files changed, 27 insertions, 1 deletions
diff --git a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm index 74fdd8a..a4b7ba8 100644 --- a/chrome/browser/ui/cocoa/extensions/browser_action_button.mm +++ b/chrome/browser/ui/cocoa/extensions/browser_action_button.mm @@ -11,8 +11,10 @@ #include "base/strings/sys_string_conversions.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_window.h" #import "chrome/browser/ui/cocoa/extensions/browser_actions_controller.h" #import "chrome/browser/ui/cocoa/extensions/extension_action_context_menu_controller.h" +#import "chrome/browser/ui/cocoa/themed_window.h" #import "chrome/browser/ui/cocoa/toolbar/toolbar_action_view_delegate_cocoa.h" #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h" #include "grit/theme_resources.h" @@ -401,4 +403,13 @@ void ToolbarActionViewDelegateBridge::SetContextMenuController( forWebContents:webContents]; } +- (ui::ThemeProvider*)themeProviderForWindow:(NSWindow*)window { + ui::ThemeProvider* themeProvider = [window themeProvider]; + if (!themeProvider) + themeProvider = + [[browserActionsController_ browser]->window()->GetNativeWindow() + themeProvider]; + return themeProvider; +} + @end diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.h b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.h index 86dc2fe..d6cd4e0 100644 --- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.h +++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.h @@ -63,6 +63,7 @@ extern NSString* const kBrowserActionVisibilityChangedNotification; } @property(readonly, nonatomic) BrowserActionsContainerView* containerView; +@property(readonly, nonatomic) Browser* browser; // Initializes the controller given the current browser and container view that // will hold the browser action buttons. diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm index 0026449..d559ea1 100644 --- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm +++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm @@ -228,6 +228,7 @@ bool ToolbarActionsBarBridge::IsPopupRunning() const { @implementation BrowserActionsController @synthesize containerView = containerView_; +@synthesize browser = browser_; #pragma mark - #pragma mark Public Methods diff --git a/chrome/browser/ui/cocoa/image_button_cell.h b/chrome/browser/ui/cocoa/image_button_cell.h index e1535d4..e539284 100644 --- a/chrome/browser/ui/cocoa/image_button_cell.h +++ b/chrome/browser/ui/cocoa/image_button_cell.h @@ -9,6 +9,10 @@ #include "base/mac/scoped_nsobject.h" +namespace ui { +class ThemeProvider; +} + namespace image_button_cell { // Possible states @@ -64,6 +68,10 @@ enum ButtonState { // Gets the alpha to use to draw the button for the current window focus state. - (CGFloat)imageAlphaForWindowState:(NSWindow*)window; +// Returns the theme provider for the given |window|; this allows subclasses to +// pass in a different theme provider to use if appropriate. +- (ui::ThemeProvider*)themeProviderForWindow:(NSWindow*)window; + // Draws the cell's image within |cellFrame|. - (void)drawImageWithFrame:(NSRect)cellFrame inView:(NSView*)controlView; diff --git a/chrome/browser/ui/cocoa/image_button_cell.mm b/chrome/browser/ui/cocoa/image_button_cell.mm index 6572d2b..ac15515 100644 --- a/chrome/browser/ui/cocoa/image_button_cell.mm +++ b/chrome/browser/ui/cocoa/image_button_cell.mm @@ -132,6 +132,10 @@ const CGFloat kImageNoFocusAlpha = 0.65; return windowHasFocus ? 1.0 : kImageNoFocusAlpha; } +- (ui::ThemeProvider*)themeProviderForWindow:(NSWindow*)window { + return [window themeProvider]; +} + - (void)drawFocusRingWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { if (![self showsFirstResponder]) return; @@ -166,7 +170,8 @@ const CGFloat kImageNoFocusAlpha = 0.65; if (!imageID) return nil; - ui::ThemeProvider* themeProvider = [[controlView window] themeProvider]; + ui::ThemeProvider* themeProvider = + [self themeProviderForWindow:[controlView window]]; if (!themeProvider) return nil; |