diff options
author | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 04:27:29 +0000 |
---|---|---|
committer | skuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-24 04:27:29 +0000 |
commit | 127b09123cec230992cedbe6906be6e68b7e558a (patch) | |
tree | b1ea71d1a945d14c03722735cee24ae7502a2303 /ash | |
parent | 6849a26f8448ad1aec037c1462067ae62de91cf9 (diff) | |
download | chromium_src-127b09123cec230992cedbe6906be6e68b7e558a.zip chromium_src-127b09123cec230992cedbe6906be6e68b7e558a.tar.gz chromium_src-127b09123cec230992cedbe6906be6e68b7e558a.tar.bz2 |
Addressing slight launcher icon shift upon state change
BUG=222899
TEST=unittest
Review URL: https://chromiumcodereview.appspot.com/12827025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190188 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/launcher/launcher_button.cc | 45 | ||||
-rw-r--r-- | ash/launcher/launcher_view_unittest.cc | 12 |
2 files changed, 35 insertions, 22 deletions
diff --git a/ash/launcher/launcher_button.cc b/ash/launcher/launcher_button.cc index 8114de3..546a145 100644 --- a/ash/launcher/launcher_button.cc +++ b/ash/launcher/launcher_button.cc @@ -482,30 +482,31 @@ bool LauncherButton::IsShelfHorizontal() const { } void LauncherButton::UpdateState() { - if (state_ == STATE_NORMAL) { - bar_->SetVisible(false); + // Even if not shown, the activation state image has an influence on the + // layout. To avoid any odd movement we assign a bitmap here. + int bar_id; + if (state_ & (STATE_ACTIVE | STATE_ATTENTION)) + bar_id = IDR_AURA_LAUNCHER_UNDERLINE_ACTIVE; + else if (state_ & (STATE_HOVERED | STATE_FOCUSED)) + bar_id = IDR_AURA_LAUNCHER_UNDERLINE_HOVER; + else + bar_id = IDR_AURA_LAUNCHER_UNDERLINE_RUNNING; + + ResourceBundle& rb = ResourceBundle::GetSharedInstance(); + const gfx::ImageSkia* image = rb.GetImageNamed(bar_id).ToImageSkia(); + if (SHELF_ALIGNMENT_BOTTOM == shelf_layout_manager_->GetAlignment()) { + bar_->SetImage(*image); } else { - int bar_id; - if (state_ & (STATE_ACTIVE | STATE_ATTENTION)) { - bar_id = IDR_AURA_LAUNCHER_UNDERLINE_ACTIVE; - } else if (state_ & (STATE_HOVERED | STATE_FOCUSED)) { - bar_id = IDR_AURA_LAUNCHER_UNDERLINE_HOVER; - } else { - bar_id = IDR_AURA_LAUNCHER_UNDERLINE_RUNNING; - } - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - const gfx::ImageSkia* image = rb.GetImageNamed(bar_id).ToImageSkia(); - if(SHELF_ALIGNMENT_BOTTOM == shelf_layout_manager_->GetAlignment()) - bar_->SetImage(*image); - else - bar_->SetImage(gfx::ImageSkiaOperations::CreateRotatedImage(*image, - shelf_layout_manager_->SelectValueForShelfAlignment( - SkBitmapOperations::ROTATION_90_CW, - SkBitmapOperations::ROTATION_90_CW, - SkBitmapOperations::ROTATION_270_CW, - SkBitmapOperations::ROTATION_180_CW))); - bar_->SetVisible(true); + bar_->SetImage(gfx::ImageSkiaOperations::CreateRotatedImage(*image, + shelf_layout_manager_->SelectValueForShelfAlignment( + SkBitmapOperations::ROTATION_90_CW, + SkBitmapOperations::ROTATION_90_CW, + SkBitmapOperations::ROTATION_270_CW, + SkBitmapOperations::ROTATION_180_CW))); } + + bar_->SetVisible(state_ != STATE_NORMAL); + icon_view_->SetHorizontalAlignment( shelf_layout_manager_->PrimaryAxisValue(views::ImageView::CENTER, views::ImageView::LEADING)); diff --git a/ash/launcher/launcher_view_unittest.cc b/ash/launcher/launcher_view_unittest.cc index 8edcc51f..d1e2e76 100644 --- a/ash/launcher/launcher_view_unittest.cc +++ b/ash/launcher/launcher_view_unittest.cc @@ -377,6 +377,18 @@ class LauncherViewTest : public AshTestBase { DISALLOW_COPY_AND_ASSIGN(LauncherViewTest); }; +// Checks that the icon positions do not shift with a state change. +TEST_F(LauncherViewTest, NoStateChangeIconMovement) { + LauncherID last_added = AddAppShortcut(); + internal::LauncherButton* button = GetButtonByID(last_added); + EXPECT_EQ(button->state(), ash::internal::LauncherButton::STATE_NORMAL); + gfx::Rect old_bounds = button->GetIconBounds(); + + button->AddState(ash::internal::LauncherButton::STATE_HOVERED); + gfx::Rect hovered_bounds = button->GetIconBounds(); + EXPECT_EQ(old_bounds.ToString(), hovered_bounds.ToString()); +} + // Adds browser button until overflow and verifies that the last added browser // button is hidden. TEST_F(LauncherViewTest, AddBrowserUntilOverflow) { |