| Index: ash/common/system/chromeos/palette/palette_tray.cc
|
| diff --git a/ash/common/system/chromeos/palette/palette_tray.cc b/ash/common/system/chromeos/palette/palette_tray.cc
|
| index d2bccbee2c9bd066672aa7f912a7fde89a7a3740..5779021107f2c09bfa9567f5f1a0bc0dccda573d 100644
|
| --- a/ash/common/system/chromeos/palette/palette_tray.cc
|
| +++ b/ash/common/system/chromeos/palette/palette_tray.cc
|
| @@ -29,6 +29,7 @@
|
| #include "grit/ash_strings.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/events/devices/input_device_manager.h"
|
| #include "ui/events/devices/stylus_state.h"
|
| #include "ui/gfx/color_palette.h"
|
| #include "ui/gfx/paint_vector_icon.h"
|
| @@ -156,9 +157,6 @@ PaletteTray::PaletteTray(WmShelf* wm_shelf)
|
| : TrayBackgroundView(wm_shelf),
|
| palette_tool_manager_(new PaletteToolManager(this)),
|
| weak_factory_(this) {
|
| - // PaletteTray should only be instantiated if the palette feature is enabled.
|
| - DCHECK(IsPaletteFeatureEnabled());
|
| -
|
| PaletteTool::RegisterToolInstances(palette_tool_manager_.get());
|
|
|
| if (MaterialDesignController::IsShelfMaterial()) {
|
| @@ -177,17 +175,14 @@ PaletteTray::PaletteTray(WmShelf* wm_shelf)
|
|
|
| WmShell::Get()->AddShellObserver(this);
|
| WmShell::Get()->GetSessionStateDelegate()->AddSessionStateObserver(this);
|
| - if (WmShell::Get()->palette_delegate()) {
|
| - WmShell::Get()->palette_delegate()->SetStylusStateChangedCallback(
|
| - base::Bind(&PaletteTray::OnStylusStateChanged,
|
| - weak_factory_.GetWeakPtr()));
|
| - }
|
| + ui::InputDeviceManager::GetInstance()->AddObserver(this);
|
| }
|
|
|
| PaletteTray::~PaletteTray() {
|
| if (bubble_)
|
| bubble_->bubble_view()->reset_delegate();
|
|
|
| + ui::InputDeviceManager::GetInstance()->RemoveObserver(this);
|
| WmShell::Get()->RemoveShellObserver(this);
|
| WmShell::Get()->GetSessionStateDelegate()->RemoveSessionStateObserver(this);
|
| }
|
| @@ -293,6 +288,33 @@ void PaletteTray::HideBubbleWithView(const views::TrayBubbleView* bubble_view) {
|
| HidePalette();
|
| }
|
|
|
| +void PaletteTray::OnTouchscreenDeviceConfigurationChanged() {
|
| + UpdateIconVisibility();
|
| +}
|
| +
|
| +void PaletteTray::OnStylusStateChanged(ui::StylusState stylus_state) {
|
| + PaletteDelegate* palette_delegate = WmShell::Get()->palette_delegate();
|
| +
|
| + // Don't do anything if the palette should not be shown or if the user has
|
| + // disabled it all-together.
|
| + if (!IsInUserSession() || !palette_delegate->ShouldShowPalette())
|
| + return;
|
| +
|
| + // Auto show/hide the palette if allowed by the user.
|
| + if (palette_delegate->ShouldAutoOpenPalette()) {
|
| + if (stylus_state == ui::StylusState::REMOVED && !bubble_) {
|
| + is_bubble_auto_opened_ = true;
|
| + ShowPalette();
|
| + } else if (stylus_state == ui::StylusState::INSERTED && bubble_) {
|
| + HidePalette();
|
| + }
|
| + }
|
| +
|
| + // Disable any active modes if the stylus has been inserted.
|
| + if (stylus_state == ui::StylusState::INSERTED)
|
| + palette_tool_manager_->DisableActiveTool(PaletteGroup::MODE);
|
| +}
|
| +
|
| void PaletteTray::BubbleViewDestroyed() {
|
| palette_tool_manager_->NotifyViewsDestroyed();
|
| SetIsActive(false);
|
| @@ -385,12 +407,15 @@ void PaletteTray::AnchorUpdated() {
|
| }
|
|
|
| void PaletteTray::Initialize() {
|
| + PaletteDelegate* delegate = WmShell::Get()->palette_delegate();
|
| + // |delegate| can be null in tests.
|
| + if (!delegate)
|
| + return;
|
| +
|
| // OnPaletteEnabledPrefChanged will get called with the initial pref value,
|
| // which will take care of showing the palette.
|
| - palette_enabled_subscription_ =
|
| - WmShell::Get()->palette_delegate()->AddPaletteEnableListener(
|
| - base::Bind(&PaletteTray::OnPaletteEnabledPrefChanged,
|
| - weak_factory_.GetWeakPtr()));
|
| + palette_enabled_subscription_ = delegate->AddPaletteEnableListener(base::Bind(
|
| + &PaletteTray::OnPaletteEnabledPrefChanged, weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void PaletteTray::SetIconBorderForShelfAlignment() {
|
| @@ -412,29 +437,6 @@ void PaletteTray::UpdateTrayIcon() {
|
| kTrayIconSize, kShelfIconColor));
|
| }
|
|
|
| -void PaletteTray::OnStylusStateChanged(ui::StylusState stylus_state) {
|
| - PaletteDelegate* palette_delegate = WmShell::Get()->palette_delegate();
|
| -
|
| - // Don't do anything if the palette should not be shown or if the user has
|
| - // disabled it all-together.
|
| - if (!IsInUserSession() || !palette_delegate->ShouldShowPalette())
|
| - return;
|
| -
|
| - // Auto show/hide the palette if allowed by the user.
|
| - if (palette_delegate->ShouldAutoOpenPalette()) {
|
| - if (stylus_state == ui::StylusState::REMOVED && !bubble_) {
|
| - is_bubble_auto_opened_ = true;
|
| - ShowPalette();
|
| - } else if (stylus_state == ui::StylusState::INSERTED && bubble_) {
|
| - HidePalette();
|
| - }
|
| - }
|
| -
|
| - // Disable any active modes if the stylus has been inserted.
|
| - if (stylus_state == ui::StylusState::INSERTED)
|
| - palette_tool_manager_->DisableActiveTool(PaletteGroup::MODE);
|
| -}
|
| -
|
| void PaletteTray::OnPaletteEnabledPrefChanged(bool enabled) {
|
| is_palette_enabled_ = enabled;
|
|
|
| @@ -447,7 +449,8 @@ void PaletteTray::OnPaletteEnabledPrefChanged(bool enabled) {
|
| }
|
|
|
| void PaletteTray::UpdateIconVisibility() {
|
| - SetVisible(is_palette_enabled_ && IsInUserSession());
|
| + SetVisible(is_palette_enabled_ && palette_utils::HasStylusInput() &&
|
| + IsInUserSession());
|
| }
|
|
|
| } // namespace ash
|
|
|