| Index: ui/message_center/views/notification_view_md.cc
|
| diff --git a/ui/message_center/views/notification_view_md.cc b/ui/message_center/views/notification_view_md.cc
|
| index 7a86c5bc7e9e7e2414f81900eaea6e48f5110a06..8569d19e36030a558df668be15ce1b95f391b5c2 100644
|
| --- a/ui/message_center/views/notification_view_md.cc
|
| +++ b/ui/message_center/views/notification_view_md.cc
|
| @@ -116,6 +116,8 @@ class ItemView : public views::View {
|
| explicit ItemView(const message_center::NotificationItem& item);
|
| ~ItemView() override;
|
|
|
| + const char* GetClassName() const override;
|
| +
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(ItemView);
|
| };
|
| @@ -142,6 +144,10 @@ ItemView::ItemView(const message_center::NotificationItem& item) {
|
|
|
| ItemView::~ItemView() = default;
|
|
|
| +const char* ItemView::GetClassName() const {
|
| + return "ItemView";
|
| +}
|
| +
|
| // CompactTitleMessageView /////////////////////////////////////////////////////
|
|
|
| // CompactTitleMessageView shows notification title and message in a single
|
| @@ -151,6 +157,8 @@ class CompactTitleMessageView : public views::View {
|
| explicit CompactTitleMessageView();
|
| ~CompactTitleMessageView() override;
|
|
|
| + const char* GetClassName() const override;
|
| +
|
| void OnPaint(gfx::Canvas* canvas) override;
|
|
|
| void set_title(const base::string16& title) { title_ = title; }
|
| @@ -166,7 +174,11 @@ class CompactTitleMessageView : public views::View {
|
| views::Label* message_view_ = nullptr;
|
| };
|
|
|
| -CompactTitleMessageView::~CompactTitleMessageView() {}
|
| +CompactTitleMessageView::~CompactTitleMessageView() = default;
|
| +
|
| +const char* CompactTitleMessageView::GetClassName() const {
|
| + return "CompactTitleMessageView";
|
| +}
|
|
|
| CompactTitleMessageView::CompactTitleMessageView() {
|
| SetLayoutManager(new views::FillLayout());
|
| @@ -227,6 +239,8 @@ class NotificationButtonMD : public views::LabelButton {
|
| const base::string16& text);
|
| ~NotificationButtonMD() override;
|
|
|
| + const char* GetClassName() const override;
|
| +
|
| std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
|
| const override;
|
|
|
| @@ -249,6 +263,10 @@ NotificationButtonMD::NotificationButtonMD(views::ButtonListener* listener,
|
|
|
| NotificationButtonMD::~NotificationButtonMD() = default;
|
|
|
| +const char* NotificationButtonMD::GetClassName() const {
|
| + return "NotificationButtonMD";
|
| +}
|
| +
|
| std::unique_ptr<views::InkDropHighlight>
|
| NotificationButtonMD::CreateInkDropHighlight() const {
|
| std::unique_ptr<views::InkDropHighlight> highlight =
|
| @@ -304,10 +322,12 @@ void NotificationViewMD::CreateOrUpdateViews(const Notification& notification) {
|
| CreateOrUpdateIconView(notification);
|
| CreateOrUpdateSmallIconView(notification);
|
| CreateOrUpdateImageView(notification);
|
| - CreateOrUpdateActionButtonViews(notification);
|
| CreateOrUpdateCloseButtonView(notification);
|
| CreateOrUpdateSettingsButtonView(notification);
|
| UpdateViewForExpandedState(expanded_);
|
| + // Should be called at the last because SynthesizeMouseMoveEvent() requires
|
| + // everything is in the right location when called.
|
| + CreateOrUpdateActionButtonViews(notification);
|
| }
|
|
|
| NotificationViewMD::NotificationViewMD(MessageCenterController* controller,
|
| @@ -472,8 +492,10 @@ void NotificationViewMD::CreateOrUpdateContextTitleView(
|
|
|
| void NotificationViewMD::CreateOrUpdateTitleView(
|
| const Notification& notification) {
|
| - if (notification.type() == NOTIFICATION_TYPE_PROGRESS) {
|
| - left_content_->RemoveChildView(title_view_);
|
| + if (notification.title().empty() ||
|
| + notification.type() == NOTIFICATION_TYPE_PROGRESS) {
|
| + if (title_view_)
|
| + left_content_->RemoveChildView(title_view_);
|
| title_view_ = nullptr;
|
| return;
|
| }
|
| @@ -528,7 +550,8 @@ void NotificationViewMD::CreateOrUpdateMessageView(
|
| void NotificationViewMD::CreateOrUpdateCompactTitleMessageView(
|
| const Notification& notification) {
|
| if (notification.type() != NOTIFICATION_TYPE_PROGRESS) {
|
| - left_content_->RemoveChildView(compact_title_message_view_);
|
| + if (compact_title_message_view_)
|
| + left_content_->RemoveChildView(compact_title_message_view_);
|
| compact_title_message_view_ = nullptr;
|
| return;
|
| }
|
| @@ -545,7 +568,8 @@ void NotificationViewMD::CreateOrUpdateCompactTitleMessageView(
|
| void NotificationViewMD::CreateOrUpdateProgressBarView(
|
| const Notification& notification) {
|
| if (notification.type() != NOTIFICATION_TYPE_PROGRESS) {
|
| - left_content_->RemoveChildView(progress_bar_view_);
|
| + if (progress_bar_view_)
|
| + left_content_->RemoveChildView(progress_bar_view_);
|
| progress_bar_view_ = nullptr;
|
| header_row_->ClearProgress();
|
| return;
|
| @@ -593,7 +617,8 @@ void NotificationViewMD::CreateOrUpdateIconView(
|
| const Notification& notification) {
|
| if (notification.type() == NOTIFICATION_TYPE_PROGRESS ||
|
| notification.type() == NOTIFICATION_TYPE_MULTIPLE) {
|
| - right_content_->RemoveChildView(icon_view_);
|
| + if (icon_view_)
|
| + right_content_->RemoveChildView(icon_view_);
|
| icon_view_ = nullptr;
|
| return;
|
| }
|
| @@ -685,11 +710,14 @@ void NotificationViewMD::CreateOrUpdateActionButtonViews(
|
| }
|
| }
|
|
|
| - if (new_buttons) {
|
| - // TODO(fukino): Investigate if this Layout() is necessary.
|
| - Layout();
|
| + // Inherit mouse hover state when action button views reset.
|
| + // If the view is not expanded, there should be no hover state.
|
| + if (new_buttons && expanded_) {
|
| views::Widget* widget = GetWidget();
|
| - if (widget != NULL) {
|
| + if (widget) {
|
| + // This Layout() is needed because button should be in the right location
|
| + // in the view hierarchy when SynthesizeMouseMoveEvent() is called.
|
| + Layout();
|
| widget->SetSize(widget->GetContentsView()->GetPreferredSize());
|
| GetWidget()->SynthesizeMouseMoveEvent();
|
| }
|
|
|