summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
authorskuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-24 04:27:29 +0000
committerskuhne@chromium.org <skuhne@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-24 04:27:29 +0000
commit127b09123cec230992cedbe6906be6e68b7e558a (patch)
treeb1ea71d1a945d14c03722735cee24ae7502a2303 /ash
parent6849a26f8448ad1aec037c1462067ae62de91cf9 (diff)
downloadchromium_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.cc45
-rw-r--r--ash/launcher/launcher_view_unittest.cc12
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) {