Commit 51948f6c authored by Tommy Steimel's avatar Tommy Steimel Committed by Commit Bot

GMC: Always leave space for the dismiss button

This CL adds a new placeholder view to contain the dismiss button and
reserve space in the header so that nothing needs to shift when the
dismiss button shows or hides.

Bug: 1016369
Change-Id: Iaeb4f2735df814e5b8e29c79b28434f2aea1bb17
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1883622Reviewed-by: default avatarJazz Xu <jazzhsu@chromium.org>
Commit-Queue: Tommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710037}
parent b140ec29
...@@ -75,12 +75,19 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView( ...@@ -75,12 +75,19 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
swipeable_container_->layer()->SetFillsBoundsOpaquely(false); swipeable_container_->layer()->SetFillsBoundsOpaquely(false);
AddChildView(swipeable_container_.get()); AddChildView(swipeable_container_.get());
dismiss_button_placeholder_ = std::make_unique<views::View>();
dismiss_button_placeholder_->set_owned_by_client();
dismiss_button_placeholder_->SetPreferredSize(kDismissButtonSize);
dismiss_button_placeholder_->SetLayoutManager(
std::make_unique<views::FillLayout>());
dismiss_button_container_ = std::make_unique<views::View>(); dismiss_button_container_ = std::make_unique<views::View>();
dismiss_button_container_->set_owned_by_client(); dismiss_button_container_->set_owned_by_client();
dismiss_button_container_->SetPreferredSize(kDismissButtonSize); dismiss_button_container_->SetPreferredSize(kDismissButtonSize);
dismiss_button_container_->SetLayoutManager( dismiss_button_container_->SetLayoutManager(
std::make_unique<views::FillLayout>()); std::make_unique<views::FillLayout>());
dismiss_button_container_->SetVisible(false); dismiss_button_container_->SetVisible(false);
dismiss_button_placeholder_->AddChildView(dismiss_button_container_.get());
auto dismiss_button = std::make_unique<DismissButton>(this); auto dismiss_button = std::make_unique<DismissButton>(this);
dismiss_button->SetPreferredSize(kDismissButtonSize); dismiss_button->SetPreferredSize(kDismissButtonSize);
...@@ -92,8 +99,8 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView( ...@@ -92,8 +99,8 @@ MediaNotificationContainerImplView::MediaNotificationContainerImplView(
UpdateDismissButtonIcon(); UpdateDismissButtonIcon();
view_ = std::make_unique<media_message_center::MediaNotificationView>( view_ = std::make_unique<media_message_center::MediaNotificationView>(
this, std::move(item), dismiss_button_container_.get(), base::string16(), this, std::move(item), dismiss_button_placeholder_.get(),
kWidth, /*should_show_icon=*/false); base::string16(), kWidth, /*should_show_icon=*/false);
view_->set_owned_by_client(); view_->set_owned_by_client();
ForceExpandedState(); ForceExpandedState();
......
...@@ -100,7 +100,16 @@ class MediaNotificationContainerImplView ...@@ -100,7 +100,16 @@ class MediaNotificationContainerImplView
const std::string id_; const std::string id_;
std::unique_ptr<views::View> swipeable_container_; std::unique_ptr<views::View> swipeable_container_;
// Always "visible" so that it reserves space in the header so that the
// dismiss button can appear without forcing things to shift.
std::unique_ptr<views::View> dismiss_button_placeholder_;
// Shows the colored circle background behind the dismiss button to give it
// proper contrast against the artwork. The background can't be on the dismiss
// button itself because it messes up the ink drop.
std::unique_ptr<views::View> dismiss_button_container_; std::unique_ptr<views::View> dismiss_button_container_;
DismissButton* dismiss_button_; DismissButton* dismiss_button_;
std::unique_ptr<media_message_center::MediaNotificationView> view_; std::unique_ptr<media_message_center::MediaNotificationView> view_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment