summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrdevlin.cronin <rdevlin.cronin@chromium.org>2014-12-15 11:59:52 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-15 20:00:37 +0000
commit72b4a2c50bf2bc01751aa5a98494bd943955a216 (patch)
tree41d3041f8a81a2b8d55e501ff8255af3f38048cb
parent94fa21a960e55bf0f7e72c92e5cfc40f51a327c8 (diff)
downloadchromium_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}
-rw-r--r--chrome/browser/ui/cocoa/extensions/browser_action_button.mm11
-rw-r--r--chrome/browser/ui/cocoa/extensions/browser_actions_controller.h1
-rw-r--r--chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm1
-rw-r--r--chrome/browser/ui/cocoa/image_button_cell.h8
-rw-r--r--chrome/browser/ui/cocoa/image_button_cell.mm7
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;