Index: ash/common/shelf/app_list_button.cc |
diff --git a/ash/common/shelf/app_list_button.cc b/ash/common/shelf/app_list_button.cc |
index b8cc2564eab7541a42793019f8cae43e108332f1..28dae0d33b72822de3fdd50e84344148a3e7b75f 100644 |
--- a/ash/common/shelf/app_list_button.cc |
+++ b/ash/common/shelf/app_list_button.cc |
@@ -287,16 +287,23 @@ void AppListButton::SetDrawBackgroundAsActive(bool draw_background_as_active) { |
} |
gfx::Point AppListButton::GetCenterPoint() const { |
- // During shelf hide/show animations, width and height may not be equal. Take |
- // the greater of the two as the one that represents the normal size of the |
- // button. |
- int center = std::max(width(), height()) / 2.f; |
- gfx::Point centroid(center, center); |
- // For the left shelf alignment, we need to right-justify. For other shelf |
- // alignments, left/top justification (i.e. no adjustments are necessary). |
- if (SHELF_ALIGNMENT_LEFT == wm_shelf_->GetAlignment()) |
- centroid.set_x(width() - center); |
- return centroid; |
+ const int x_mid = width() / 2.f; |
+ const int y_mid = height() / 2.f; |
+ gfx::Point center(x_mid, y_mid); |
+ |
+ // For a bottom-aligned shelf, the button bounds could have a larger height |
+ // than width (in the case of touch-dragging the shelf updwards) or a larger |
+ // width than height (in the case of a shelf hide/show animation), so adjust |
+ // the y-position of the circle's center to ensure correct layout. Similarly |
+ // adjust the x-position for a left- or right-aligned shelf. |
oshima
2016/12/14 21:28:41
am I correct that we assume the button is square?
tdanderson
2016/12/14 21:45:07
The app list button is actually a circle
oshima
2016/12/14 21:52:37
I meant the logical bounds of the button is square
tdanderson
2016/12/14 22:18:04
Thanks, I like that much better. Changed.
|
+ if (wm_shelf_->GetAlignment() == SHELF_ALIGNMENT_BOTTOM) |
+ center.set_y(x_mid); |
+ else if (wm_shelf_->GetAlignment() == SHELF_ALIGNMENT_RIGHT) |
+ center.set_x(y_mid); |
+ else if (wm_shelf_->GetAlignment() == SHELF_ALIGNMENT_LEFT) |
+ center.set_x(width() - y_mid); |
+ |
+ return center; |
} |
} // namespace ash |