Chromium Code Reviews| Index: ash/system/tray/system_tray_bubble.cc |
| diff --git a/ash/system/tray/system_tray_bubble.cc b/ash/system/tray/system_tray_bubble.cc |
| index ef3c293678058d316c467b21b5bf1a6a8b5dd85f..bfdb5af93199098e2c4037d6abdbea140a2140df 100644 |
| --- a/ash/system/tray/system_tray_bubble.cc |
| +++ b/ash/system/tray/system_tray_bubble.cc |
| @@ -30,9 +30,14 @@ namespace { |
| // detailed view. |
| const int kDetailedBubbleMaxHeight = kTrayPopupItemHeight * 5; |
| +// TODO(stevenjb): Remove this when TrayBubbleBorder is integrated with |
| +// BubbleBorder. |
|
jennyz
2012/08/03 18:22:50
I am working on this item, please make it TODO(jen
stevenjb
2012/08/03 19:19:56
Done.
|
| class TrayPopupItemBorder : public views::Border { |
| public: |
| - explicit TrayPopupItemBorder(views::View* owner) : owner_(owner) {} |
| + explicit TrayPopupItemBorder(views::View* owner, ShelfAlignment alignment) |
| + : owner_(owner), |
| + alignment_(alignment) { |
| + } |
| virtual ~TrayPopupItemBorder() {} |
| private: |
| @@ -47,24 +52,36 @@ class TrayPopupItemBorder : public views::Border { |
| canvas->FillRect(gfx::Rect(0, 0, view.width(), 1), kBorderDarkColor); |
| // Bottom border. |
| - if (index != parent->child_count() - 1) { |
| + if ((index != parent->child_count() - 1) || |
| + (alignment_ != SHELF_ALIGNMENT_BOTTOM)) { |
| canvas->FillRect(gfx::Rect(0, view.height() - 1, view.width(), 1), |
| kBorderLightColor); |
| } |
| // Left and right borders. |
| - canvas->FillRect(gfx::Rect(0, 0, 1, view.height()), kBorderDarkColor); |
| - canvas->FillRect(gfx::Rect(view.width() - 1, 0, 1, view.height()), |
| - kBorderDarkColor); |
| + if (alignment_ != SHELF_ALIGNMENT_LEFT) { |
| + canvas->FillRect(gfx::Rect(0, 0, 1, view.height()), |
| + kBorderDarkColor); |
| + } |
| + if (alignment_ != SHELF_ALIGNMENT_RIGHT) { |
| + canvas->FillRect(gfx::Rect(view.width() - 1, 0, 1, view.height()), |
| + kBorderDarkColor); |
| + } |
| } |
| virtual void GetInsets(gfx::Insets* insets) const OVERRIDE { |
| const views::View* parent = owner_->parent(); |
| int index = parent->GetIndexOf(owner_); |
| - insets->Set(index == 0, 1, index != parent->child_count() - 1, 1); |
| + int left = (alignment_ == SHELF_ALIGNMENT_LEFT) ? 0 : 1; |
| + int right = (alignment_ == SHELF_ALIGNMENT_RIGHT) ? 0 : 1; |
| + insets->Set(index == 0 ? 1 : 0, |
| + left, |
| + (index != parent->child_count() - 1) ? 1 : 0, |
| + right); |
| } |
| views::View* owner_; |
| + ShelfAlignment alignment_; |
| DISALLOW_COPY_AND_ASSIGN(TrayPopupItemBorder); |
| }; |
| @@ -73,11 +90,13 @@ class TrayPopupItemBorder : public views::Border { |
| // - optionally changes background color on hover. |
| class TrayPopupItemContainer : public views::View { |
| public: |
| - TrayPopupItemContainer(views::View* view, bool change_background) |
| + TrayPopupItemContainer(views::View* view, |
| + ShelfAlignment alignment, |
| + bool change_background) |
| : hover_(false), |
| change_background_(change_background) { |
| set_notify_enter_exit_on_child(true); |
| - set_border(new TrayPopupItemBorder(this)); |
| + set_border(new TrayPopupItemBorder(this, alignment)); |
| views::BoxLayout* layout = new views::BoxLayout( |
| views::BoxLayout::kVertical, 0, 0, 0); |
| layout->set_spread_blank_space(true); |
| @@ -385,7 +404,7 @@ void SystemTrayBubble::CreateItemViews(user::LoginStatus login_status) { |
| } |
| if (view) { |
| bubble_view_->AddChildView(new TrayPopupItemContainer( |
| - view, bubble_type_ == BUBBLE_TYPE_DEFAULT)); |
| + view, tray_->shelf_alignment(), bubble_type_ == BUBBLE_TYPE_DEFAULT)); |
| } |
| } |
| } |