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

Unified Diff: ui/message_center/views/message_view.cc

Issue 2589163003: Add shadow/corner radius to notifications (toasts and in-center). (Closed)
Patch Set: . Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
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 df23b09e2b1f2240a866c5a0703eff49b58d00c8..4ec351c79b7304f9c2525b0898f8292ff9be987a 100644
--- a/ui/message_center/views/message_view.cc
+++ b/ui/message_center/views/message_view.cc
@@ -10,6 +10,8 @@
#include "ui/base/models/simple_menu_model.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/gfx/canvas.h"
+#include "ui/gfx/image/image_skia_operations.h"
+#include "ui/gfx/shadow_util.h"
#include "ui/gfx/shadow_value.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/message_center_style.h"
@@ -17,17 +19,21 @@
#include "ui/resources/grit/ui_resources.h"
#include "ui/strings/grit/ui_strings.h"
#include "ui/views/background.h"
+#include "ui/views/border.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/controls/scroll_view.h"
#include "ui/views/focus/focus_manager.h"
#include "ui/views/painter.h"
-#include "ui/views/shadow_border.h"
namespace {
-constexpr int kShadowOffset = 1;
-constexpr int kShadowBlur = 4;
+#if defined(OS_CHROMEOS)
+const int kShadowCornerRadius = 2;
+#else
+const int kShadowCornerRadius = 0;
+#endif
+const int kShadowElevation = 2;
// Creates a text for spoken feedback from the data contained in the
// notification.
@@ -93,16 +99,19 @@ void MessageView::UpdateWithNotification(const Notification& notification) {
// static
gfx::Insets MessageView::GetShadowInsets() {
- return gfx::Insets(kShadowBlur / 2 - kShadowOffset,
- kShadowBlur / 2,
- kShadowBlur / 2 + kShadowOffset,
- kShadowBlur / 2);
+ return -gfx::ShadowValue::GetMargin(
+ gfx::ShadowDetails::Get(kShadowElevation, kShadowCornerRadius).values);
}
void MessageView::CreateShadowBorder() {
- SetBorder(std::unique_ptr<views::Border>(new views::ShadowBorder(
- gfx::ShadowValue(gfx::Vector2d(0, kShadowOffset), kShadowBlur,
- message_center::kShadowColor))));
+ const auto& shadow =
+ gfx::ShadowDetails::Get(kShadowElevation, kShadowCornerRadius);
+ gfx::Insets ninebox_insets = gfx::ShadowValue::GetBlurRegion(shadow.values) +
+ gfx::Insets(kShadowCornerRadius);
+ SetBorder(views::CreateBorderPainter(
+ std::unique_ptr<views::Painter>(views::Painter::CreateImagePainter(
Evan Stade 2017/01/05 00:11:41 see crbug.com/678371
+ shadow.ninebox_image, ninebox_insets)),
+ -gfx::ShadowValue::GetMargin(shadow.values)));
}
void MessageView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
@@ -167,6 +176,15 @@ void MessageView::Layout() {
// Background.
background_view_->SetBoundsRect(content_bounds);
+#if defined(OS_CHROMEOS)
+ // ChromeOS rounds the corners of the message view. TODO(estade): should we do
+ // this for all platforms?
+ gfx::Path path;
+ constexpr SkScalar kCornerRadius = SkIntToScalar(2);
+ path.addRoundRect(gfx::RectToSkRect(background_view_->GetLocalBounds()),
+ kCornerRadius, kCornerRadius);
+ background_view_->set_clip_path(path);
+#endif
gfx::Size small_image_size(small_image_view_->GetPreferredSize());
gfx::Rect small_image_rect(small_image_size);

Powered by Google App Engine
This is Rietveld 408576698