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)
SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
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);
SetHasInkDropActionOnClick(true);
SetInkDropVisibleOpacity(ripple_attributes.inkdrop_opacity);
SetFocusPainter(nullptr);
SetEventTargeter(std::make_unique<views::ViewTargeter>(this));
......@@ -72,6 +61,20 @@ SkColor CloseDeskButton::GetInkDropBaseColor() const {
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,
const gfx::Rect& rect) const {
DCHECK_EQ(target, this);
......
......@@ -32,6 +32,7 @@ class ASH_EXPORT CloseDeskButton : public views::ImageButton,
std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
const override;
SkColor GetInkDropBaseColor() const override;
void OnThemeChanged() override;
// views::ViewTargeterDelegate:
bool DoesIntersectRect(const views::View* target,
......
......@@ -37,12 +37,11 @@ constexpr int kCloseButtonMargin = 8;
constexpr int kMinDeskNameViewWidth = 20;
// TODO(minch): Use a color id in AshColorProvider instead.
constexpr SkColor kDarkModeActiveColor = SK_ColorWHITE;
constexpr SkColor kLightModeActiveColor = SK_ColorBLACK;
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
// aspect ratio of the root window taken from |root_window_size|.
int GetPreviewWidth(const gfx::Size& root_window_size, int preview_height) {
......@@ -135,10 +134,9 @@ void DeskMiniView::OnWidgetGestureTap(const gfx::Rect& screen_rect,
void DeskMiniView::UpdateBorderColor() {
DCHECK(desk_);
auto* color_provider = AshColorProvider::Get();
if (owner_bar_->dragged_item_over_bar() &&
IsPointOnMiniView(owner_bar_->last_dragged_item_screen_location())) {
desk_preview_->SetBorderColor(kDraggedOverColor);
} else if (IsViewHighlighted()) {
if ((owner_bar_->dragged_item_over_bar() &&
IsPointOnMiniView(owner_bar_->last_dragged_item_screen_location())) ||
IsViewHighlighted()) {
desk_preview_->SetBorderColor(color_provider->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusRingColor));
} else if (!desk_->is_active()) {
......@@ -212,6 +210,11 @@ void DeskMiniView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
}
}
void DeskMiniView::OnThemeChanged() {
views::View::OnThemeChanged();
UpdateBorderColor();
}
void DeskMiniView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
DCHECK(desk_);
......
......@@ -69,11 +69,12 @@ class ASH_EXPORT DeskMiniView
// state of the corresponding desk.
void UpdateBorderColor();
// views::Button:
// views::View:
const char* GetClassName() const override;
void Layout() override;
gfx::Size CalculatePreferredSize() const override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
void OnThemeChanged() override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
......
......@@ -140,6 +140,7 @@ void DeskNameView::OnThemeChanged() {
const SkColor selection_color = color_provider->GetControlsLayerColor(
AshColorProvider::ControlsLayerType::kFocusAuraColor);
SetSelectionBackgroundColor(selection_color);
UpdateViewAppearance();
}
views::View* DeskNameView::GetView() {
......
......@@ -27,7 +27,6 @@
#include "ui/aura/window.h"
#include "ui/events/event_observer.h"
#include "ui/events/types/event_type.h"
#include "ui/gfx/color_palette.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/views/event_monitor.h"
#include "ui/views/widget/widget.h"
......@@ -137,9 +136,6 @@ DesksBarView::DesksBarView(OverviewGrid* overview_grid)
background_view_->SetPaintToLayer(ui::LAYER_SOLID_COLOR);
background_view_->layer()->SetFillsBoundsOpaquely(false);
background_view_->layer()->SetColor(
AshColorProvider::Get()->GetShieldLayerColor(
AshColorProvider::ShieldLayerType::kShield80));
AddChildView(background_view_);
AddChildView(new_desk_button_);
......@@ -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 {
return width() <= kUseCompactLayoutWidthThreshold ||
width() <= min_width_to_fit_contents_;
......
......@@ -88,6 +88,7 @@ class ASH_EXPORT DesksBarView : public views::View,
void Layout() override;
bool OnMousePressed(const ui::MouseEvent& event) override;
void OnGestureEvent(ui::GestureEvent* event) override;
void OnThemeChanged() override;
// 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
......
......@@ -43,10 +43,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener)
layer()->SetFillsBoundsOpaquely(false);
SetHorizontalAlignment(gfx::ALIGN_CENTER);
AshColorProvider::Get()->DecoratePillButton(
this, AshColorProvider::ButtonType::kPillButtonWithIcon,
kDesksNewDeskButtonIcon);
SetInkDropMode(InkDropMode::ON);
SetHasInkDropActionOnClick(true);
SetFocusPainter(nullptr);
......@@ -57,7 +53,6 @@ NewDeskButton::NewDeskButton(views::ButtonListener* listener)
views::InstallRoundRectHighlightPathGenerator(this, GetInsets(),
kCornerRadius);
UpdateButtonState();
UpdateBorderState();
}
......@@ -170,6 +165,14 @@ std::unique_ptr<views::LabelButtonBorder> NewDeskButton::CreateDefaultBorder()
return border;
}
void NewDeskButton::OnThemeChanged() {
LabelButton::OnThemeChanged();
AshColorProvider::Get()->DecoratePillButton(
this, AshColorProvider::ButtonType::kPillButtonWithIcon,
kDesksNewDeskButtonIcon);
UpdateButtonState();
}
views::View* NewDeskButton::GetView() {
return this;
}
......
......@@ -51,6 +51,7 @@ class ASH_EXPORT NewDeskButton
SkColor GetInkDropBaseColor() const override;
std::unique_ptr<views::LabelButtonBorder> CreateDefaultBorder()
const override;
void OnThemeChanged() override;
// OverviewHighlightController::OverviewHighlightableView:
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