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

Unified Diff: ash/system/tray/tray_item_view.cc

Issue 23112002: Fixing the gdrive sync item alignment to keep it centered. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months 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
« ash/system/tray/tray_item_view.h ('K') | « ash/system/tray/tray_item_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/tray/tray_item_view.cc
diff --git a/ash/system/tray/tray_item_view.cc b/ash/system/tray/tray_item_view.cc
index f95ceb935708c20e5b509c1e88b2a47ea74a8f4f..b13309527c155226f0f44ea423fc9062bfeda26d 100644
--- a/ash/system/tray/tray_item_view.cc
+++ b/ash/system/tray/tray_item_view.cc
@@ -5,6 +5,7 @@
#include "ash/system/tray/tray_item_view.h"
#include "ash/shelf/shelf_types.h"
+#include "ash/shell.h"
#include "ash/system/tray/system_tray.h"
#include "ash/system/tray/system_tray_item.h"
#include "ui/base/animation/slide_animation.h"
@@ -29,14 +30,20 @@ namespace internal {
TrayItemView::TrayItemView(SystemTrayItem* owner)
: owner_(owner),
label_(NULL),
- image_view_(NULL) {
+ image_view_(NULL),
+ alignment_override_(AUTO) {
SetPaintToLayer(true);
SetFillsBoundsOpaquely(false);
- SetLayoutManager(
- new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0));
+ SetLayoutAlignment();
+ // Observe any shelf alignment changes to change view alignments.
+ if (ash::Shell::HasInstance())
+ ash::Shell::GetInstance()->AddShellObserver(this);
}
-TrayItemView::~TrayItemView() {}
+TrayItemView::~TrayItemView() {
+ if (ash::Shell::HasInstance())
+ ash::Shell::GetInstance()->RemoveShellObserver(this);
+}
// static
void TrayItemView::DisableAnimationsForTest() {
@@ -53,6 +60,11 @@ void TrayItemView::CreateImageView() {
AddChildView(image_view_);
}
+void TrayItemView::SetAlignmentOverride(AlignmentOverride alignment_override) {
+ alignment_override_ = alignment_override;
+ SetLayoutAlignment();
+}
+
void TrayItemView::SetVisible(bool set_visible) {
if (!GetWidget() || !animations_enabled) {
views::View::SetVisible(set_visible);
@@ -102,6 +114,11 @@ int TrayItemView::GetHeightForWidth(int width) {
return GetPreferredSize().height();
}
+void TrayItemView::OnShelfAlignmentChanged(
+ aura::RootWindow* root_window) {
+ SetLayoutAlignment();
+}
+
void TrayItemView::ChildPreferredSizeChanged(views::View* child) {
PreferredSizeChanged();
}
@@ -125,5 +142,31 @@ void TrayItemView::AnimationCanceled(const ui::Animation* animation) {
AnimationEnded(animation);
}
+void TrayItemView::SetLayoutAlignment() {
+ views::BoxLayout::Orientation alignment = views::BoxLayout::kHorizontal;
+ switch (alignment_override_) {
+ case AUTO:
+ switch (owner()->system_tray()->shelf_alignment()) {
+ case ash::SHELF_ALIGNMENT_BOTTOM:
+ case ash::SHELF_ALIGNMENT_TOP:
+ alignment = views::BoxLayout::kHorizontal;
+ break;
+ case ash::SHELF_ALIGNMENT_LEFT:
+ case ash::SHELF_ALIGNMENT_RIGHT:
+ alignment = views::BoxLayout::kVertical;
+ break;
+ }
+ break;
+ case HORIZONTAL:
+ alignment = views::BoxLayout::kHorizontal;
+ break;
+ case VERTICAL:
+ alignment = views::BoxLayout::kVertical;
+ break;
+ }
+ SetLayoutManager(new views::BoxLayout(alignment, 0, 0, 0));
+ Layout();
+}
+
} // namespace internal
} // namespace ash
« ash/system/tray/tray_item_view.h ('K') | « ash/system/tray/tray_item_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698