Chromium Code Reviews| Index: ui/message_center/views/message_view.cc |
| diff --git a/ui/message_center/views/message_view.cc b/ui/message_center/views/message_view.cc |
| index 7591a5bf9f6de1d0401ebdb6c965e140af000488..a1fa32c3faa1cfdd9c55a4834a6082574dd81dd7 100644 |
| --- a/ui/message_center/views/message_view.cc |
| +++ b/ui/message_center/views/message_view.cc |
| @@ -25,6 +25,7 @@ |
| #include "ui/views/controls/scroll_view.h" |
| #include "ui/views/focus/focus_manager.h" |
| #include "ui/views/painter.h" |
| +#include "ui/views/widget/widget.h" |
| namespace { |
| @@ -64,7 +65,8 @@ MessageView::MessageView(MessageCenterController* controller, |
| const Notification& notification) |
| : controller_(controller), |
| notification_id_(notification.id()), |
| - notifier_id_(notification.notifier_id()) { |
| + notifier_id_(notification.notifier_id()), |
| + slide_out_controller_(this, this) { |
| SetFocusBehavior(FocusBehavior::ALWAYS); |
| // Create the opaque background that's above the view's shadow. |
| @@ -85,7 +87,7 @@ MessageView::~MessageView() { |
| void MessageView::UpdateWithNotification(const Notification& notification) { |
| display_source_ = notification.display_source(); |
| accessible_name_ = CreateAccessibleName(notification); |
| - set_slide_out_enabled(!notification.pinned()); |
| + slide_out_controller_.set_enabled(!notification.pinned()); |
| } |
| // static |
| @@ -94,7 +96,11 @@ gfx::Insets MessageView::GetShadowInsets() { |
| gfx::ShadowDetails::Get(kShadowElevation, kShadowCornerRadius).values); |
| } |
| -void MessageView::CreateShadowBorder() { |
| +void MessageView::SetIsNested() { |
| + is_nested_ = true; |
| + SetPaintToLayer(); |
| + layer()->SetFillsBoundsOpaquely(false); |
| + |
| const auto& shadow = |
| gfx::ShadowDetails::Get(kShadowElevation, kShadowCornerRadius); |
| gfx::Insets ninebox_insets = gfx::ShadowValue::GetBlurRegion(shadow.values) + |
| @@ -145,18 +151,15 @@ bool MessageView::OnKeyReleased(const ui::KeyEvent& event) { |
| } |
| void MessageView::OnPaint(gfx::Canvas* canvas) { |
| - SlideOutView::OnPaint(canvas); |
| views::Painter::PaintFocusPainter(this, canvas, focus_painter_.get()); |
| } |
| void MessageView::OnFocus() { |
| - SlideOutView::OnFocus(); |
| // We paint a focus indicator. |
| SchedulePaint(); |
| } |
| void MessageView::OnBlur() { |
| - SlideOutView::OnBlur(); |
| // We paint a focus indicator. |
| SchedulePaint(); |
| } |
| @@ -199,11 +202,6 @@ void MessageView::OnGestureEvent(ui::GestureEvent* event) { |
| } |
| } |
| - SlideOutView::OnGestureEvent(event); |
| - // Do not return here by checking handled(). SlideOutView calls SetHandled() |
| - // even though the scroll gesture doesn't make no (or little) effects on the |
| - // slide-out behavior. See http://crbug.com/172991 |
| - |
| if (!event->IsScrollGestureEvent() && !event->IsFlingScrollEvent()) |
| return; |
| @@ -212,14 +210,18 @@ void MessageView::OnGestureEvent(ui::GestureEvent* event) { |
| event->SetHandled(); |
| } |
| -void MessageView::OnCloseButtonPressed() { |
| - controller_->RemoveNotification(notification_id_, true); // By user. |
| +ui::Layer* MessageView::GetSlideOutLayer() { |
| + return is_nested_ ? layer() : GetWidget()->GetLayer(); |
|
sky
2017/04/28 22:35:36
Is it possible for this to be called when is_neste
Evan Stade
2017/04/28 23:18:38
I don't think so. It is only called from inside Sl
|
| } |
| void MessageView::OnSlideOut() { |
| controller_->RemoveNotification(notification_id_, true); // By user. |
| } |
| +void MessageView::OnCloseButtonPressed() { |
| + controller_->RemoveNotification(notification_id_, true); // By user. |
| +} |
| + |
| void MessageView::SetDrawBackgroundAsActive(bool active) { |
| background_view_->background()-> |
| SetNativeControlColor(active ? kHoveredButtonBackgroundColor : |