Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8149)

Unified Diff: chrome/browser/ui/views/toolbar/reload_button.cc

Issue 62873007: [Toolbar] Base toolbar button class with background images for button states (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: overriding Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/toolbar/reload_button.h ('k') | chrome/browser/ui/views/toolbar/toolbar_button.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/toolbar/reload_button.cc
diff --git a/chrome/browser/ui/views/toolbar/reload_button.cc b/chrome/browser/ui/views/toolbar/reload_button.cc
index 195afbdf5fab4edcd46eb4be9e90a98a06126443..80366ea1d34ad96c9d9470c1b08d5600e3b212d6 100644
--- a/chrome/browser/ui/views/toolbar/reload_button.cc
+++ b/chrome/browser/ui/views/toolbar/reload_button.cc
@@ -22,11 +22,6 @@
namespace {
-const int kReloadImages[] =
- { IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P, IDR_RELOAD_D };
-
-const int kStopImages[] = { IDR_STOP, IDR_STOP_H, IDR_STOP_P, IDR_STOP_D };
-
// Contents of the Reload drop-down menu.
const int kReloadMenuItems[] = {
IDS_RELOAD_MENU_NORMAL_RELOAD_ITEM,
@@ -44,7 +39,7 @@ const char ReloadButton::kViewClassName[] = "ReloadButton";
ReloadButton::ReloadButton(LocationBarView* location_bar,
CommandUpdater* command_updater)
- : ButtonDropDown(this, CreateMenuModel()),
+ : ToolbarButton(this, CreateMenuModel()),
location_bar_(location_bar),
command_updater_(command_updater),
intended_mode_(MODE_RELOAD),
@@ -71,7 +66,8 @@ void ReloadButton::ChangeMode(Mode mode, bool force) {
!double_click_timer_.IsRunning() : (visible_mode_ != MODE_STOP))) {
double_click_timer_.Stop();
stop_to_reload_timer_.Stop();
- ChangeModeInternal(mode);
+ if (mode != visible_mode_)
+ ChangeModeInternal(mode);
SetEnabled(true);
// We want to disable the button if we're preventing a change from stop to
@@ -92,26 +88,14 @@ void ReloadButton::ChangeMode(Mode mode, bool force) {
}
void ReloadButton::LoadImages() {
- DCHECK_EQ(static_cast<int>(arraysize(kReloadImages)), STATE_COUNT);
- DCHECK_EQ(static_cast<int>(arraysize(kStopImages)), STATE_COUNT);
-
- gfx::ImageSkia* reload_images = images_;
- gfx::ImageSkia* stop_images = alternate_images_;
- if (visible_mode_ == MODE_STOP)
- std::swap(reload_images, stop_images);
-
- ui::ThemeProvider* tp = GetThemeProvider();
- for (int i = 0; i < STATE_COUNT; i++) {
- reload_images[i] = *(tp->GetImageSkiaNamed(kReloadImages[i]));
- stop_images[i] = *(tp->GetImageSkiaNamed(kStopImages[i]));
- }
+ ChangeModeInternal(visible_mode_);
SchedulePaint();
PreferredSizeChanged();
}
void ReloadButton::OnMouseExited(const ui::MouseEvent& event) {
- ButtonDropDown::OnMouseExited(event);
+ ToolbarButton::OnMouseExited(event);
if (!IsMenuShowing())
ChangeMode(intended_mode_, true);
}
@@ -132,7 +116,7 @@ const char* ReloadButton::GetClassName() const {
void ReloadButton::GetAccessibleState(ui::AccessibleViewState* state) {
if (menu_enabled_)
- ButtonDropDown::GetAccessibleState(state);
+ ToolbarButton::GetAccessibleState(state);
else
CustomButton::GetAccessibleState(state);
}
@@ -142,7 +126,7 @@ bool ReloadButton::ShouldShowMenu() {
}
void ReloadButton::ShowDropDownMenu(ui::MenuSourceType source_type) {
- ButtonDropDown::ShowDropDownMenu(source_type); // Blocks.
+ ToolbarButton::ShowDropDownMenu(source_type); // Blocks.
ChangeMode(intended_mode_, true);
}
@@ -249,11 +233,15 @@ void ReloadButton::ExecuteBrowserCommand(int command, int event_flags) {
}
void ReloadButton::ChangeModeInternal(Mode mode) {
- if (visible_mode_ == mode)
- return;
+ ui::ThemeProvider* tp = GetThemeProvider();
+ // |tp| can be NULL in unit tests.
+ if (tp) {
+ SetImage(views::Button::STATE_NORMAL, *(tp->GetImageSkiaNamed(
+ (mode == MODE_RELOAD) ? IDR_RELOAD : IDR_STOP)));
+ SetImage(views::Button::STATE_DISABLED, *(tp->GetImageSkiaNamed(
+ (mode == MODE_RELOAD) ? IDR_RELOAD_D : IDR_STOP_D)));
+ }
- for (size_t i = 0; i < STATE_COUNT; ++i)
- std::swap(images_[i], alternate_images_[i]);
visible_mode_ = mode;
SchedulePaint();
}
« no previous file with comments | « chrome/browser/ui/views/toolbar/reload_button.h ('k') | chrome/browser/ui/views/toolbar/toolbar_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698