summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authoratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 21:44:41 +0000
committeratwilson@chromium.org <atwilson@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 21:44:41 +0000
commit595c64daedc4001c93691088c6d7cc76122ef639 (patch)
treed6b47f33adb478ae64a11cae699eec548d70d9a5 /chrome/browser
parent6d2464543977cd709ae1108f958dee5d2c09667b (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/cocoa/status_icons/status_icon_mac.h3
-rw-r--r--chrome/browser/cocoa/status_icons/status_icon_mac.mm9
-rw-r--r--chrome/browser/cocoa/status_icons/status_icon_mac_unittest.mm3
-rw-r--r--chrome/browser/status_icons/status_icon.h3
-rw-r--r--chrome/browser/status_icons/status_tray_manager.cc3
-rw-r--r--chrome/browser/status_icons/status_tray_unittest.cc1
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) {}