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

Side by Side Diff: ash/system/tray/tray_background_view.cc

Issue 391213002: Fixed TrayBackgroundView::GetBubbleAnchorRect to handle left/right alignment when the tray isn't vi… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | ash/system/web_notification/web_notification_tray_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/system/tray/tray_background_view.h" 5 #include "ash/system/tray/tray_background_view.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/root_window_controller.h" 8 #include "ash/root_window_controller.h"
9 #include "ash/screen_util.h" 9 #include "ash/screen_util.h"
10 #include "ash/shelf/shelf_layout_manager.h" 10 #include "ash/shelf/shelf_layout_manager.h"
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM) { 541 if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM) {
542 bool rtl = base::i18n::IsRTL(); 542 bool rtl = base::i18n::IsRTL();
543 rect.Inset( 543 rect.Inset(
544 rtl ? kBubblePaddingHorizontalSide : 0, 544 rtl ? kBubblePaddingHorizontalSide : 0,
545 kBubblePaddingHorizontalBottom, 545 kBubblePaddingHorizontalBottom,
546 rtl ? 0 : kBubblePaddingHorizontalSide, 546 rtl ? 0 : kBubblePaddingHorizontalSide,
547 0); 547 0);
548 } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) { 548 } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) {
549 rect.Inset(0, 0, kBubblePaddingVerticalSide + 4, 549 rect.Inset(0, 0, kBubblePaddingVerticalSide + 4,
550 kBubblePaddingVerticalBottom); 550 kBubblePaddingVerticalBottom);
551 } else { 551 } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) {
552 rect.Inset(kBubblePaddingVerticalSide, 0, 0, 552 rect.Inset(kBubblePaddingVerticalSide, 0, 0,
553 kBubblePaddingVerticalBottom); 553 kBubblePaddingVerticalBottom);
554 } else {
555 // TODO(bruthig) May need to handle other ANCHOR_ALIGNMENT_ values.
556 // ie. ANCHOR_ALIGNMENT_TOP
557 DCHECK(false) << "Unhandled anchor alignment.";
554 } 558 }
555 } else if (anchor_type == TrayBubbleView::ANCHOR_TYPE_BUBBLE) { 559 } else if (anchor_type == TrayBubbleView::ANCHOR_TYPE_BUBBLE) {
556 // Invert the offsets to align with the bubble below. 560 // Invert the offsets to align with the bubble below.
557 // Note that with the alternate shelf layout the tips are not shown and 561 // Note that with the alternate shelf layout the tips are not shown and
558 // the offsets for left and right alignment do not need to be applied. 562 // the offsets for left and right alignment do not need to be applied.
559 int vertical_alignment = 0; 563 int vertical_alignment = 0;
560 int horizontal_alignment = kBubblePaddingVerticalBottom; 564 int horizontal_alignment = kBubblePaddingVerticalBottom;
561 if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) 565 if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT)
562 rect.Inset(vertical_alignment, 0, 0, horizontal_alignment); 566 rect.Inset(vertical_alignment, 0, 0, horizontal_alignment);
563 else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) 567 else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT)
564 rect.Inset(0, 0, vertical_alignment, horizontal_alignment); 568 rect.Inset(0, 0, vertical_alignment, horizontal_alignment);
569 } else {
570 DCHECK(false) << "Unhandled anchor type.";
565 } 571 }
566 } 572 } else {
567
568 // TODO(jennyz): May need to add left/right alignment in the following code.
569 if (rect.IsEmpty()) {
570 aura::Window* target_root = anchor_widget ? 573 aura::Window* target_root = anchor_widget ?
571 anchor_widget->GetNativeView()->GetRootWindow() : 574 anchor_widget->GetNativeView()->GetRootWindow() :
572 Shell::GetPrimaryRootWindow(); 575 Shell::GetPrimaryRootWindow();
573 rect = target_root->bounds(); 576 rect = target_root->bounds();
574 rect = gfx::Rect( 577 if (anchor_type == TrayBubbleView::ANCHOR_TYPE_TRAY) {
575 base::i18n::IsRTL() ? kPaddingFromRightEdgeOfScreenBottomAlignment : 578 if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM) {
576 rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment, 579 rect = gfx::Rect(
577 rect.height() - kPaddingFromBottomOfScreenBottomAlignment, 580 base::i18n::IsRTL() ?
578 0, 0); 581 kPaddingFromRightEdgeOfScreenBottomAlignment :
579 rect = ScreenUtil::ConvertRectToScreen(target_root, rect); 582 rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment,
583 rect.height() - kPaddingFromBottomOfScreenBottomAlignment,
584 0, 0);
585 rect = ScreenUtil::ConvertRectToScreen(target_root, rect);
586 } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) {
587 rect = gfx::Rect(
588 kPaddingFromRightEdgeOfScreenBottomAlignment,
589 rect.height() - kPaddingFromBottomOfScreenBottomAlignment,
590 1, 1);
591 rect = ScreenUtil::ConvertRectToScreen(target_root, rect);
592 } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) {
593 rect = gfx::Rect(
594 rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment,
595 rect.height() - kPaddingFromBottomOfScreenBottomAlignment,
596 1, 1);
597 rect = ScreenUtil::ConvertRectToScreen(target_root, rect);
598 } else {
599 // TODO(bruthig) May need to handle other ANCHOR_ALIGNMENT_ values.
600 // ie. ANCHOR_ALIGNMENT_TOP
601 DCHECK(false) << "Unhandled anchor alignment.";
602 }
603 } else {
604 DCHECK(false) << "Unhandled anchor type.";
bruthig 2014/07/15 21:00:45 The WebNotificationTrayTest.PopupAndAutoHideShelf
605 }
580 } 606 }
581 return rect; 607 return rect;
582 } 608 }
583 609
584 TrayBubbleView::AnchorAlignment TrayBackgroundView::GetAnchorAlignment() const { 610 TrayBubbleView::AnchorAlignment TrayBackgroundView::GetAnchorAlignment() const {
585 switch (shelf_alignment_) { 611 switch (shelf_alignment_) {
586 case SHELF_ALIGNMENT_BOTTOM: 612 case SHELF_ALIGNMENT_BOTTOM:
587 return TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM; 613 return TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM;
588 case SHELF_ALIGNMENT_LEFT: 614 case SHELF_ALIGNMENT_LEFT:
589 return TrayBubbleView::ANCHOR_ALIGNMENT_LEFT; 615 return TrayBubbleView::ANCHOR_ALIGNMENT_LEFT;
(...skipping 20 matching lines...) Expand all
610 background_->set_alpha(kTrayBackgroundAlpha); 636 background_->set_alpha(kTrayBackgroundAlpha);
611 SchedulePaint(); 637 SchedulePaint();
612 } 638 }
613 639
614 void TrayBackgroundView::UpdateBubbleViewArrow( 640 void TrayBackgroundView::UpdateBubbleViewArrow(
615 views::TrayBubbleView* bubble_view) { 641 views::TrayBubbleView* bubble_view) {
616 // Nothing to do here. 642 // Nothing to do here.
617 } 643 }
618 644
619 } // namespace ash 645 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/system/web_notification/web_notification_tray_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698