Commit 9f1b0c8a authored by minch's avatar minch Committed by Commit Bot

dark_mode: Live update the colors of virtual desks.

See recorded video at
https://drive.google.com/file/d/13kAPw4I16KbMgqXjx5juVMADNSzJF6K2/view?usp=sharing

Bug: 1131543
Change-Id: I25071e7f5576c1c425373164007389167bd4946f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2489322
Commit-Queue: Min Chen <minch@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#819907}
parent 4fc47ce2
...@@ -28,19 +28,8 @@ CloseDeskButton::CloseDeskButton(views::ButtonListener* listener) ...@@ -28,19 +28,8 @@ CloseDeskButton::CloseDeskButton(views::ButtonListener* listener)
SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE); SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
SetTooltipText(l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE)); SetTooltipText(l10n_util::GetStringUTF16(IDS_APP_ACCNAME_CLOSE));
AshColorProvider* color_provider = AshColorProvider::Get();
color_provider->DecorateCloseButton(
this, AshColorProvider::ButtonType::kCloseButtonWithSmallBase,
kCloseButtonSize, kCloseButtonIcon);
AshColorProvider::RippleAttributes ripple_attributes =
color_provider->GetRippleAttributes(background()->get_color());
highlight_opacity_ = ripple_attributes.highlight_opacity;
inkdrop_base_color_ = ripple_attributes.base_color;
SetInkDropMode(InkDropMode::ON); SetInkDropMode(InkDropMode::ON);
SetHasInkDropActionOnClick(true); SetHasInkDropActionOnClick(true);
SetInkDropVisibleOpacity(ripple_attributes.inkdrop_opacity);
SetFocusPainter(nullptr); SetFocusPainter(nullptr);
SetEventTargeter(std::make_unique<views::ViewTargeter>(this)); SetEventTargeter(std::make_unique<views::ViewTargeter>(this));
...@@ -72,6 +61,20 @@ SkColor CloseDeskButton::GetInkDropBaseColor() const { ...@@ -72,6 +61,20 @@ SkColor CloseDeskButton::GetInkDropBaseColor() const {
return inkdrop_base_color_; return inkdrop_base_color_;
} }
void CloseDeskButton::OnThemeChanged() {
views::ImageButton::OnThemeChanged();
AshColorProvider* color_provider = AshColorProvider::Get();
color_provider->DecorateCloseButton(
this, AshColorProvider::ButtonType::kCloseButtonWithSmallBase,
kCloseButtonSize, kCloseButtonIcon);
auto ripple_attributes =
color_provider->GetRippleAttributes(background()->get_color());
highlight_opacity_ = ripple_attributes.highlight_opacity;
inkdrop_base_color_ = ripple_attributes.base_color;
SetInkDropVisibleOpacity(ripple_attributes.inkdrop_opacity);
}
bool CloseDeskButton::DoesIntersectRect(const views::View* target, bool CloseDeskButton::DoesIntersectRect(const views::View* target,
const gfx::Rect& rect) const { const gfx::Rect& rect) const {
DCHECK_EQ(target, this); DCHECK_EQ(target, this);
......
...@@ -32,6 +32,7 @@ class ASH_EXPORT CloseDeskButton : public views::ImageButton, ...@@ -32,6 +32,7 @@ class ASH_EXPORT CloseDeskButton : public views::ImageButton,
std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight() std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
const override; const override;
SkColor GetInkDropBaseColor() const override; SkColor GetInkDropBaseColor() const override;
void OnThemeChanged() override;
// views::ViewTargeterDelegate: // views::ViewTargeterDelegate:
bool DoesIntersectRect(const views::View* target, bool DoesIntersectRect(const views::View* target,
......
...@@ -37,12 +37,11 @@ constexpr int kCloseButtonMargin = 8; ...@@ -37,12 +37,11 @@ constexpr int kCloseButtonMargin = 8;
constexpr int kMinDeskNameViewWidth = 20; constexpr int kMinDeskNameViewWidth = 20;
// TODO(minch): Use a color id in AshColorProvider instead.
constexpr SkColor kDarkModeActiveColor = SK_ColorWHITE; constexpr SkColor kDarkModeActiveColor = SK_ColorWHITE;
constexpr SkColor kLightModeActiveColor = SK_ColorBLACK; constexpr SkColor kLightModeActiveColor = SK_ColorBLACK;
constexpr SkColor kInactiveColor = SK_ColorTRANSPARENT; constexpr SkColor kInactiveColor = SK_ColorTRANSPARENT;
constexpr SkColor kDraggedOverColor = SkColorSetARGB(0xFF, 0x5B, 0xBC, 0xFF);
// Returns the width of the desk preview based on its |preview_height| and the // Returns the width of the desk preview based on its |preview_height| and the
// aspect ratio of the root window taken from |root_window_size|. // aspect ratio of the root window taken from |root_window_size|.
int GetPreviewWidth(const gfx::Size& root_window_size, int preview_height) { int GetPreviewWidth(const gfx::Size& root_window_size, int preview_height) {
...@@ -135,10 +134,9 @@ void DeskMiniView::OnWidgetGestureTap(const gfx::Rect& screen_rect, ...@@ -135,10 +134,9 @@ void DeskMiniView::OnWidgetGestureTap(const gfx::Rect& screen_rect,
void DeskMiniView::UpdateBorderColor() { void DeskMiniView::UpdateBorderColor() {
DCHECK(desk_); DCHECK(desk_);
auto* color_provider = AshColorProvider::Get(); auto* color_provider = AshColorProvider::Get();
if (owner_bar_->dragged_item_over_bar() && if ((owner_bar_->dragged_item_over_bar() &&
IsPointOnMiniView(owner_bar_->last_dragged_item_screen_location())) { IsPointOnMiniView(owner_bar_->last_dragged_item_screen_location())) ||
desk_preview_->SetBorderColor(kDraggedOverColor); IsViewHighlighted()) {
} else if (IsViewHighlighted()) {
desk_preview_->SetBorderColor(color_provider->GetControlsLayerColor( desk_preview_->SetBorderColor(color_provider->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusRingColor)); AshColorProvider::ControlsLayerType::kFocusRingColor));
} else if (!desk_->is_active()) { } else if (!desk_->is_active()) {
...@@ -212,6 +210,11 @@ void DeskMiniView::GetAccessibleNodeData(ui::AXNodeData* node_data) { ...@@ -212,6 +210,11 @@ void DeskMiniView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
} }
} }
void DeskMiniView::OnThemeChanged() {
views::View::OnThemeChanged();
UpdateBorderColor();
}
void DeskMiniView::ButtonPressed(views::Button* sender, void DeskMiniView::ButtonPressed(views::Button* sender,
const ui::Event& event) { const ui::Event& event) {
DCHECK(desk_); DCHECK(desk_);
......
...@@ -69,11 +69,12 @@ class ASH_EXPORT DeskMiniView ...@@ -69,11 +69,12 @@ class ASH_EXPORT DeskMiniView
// state of the corresponding desk. // state of the corresponding desk.
void UpdateBorderColor(); void UpdateBorderColor();
// views::Button: // views::View:
const char* GetClassName() const override; const char* GetClassName() const override;
void Layout() override; void Layout() override;
gfx::Size CalculatePreferredSize() const override; gfx::Size CalculatePreferredSize() const override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override; void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
void OnThemeChanged() override;
// views::ButtonListener: // views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override; void ButtonPressed(views::Button* sender, const ui::Event& event) override;
......
...@@ -140,6 +140,7 @@ void DeskNameView::OnThemeChanged() { ...@@ -140,6 +140,7 @@ void DeskNameView::OnThemeChanged() {
const SkColor selection_color = color_provider->GetControlsLayerColor( const SkColor selection_color = color_provider->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusAuraColor); AshColorProvider::ControlsLayerType::kFocusAuraColor);
SetSelectionBackgroundColor(selection_color); SetSelectionBackgroundColor(selection_color);
UpdateViewAppearance();
} }
views::View* DeskNameView::GetView() { views::View* DeskNameView::GetView() {
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/events/event_observer.h" #include "ui/events/event_observer.h"
#include "ui/events/types/event_type.h" #include "ui/events/types/event_type.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/insets.h"
#include "ui/views/event_monitor.h" #include "ui/views/event_monitor.h"
#include "ui/views/widget/widget.h" #include "ui/views/widget/widget.h"
...@@ -137,9 +136,6 @@ DesksBarView::DesksBarView(OverviewGrid* overview_grid) ...@@ -137,9 +136,6 @@ DesksBarView::DesksBarView(OverviewGrid* overview_grid)
background_view_->SetPaintToLayer(ui::LAYER_SOLID_COLOR); background_view_->SetPaintToLayer(ui::LAYER_SOLID_COLOR);
background_view_->layer()->SetFillsBoundsOpaquely(false); background_view_->layer()->SetFillsBoundsOpaquely(false);
background_view_->layer()->SetColor(
AshColorProvider::Get()->GetShieldLayerColor(
AshColorProvider::ShieldLayerType::kShield80));
AddChildView(background_view_); AddChildView(background_view_);
AddChildView(new_desk_button_); AddChildView(new_desk_button_);
...@@ -302,6 +298,14 @@ void DesksBarView::OnGestureEvent(ui::GestureEvent* event) { ...@@ -302,6 +298,14 @@ void DesksBarView::OnGestureEvent(ui::GestureEvent* event) {
} }
} }
void DesksBarView::OnThemeChanged() {
views::View::OnThemeChanged();
DCHECK_EQ(ui::LAYER_SOLID_COLOR, background_view_->layer()->type());
background_view_->layer()->SetColor(
AshColorProvider::Get()->GetShieldLayerColor(
AshColorProvider::ShieldLayerType::kShield80));
}
bool DesksBarView::UsesCompactLayout() const { bool DesksBarView::UsesCompactLayout() const {
return width() <= kUseCompactLayoutWidthThreshold || return width() <= kUseCompactLayoutWidthThreshold ||
width() <= min_width_to_fit_contents_; width() <= min_width_to_fit_contents_;
......
...@@ -88,6 +88,7 @@ class ASH_EXPORT DesksBarView : public views::View, ...@@ -88,6 +88,7 @@ class ASH_EXPORT DesksBarView : public views::View,
void Layout() override; void Layout() override;
bool OnMousePressed(const ui::MouseEvent& event) override; bool OnMousePressed(const ui::MouseEvent& event) override;
void OnGestureEvent(ui::GestureEvent* event) override; void OnGestureEvent(ui::GestureEvent* event) override;
void OnThemeChanged() override;
// Returns true if the width of the DesksBarView is below a defined // Returns true if the width of the DesksBarView is below a defined
// threshold or the contents no longer fit within this object's bounds in // threshold or the contents no longer fit within this object's bounds in
......
...@@ -43,10 +43,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener) ...@@ -43,10 +43,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener)
layer()->SetFillsBoundsOpaquely(false); layer()->SetFillsBoundsOpaquely(false);
SetHorizontalAlignment(gfx::ALIGN_CENTER); SetHorizontalAlignment(gfx::ALIGN_CENTER);
AshColorProvider::Get()->DecoratePillButton(
this, AshColorProvider::ButtonType::kPillButtonWithIcon,
kDesksNewDeskButtonIcon);
SetInkDropMode(InkDropMode::ON); SetInkDropMode(InkDropMode::ON);
SetHasInkDropActionOnClick(true); SetHasInkDropActionOnClick(true);
SetFocusPainter(nullptr); SetFocusPainter(nullptr);
...@@ -57,7 +53,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener) ...@@ -57,7 +53,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener)
views::InstallRoundRectHighlightPathGenerator(this, GetInsets(), views::InstallRoundRectHighlightPathGenerator(this, GetInsets(),
kCornerRadius); kCornerRadius);
UpdateButtonState();
UpdateBorderState(); UpdateBorderState();
} }
...@@ -170,6 +165,14 @@ std::unique_ptr<views::LabelButtonBorder> NewDeskButton::CreateDefaultBorder() ...@@ -170,6 +165,14 @@ std::unique_ptr<views::LabelButtonBorder> NewDeskButton::CreateDefaultBorder()
return border; return border;
} }
void NewDeskButton::OnThemeChanged() {
LabelButton::OnThemeChanged();
AshColorProvider::Get()->DecoratePillButton(
this, AshColorProvider::ButtonType::kPillButtonWithIcon,
kDesksNewDeskButtonIcon);
UpdateButtonState();
}
views::View* NewDeskButton::GetView() { views::View* NewDeskButton::GetView() {
return this; return this;
} }
......
...@@ -51,6 +51,7 @@ class ASH_EXPORT NewDeskButton ...@@ -51,6 +51,7 @@ class ASH_EXPORT NewDeskButton
SkColor GetInkDropBaseColor() const override; SkColor GetInkDropBaseColor() const override;
std::unique_ptr<views::LabelButtonBorder> CreateDefaultBorder() std::unique_ptr<views::LabelButtonBorder> CreateDefaultBorder()
const override; const override;
void OnThemeChanged() override;
// OverviewHighlightController::OverviewHighlightableView: // OverviewHighlightController::OverviewHighlightableView:
views::View* GetView() override; views::View* GetView() override;
......
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