| Index: ui/message_center/views/message_popup_collection.cc
|
| diff --git a/ui/message_center/views/message_popup_collection.cc b/ui/message_center/views/message_popup_collection.cc
|
| index 1a28ffe591e6e9f7e29b0d9876aa3ac6fcd40cb5..e4280aa787189e21b29d8b4d1b92d172a098fee6 100644
|
| --- a/ui/message_center/views/message_popup_collection.cc
|
| +++ b/ui/message_center/views/message_popup_collection.cc
|
| @@ -83,7 +83,25 @@ void MessagePopupCollection::ClickOnNotification(
|
| void MessagePopupCollection::RemoveNotification(
|
| const std::string& notification_id,
|
| bool by_user) {
|
| - message_center_->RemoveNotification(notification_id, by_user);
|
| + NotificationList::PopupNotifications notifications =
|
| + message_center_->GetPopupNotifications();
|
| + for (NotificationList::PopupNotifications::iterator iter =
|
| + notifications.begin();
|
| + iter != notifications.end(); ++iter) {
|
| + Notification* notification = *iter;
|
| + DCHECK(notification);
|
| +
|
| + if (notification->id() != notification_id)
|
| + continue;
|
| +
|
| + // Don't remove the notification only when it's not pinned.
|
| + if (!notification->pinned())
|
| + message_center_->RemoveNotification(notification_id, by_user);
|
| + else
|
| + message_center_->MarkSinglePopupAsShown(notification_id, true /* read */);
|
| +
|
| + break;
|
| + }
|
| }
|
|
|
| scoped_ptr<ui::MenuModel> MessagePopupCollection::CreateMenuModel(
|
| @@ -139,10 +157,21 @@ void MessagePopupCollection::UpdateWidgets() {
|
| if (FindToast((*iter)->id()))
|
| continue;
|
|
|
| - NotificationView* view =
|
| - NotificationView::Create(NULL,
|
| - *(*iter),
|
| - true); // Create top-level notification.
|
| + NotificationView* view;
|
| + // Create top-level notification.
|
| +#if defined(OS_CHROMEOS)
|
| + if ((*iter)->pinned()) {
|
| + Notification notification = *(*iter);
|
| + // Override pinned status, since toasts should be closable even when it's
|
| + // pinned.
|
| + notification.set_pinned(false);
|
| + view = NotificationView::Create(NULL, notification, true);
|
| + } else
|
| +#endif // defined(OS_CHROMEOS)
|
| + {
|
| + view = NotificationView::Create(NULL, *(*iter), true);
|
| + }
|
| +
|
| view->set_context_menu_controller(context_menu_controller_.get());
|
| int view_height = ToastContentsView::GetToastSizeForView(view).height();
|
| int height_available =
|
|
|