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 | |
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
7 files changed, 38 insertions, 1 deletions
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index e3d59ee..2c58d2a 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd @@ -340,7 +340,6 @@ <include name="IDR_WIZARD_ICON_RTL" file="google_chrome/wizard_icon_rtl.png" type="BINDATA" /> <include name="IDR_PRODUCT_ICON_32" file="google_chrome/google_chrome_icon_32.png" type="BINDATA" /> <include name="IDR_INFOBAR_TRANSLATE" file="google_chrome/infobar_translate.png" type="BINDATA" /> - <include name="IDR_STATUS_TRAY_ICON" file="google_chrome/product_logo_22.png" type="BINDATA" /> </if> <if expr="not pp_ifdef('_google_chrome')"> @@ -356,7 +355,23 @@ <include name="IDR_WIZARD_ICON_RTL" file="chromium/wizard_icon_rtl.png" type="BINDATA" /> <include name="IDR_PRODUCT_ICON_32" file="chromium/chromium_icon_32.png" type="BINDATA" /> <include name="IDR_INFOBAR_TRANSLATE" file="chromium/infobar_translate.png" type="BINDATA" /> + </if> + + <if expr="pp_ifdef('_google_chrome') and (os == 'darwin')"> + <include name="IDR_STATUS_TRAY_ICON" file="google_chrome/product_logo_22_mono.png" type="BINDATA" /> + <include name="IDR_STATUS_TRAY_ICON_PRESSED" file="google_chrome/product_logo_22_mono_invert.png" type="BINDATA" /> + </if> + <if expr="not pp_ifdef('_google_chrome') and (os == 'darwin')"> + <include name="IDR_STATUS_TRAY_ICON" file="chromium/product_logo_22_mono.png" type="BINDATA" /> + <include name="IDR_STATUS_TRAY_ICON_PRESSED" file="chromium/product_logo_22_mono_invert.png" type="BINDATA" /> + </if> + <if expr="pp_ifdef('_google_chrome') and (os != 'darwin')"> + <include name="IDR_STATUS_TRAY_ICON" file="google_chrome/product_logo_22.png" type="BINDATA" /> + <include name="IDR_STATUS_TRAY_ICON_PRESSED" file="google_chrome/product_logo_22.png" type="BINDATA" /> + </if> + <if expr="not pp_ifdef('_google_chrome') and (os != 'darwin')"> <include name="IDR_STATUS_TRAY_ICON" file="chromium/product_logo_22.png" type="BINDATA" /> + <include name="IDR_STATUS_TRAY_ICON_PRESSED" file="chromium/product_logo_22.png" type="BINDATA" /> </if> <if expr="pp_ifdef('chromeos') or pp_ifdef('toolkit_views')"> 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) {} |