diff options
author | atwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-10 21:44:41 +0000 |
---|---|---|
committer | atwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-10 21:44:41 +0000 |
commit | 595c64daedc4001c93691088c6d7cc76122ef639 (patch) | |
tree | d6b47f33adb478ae64a11cae699eec548d70d9a5 /chrome/browser | |
parent | 6d2464543977cd709ae1108f958dee5d2c09667b (diff) | |
download | chromium_src-595c64daedc4001c93691088c6d7cc76122ef639.zip chromium_src-595c64daedc4001c93691088c6d7cc76122ef639.tar.gz chromium_src-595c64daedc4001c93691088c6d7cc76122ef639.tar.bz2 |
Added monochrome status icons for the mac.
Added support for setting an alternate "pressed" image for status icons.
BUG=37375
TEST=updated unit tests
Review URL: http://codereview.chromium.org/752002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41211 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
6 files changed, 22 insertions, 0 deletions
diff --git a/chrome/browser/cocoa/status_icons/status_icon_mac.h b/chrome/browser/cocoa/status_icons/status_icon_mac.h index d606429..e032476 100644 --- a/chrome/browser/cocoa/status_icons/status_icon_mac.h +++ b/chrome/browser/cocoa/status_icons/status_icon_mac.h @@ -25,6 +25,9 @@ class StatusIconMac : public StatusIcon { // Sets the image associated with this status icon. virtual void SetImage(const SkBitmap& image); + // Sets the pressed image associated with this status icon. + virtual void SetPressedImage(const SkBitmap& image); + // Sets the hover text for this status icon. virtual void SetToolTip(const string16& tool_tip); diff --git a/chrome/browser/cocoa/status_icons/status_icon_mac.mm b/chrome/browser/cocoa/status_icons/status_icon_mac.mm index 201b6d4..0711184 100644 --- a/chrome/browser/cocoa/status_icons/status_icon_mac.mm +++ b/chrome/browser/cocoa/status_icons/status_icon_mac.mm @@ -51,6 +51,7 @@ NSStatusItem* StatusIconMac::item() { [item_ setEnabled:YES]; [item_ setTarget:controller_]; [item_ setAction:@selector(handleClick:)]; + [item_ setHighlightMode:YES]; } return item_.get(); } @@ -63,6 +64,14 @@ void StatusIconMac::SetImage(const SkBitmap& bitmap) { } } +void StatusIconMac::SetPressedImage(const SkBitmap& bitmap) { + if (!bitmap.isNull()) { + NSImage* image = gfx::SkBitmapToNSImage(bitmap); + if (image) + [item() setAlternateImage:image]; + } +} + void StatusIconMac::SetToolTip(const string16& tool_tip) { [item() setToolTip:base::SysUTF16ToNSString(tool_tip)]; } diff --git a/chrome/browser/cocoa/status_icons/status_icon_mac_unittest.mm b/chrome/browser/cocoa/status_icons/status_icon_mac_unittest.mm index 4a7b284..8051320 100644 --- a/chrome/browser/cocoa/status_icons/status_icon_mac_unittest.mm +++ b/chrome/browser/cocoa/status_icons/status_icon_mac_unittest.mm @@ -27,6 +27,9 @@ TEST_F(StatusIconMacTest, Create) { SkBitmap* bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( IDR_STATUS_TRAY_ICON); icon->SetImage(*bitmap); + SkBitmap* pressed = ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_STATUS_TRAY_ICON_PRESSED); + icon->SetPressedImage(*pressed); icon->SetToolTip(ASCIIToUTF16("tool tip")); } diff --git a/chrome/browser/status_icons/status_icon.h b/chrome/browser/status_icons/status_icon.h index aeefdfe..a2bc089 100644 --- a/chrome/browser/status_icons/status_icon.h +++ b/chrome/browser/status_icons/status_icon.h @@ -19,6 +19,9 @@ class StatusIcon { // Sets the image associated with this status icon. virtual void SetImage(const SkBitmap& image) = 0; + // Sets the image associated with this status icon when pressed. + virtual void SetPressedImage(const SkBitmap& image) = 0; + // Sets the hover text for this status icon. virtual void SetToolTip(const string16& tool_tip) = 0; diff --git a/chrome/browser/status_icons/status_tray_manager.cc b/chrome/browser/status_icons/status_tray_manager.cc index 26d0840..f0ef268 100644 --- a/chrome/browser/status_icons/status_tray_manager.cc +++ b/chrome/browser/status_icons/status_tray_manager.cc @@ -44,7 +44,10 @@ void StatusTrayManager::Init(Profile* profile) { // Create an icon and add ourselves as a click observer on it SkBitmap* bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( IDR_STATUS_TRAY_ICON); + SkBitmap* pressed = ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_STATUS_TRAY_ICON_PRESSED); icon->SetImage(*bitmap); + icon->SetPressedImage(*pressed); icon->AddObserver(this); } } diff --git a/chrome/browser/status_icons/status_tray_unittest.cc b/chrome/browser/status_icons/status_tray_unittest.cc index 01f9c30..e224fac 100644 --- a/chrome/browser/status_icons/status_tray_unittest.cc +++ b/chrome/browser/status_icons/status_tray_unittest.cc @@ -12,6 +12,7 @@ using testing::Return; class MockStatusIcon : public StatusIcon { virtual void SetImage(const SkBitmap& image) {} + virtual void SetPressedImage(const SkBitmap& image) {} virtual void SetToolTip(const string16& tool_tip) {} virtual void AddObserver(StatusIcon::StatusIconObserver* observer) {} virtual void RemoveObserver(StatusIcon::StatusIconObserver* observer) {} |