Commit 0814af41 authored by minch's avatar minch Committed by Commit Bot

dark_mode: Make system tray's background color can be live updated.

Bug: 1131543
Change-Id: I9c1cb61c48033625ecdc0f05e5188ab1ac2e7783
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2454389
Commit-Queue: Min Chen <minch@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Reviewed-by: default avatarXiaoqian Dai <xdai@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815381}
parent dec5cec3
......@@ -71,6 +71,12 @@ void AttemptRestartChrome() {
Shell::Get()->session_controller()->AttemptRestartChrome();
}
// AshColorProvider is kind of NativeTheme of ChromeOS. This will notify the
// View::OnThemeChanged to live update the colors on color mode/theme changes.
void NotifyThemeChanges() {
ui::NativeTheme::GetInstanceForNativeUi()->NotifyObservers();
}
} // namespace
AshColorProvider::AshColorProvider() {
......@@ -406,12 +412,16 @@ void AshColorProvider::NotifyDarkModeEnabledPrefChange() {
const bool is_enabled = IsDarkModeEnabled();
for (auto& observer : observers_)
observer.OnColorModeChanged(is_enabled);
NotifyThemeChanges();
}
void AshColorProvider::NotifyColorModeThemedPrefChange() {
const bool is_themed = IsThemed();
for (auto& observer : observers_)
observer.OnColorModeThemed(is_themed);
NotifyThemeChanges();
}
} // namespace ash
......@@ -248,8 +248,6 @@ TrayBubbleView::TrayBubbleView(const InitParams& init_params)
layer()->SetRoundedCornerRadius(
gfx::RoundedCornersF{kUnifiedTrayCornerRadius});
layer()->SetColor(AshColorProvider::Get()->GetBaseLayerColor(
AshColorProvider::BaseLayerType::kTransparent80));
layer()->SetFillsBoundsOpaquely(false);
layer()->SetIsFastRoundedCorner(true);
layer()->SetBackgroundBlur(kUnifiedMenuBackgroundBlur);
......@@ -469,6 +467,15 @@ const char* TrayBubbleView::GetClassName() const {
return "TrayBubbleView";
}
void TrayBubbleView::OnThemeChanged() {
views::BubbleDialogDelegateView::OnThemeChanged();
DCHECK(layer());
if (layer()->type() != ui::LAYER_SOLID_COLOR)
return;
layer()->SetColor(AshColorProvider::Get()->GetBaseLayerColor(
AshColorProvider::BaseLayerType::kTransparent80));
}
void TrayBubbleView::MouseMovedOutOfHost() {
// The user moved the mouse that was over the bubble when it was first shown.
if (delegate_)
......
......@@ -152,36 +152,37 @@ class ASH_EXPORT TrayBubbleView : public views::BubbleDialogDelegateView,
void set_gesture_dragging(bool dragging) { is_gesture_dragging_ = dragging; }
bool is_gesture_dragging() const { return is_gesture_dragging_; }
// Overridden from views::WidgetDelegate.
// views::WidgetDelegate:
std::unique_ptr<views::NonClientFrameView> CreateNonClientFrameView(
views::Widget* widget) override;
bool WidgetHasHitTestMask() const override;
void GetWidgetHitTestMask(SkPath* mask) const override;
base::string16 GetAccessibleWindowTitle() const override;
// Overridden from views::BubbleDialogDelegateView.
// views::BubbleDialogDelegateView:
void OnBeforeBubbleWidgetInit(views::Widget::InitParams* params,
views::Widget* bubble_widget) const override;
void OnWidgetClosing(views::Widget* widget) override;
void OnWidgetActivationChanged(views::Widget* widget, bool active) override;
ui::LayerType GetLayerType() const override;
// Overridden from views::View.
// views::View:
gfx::Size CalculatePreferredSize() const override;
int GetHeightForWidth(int width) const override;
void OnMouseEntered(const ui::MouseEvent& event) override;
void OnMouseExited(const ui::MouseEvent& event) override;
void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
const char* GetClassName() const override;
void OnThemeChanged() override;
// Overridden from MouseWatcherListener
// views::MouseWatcherListener:
void MouseMovedOutOfHost() override;
protected:
// Overridden from views::BubbleDialogDelegateView.
// views::BubbleDialogDelegateView:
ax::mojom::Role GetAccessibleWindowRole() override;
// Overridden from views::View.
// views::View:
void ChildPreferredSizeChanged(View* child) override;
// Changes the insets from the bubble border. These were initially set using
......
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