Index: ash/common/system/status_area_widget_delegate.cc |
diff --git a/ash/common/system/status_area_widget_delegate.cc b/ash/common/system/status_area_widget_delegate.cc |
deleted file mode 100644 |
index 57354918d3b3b6382d77b177a280ca5125f1450d..0000000000000000000000000000000000000000 |
--- a/ash/common/system/status_area_widget_delegate.cc |
+++ /dev/null |
@@ -1,199 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ash/common/system/status_area_widget_delegate.h" |
- |
-#include "ash/common/focus_cycler.h" |
-#include "ash/common/shelf/shelf_constants.h" |
-#include "ash/common/shelf/wm_shelf.h" |
-#include "ash/common/shelf/wm_shelf_util.h" |
-#include "ash/common/system/tray/tray_constants.h" |
-#include "ash/common/wm_shell.h" |
-#include "ash/common/wm_window.h" |
-#include "ash/root_window_controller.h" |
-#include "ui/compositor/layer.h" |
-#include "ui/compositor/scoped_layer_animation_settings.h" |
-#include "ui/gfx/animation/tween.h" |
-#include "ui/views/accessible_pane_view.h" |
-#include "ui/views/border.h" |
-#include "ui/views/layout/grid_layout.h" |
- |
-namespace { |
- |
-constexpr int kAnimationDurationMs = 250; |
- |
-constexpr int kPaddingFromEdgeOfShelf = 3; |
- |
-class StatusAreaWidgetDelegateAnimationSettings |
- : public ui::ScopedLayerAnimationSettings { |
- public: |
- explicit StatusAreaWidgetDelegateAnimationSettings(ui::Layer* layer) |
- : ui::ScopedLayerAnimationSettings(layer->GetAnimator()) { |
- SetTransitionDuration( |
- base::TimeDelta::FromMilliseconds(kAnimationDurationMs)); |
- SetPreemptionStrategy(ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
- SetTweenType(gfx::Tween::EASE_IN_OUT); |
- } |
- |
- ~StatusAreaWidgetDelegateAnimationSettings() override {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(StatusAreaWidgetDelegateAnimationSettings); |
-}; |
- |
-} // namespace |
- |
-namespace ash { |
- |
-StatusAreaWidgetDelegate::StatusAreaWidgetDelegate() |
- : focus_cycler_for_testing_(nullptr), alignment_(SHELF_ALIGNMENT_BOTTOM) { |
- // Allow the launcher to surrender the focus to another window upon |
- // navigation completion by the user. |
- set_allow_deactivate_on_esc(true); |
- SetPaintToLayer(); |
- layer()->SetFillsBoundsOpaquely(false); |
-} |
- |
-StatusAreaWidgetDelegate::~StatusAreaWidgetDelegate() {} |
- |
-void StatusAreaWidgetDelegate::SetFocusCyclerForTesting( |
- const FocusCycler* focus_cycler) { |
- focus_cycler_for_testing_ = focus_cycler; |
-} |
- |
-views::View* StatusAreaWidgetDelegate::GetDefaultFocusableChild() { |
- return child_at(0); |
-} |
- |
-views::Widget* StatusAreaWidgetDelegate::GetWidget() { |
- return View::GetWidget(); |
-} |
- |
-const views::Widget* StatusAreaWidgetDelegate::GetWidget() const { |
- return View::GetWidget(); |
-} |
- |
-void StatusAreaWidgetDelegate::OnGestureEvent(ui::GestureEvent* event) { |
- views::Widget* target_widget = |
- static_cast<views::View*>(event->target())->GetWidget(); |
- WmWindow* target_window = WmWindow::Get(target_widget->GetNativeWindow()); |
- WmShelf* shelf = target_window->GetRootWindowController()->GetShelf(); |
- if (shelf->ProcessGestureEvent(*event)) |
- event->StopPropagation(); |
- else |
- views::AccessiblePaneView::OnGestureEvent(event); |
-} |
- |
-bool StatusAreaWidgetDelegate::CanActivate() const { |
- // We don't want mouse clicks to activate us, but we need to allow |
- // activation when the user is using the keyboard (FocusCycler). |
- const FocusCycler* focus_cycler = focus_cycler_for_testing_ |
- ? focus_cycler_for_testing_ |
- : WmShell::Get()->focus_cycler(); |
- return focus_cycler->widget_activating() == GetWidget(); |
-} |
- |
-void StatusAreaWidgetDelegate::DeleteDelegate() {} |
- |
-void StatusAreaWidgetDelegate::AddTray(views::View* tray) { |
- SetLayoutManager(NULL); // Reset layout manager before adding a child. |
- AddChildView(tray); |
- // Set the layout manager with the new list of children. |
- UpdateLayout(); |
-} |
- |
-void StatusAreaWidgetDelegate::UpdateLayout() { |
- // Use a grid layout so that the trays can be centered in each cell, and |
- // so that the widget gets laid out correctly when tray sizes change. |
- views::GridLayout* layout = new views::GridLayout(this); |
- SetLayoutManager(layout); |
- |
- // Update tray border based on layout. |
- bool is_child_on_edge = true; |
- for (int c = 0; c < child_count(); ++c) { |
- views::View* child = child_at(c); |
- if (!child->visible()) |
- continue; |
- SetBorderOnChild(child, is_child_on_edge); |
- is_child_on_edge = false; |
- } |
- |
- views::ColumnSet* columns = layout->AddColumnSet(0); |
- |
- if (IsHorizontalAlignment(alignment_)) { |
- for (int c = child_count() - 1; c >= 0; --c) { |
- views::View* child = child_at(c); |
- if (!child->visible()) |
- continue; |
- columns->AddColumn(views::GridLayout::CENTER, views::GridLayout::FILL, |
- 0, /* resize percent */ |
- views::GridLayout::USE_PREF, 0, 0); |
- } |
- layout->StartRow(0, 0); |
- for (int c = child_count() - 1; c >= 0; --c) { |
- views::View* child = child_at(c); |
- if (child->visible()) |
- layout->AddView(child); |
- } |
- } else { |
- columns->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, |
- 0, /* resize percent */ |
- views::GridLayout::USE_PREF, 0, 0); |
- for (int c = child_count() - 1; c >= 0; --c) { |
- views::View* child = child_at(c); |
- if (!child->visible()) |
- continue; |
- layout->StartRow(0, 0); |
- layout->AddView(child); |
- } |
- } |
- |
- layer()->GetAnimator()->StopAnimating(); |
- StatusAreaWidgetDelegateAnimationSettings settings(layer()); |
- |
- Layout(); |
- UpdateWidgetSize(); |
-} |
- |
-void StatusAreaWidgetDelegate::ChildPreferredSizeChanged(View* child) { |
- // Need to resize the window when trays or items are added/removed. |
- StatusAreaWidgetDelegateAnimationSettings settings(layer()); |
- UpdateWidgetSize(); |
-} |
- |
-void StatusAreaWidgetDelegate::ChildVisibilityChanged(View* child) { |
- UpdateLayout(); |
-} |
- |
-void StatusAreaWidgetDelegate::UpdateWidgetSize() { |
- if (GetWidget()) |
- GetWidget()->SetSize(GetPreferredSize()); |
-} |
- |
-void StatusAreaWidgetDelegate::SetBorderOnChild(views::View* child, |
- bool extend_border_to_edge) { |
- // Tray views are laid out right-to-left or bottom-to-top. |
- const bool horizontal_alignment = IsHorizontalAlignment(alignment_); |
- const int padding = (GetShelfConstant(SHELF_SIZE) - kTrayItemSize) / 2; |
- |
- const int top_edge = horizontal_alignment ? padding : 0; |
- const int left_edge = horizontal_alignment ? 0 : padding; |
- const int bottom_edge = |
- horizontal_alignment |
- ? padding |
- : (extend_border_to_edge ? kPaddingFromEdgeOfShelf : 0); |
- const int right_edge = |
- horizontal_alignment |
- ? (extend_border_to_edge ? kPaddingFromEdgeOfShelf : 0) |
- : padding; |
- child->SetBorder( |
- views::CreateEmptyBorder(top_edge, left_edge, bottom_edge, right_edge)); |
- |
- // Layout on |child| needs to be updated based on new border value before |
- // displaying; otherwise |child| will be showing with old border size. |
- // Fix for crbug.com/623438. |
- child->Layout(); |
-} |
- |
-} // namespace ash |