| Index: ash/wm/overview/window_selector_item.cc
|
| diff --git a/ash/wm/overview/window_selector_item.cc b/ash/wm/overview/window_selector_item.cc
|
| index 4ab47e98f886f30233175bac716550e33e2c5b95..d57f0adbafafbfc810ff8cbfd0209f35a8b0df4e 100644
|
| --- a/ash/wm/overview/window_selector_item.cc
|
| +++ b/ash/wm/overview/window_selector_item.cc
|
| @@ -11,10 +11,10 @@
|
| #include "ash/shell.h"
|
| #include "ash/shell_window_ids.h"
|
| #include "ash/wm/overview/overview_animation_type.h"
|
| +#include "ash/wm/overview/overview_window_button.h"
|
| #include "ash/wm/overview/scoped_overview_animation_settings.h"
|
| #include "ash/wm/overview/scoped_transform_overview_window.h"
|
| #include "ash/wm/overview/window_selector_controller.h"
|
| -#include "ash/wm/window_state.h"
|
| #include "base/auto_reset.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| @@ -28,7 +28,6 @@
|
| #include "ui/gfx/transform_util.h"
|
| #include "ui/strings/grit/ui_strings.h"
|
| #include "ui/views/controls/button/image_button.h"
|
| -#include "ui/views/controls/label.h"
|
| #include "ui/views/layout/box_layout.h"
|
| #include "ui/views/widget/widget.h"
|
| #include "ui/wm/core/window_util.h"
|
| @@ -42,24 +41,6 @@ namespace {
|
| // closest distance between adjacent windows will be twice this amount.
|
| static const int kWindowMargin = 30;
|
|
|
| -// Foreground label color.
|
| -static const SkColor kLabelColor = SK_ColorWHITE;
|
| -
|
| -// Background label color.
|
| -static const SkColor kLabelBackground = SK_ColorTRANSPARENT;
|
| -
|
| -// Label shadow color.
|
| -static const SkColor kLabelShadow = 0xB0000000;
|
| -
|
| -// Vertical padding for the label, both over and beneath it.
|
| -static const int kVerticalLabelPadding = 20;
|
| -
|
| -// Solid shadow length from the label
|
| -static const int kVerticalShadowOffset = 1;
|
| -
|
| -// Amount of blur applied to the label shadow
|
| -static const int kShadowBlur = 10;
|
| -
|
| // Opacity for dimmed items.
|
| static const float kDimmedItemOpacity = 0.5f;
|
|
|
| @@ -75,18 +56,6 @@ gfx::Rect GetTransformedBounds(aura::Window* window) {
|
| return ToEnclosingRect(bounds);
|
| }
|
|
|
| -// Convenvience method to fade in a Window with predefined animation settings.
|
| -// Note: The fade in animation will occur after a delay where the delay is how
|
| -// long the lay out animations take.
|
| -void SetupFadeInAfterLayout(aura::Window* window) {
|
| - ui::Layer* layer = window->layer();
|
| - layer->SetOpacity(0.0f);
|
| - ScopedOverviewAnimationSettings animation_settings(
|
| - OverviewAnimationType::OVERVIEW_ANIMATION_ENTER_OVERVIEW_MODE_FADE_IN,
|
| - window);
|
| - layer->SetOpacity(1.0f);
|
| -}
|
| -
|
| // An image button with a close window icon.
|
| class OverviewCloseButton : public views::ImageButton {
|
| public:
|
| @@ -118,10 +87,8 @@ WindowSelectorItem::WindowSelectorItem(aura::Window* window)
|
| root_window_(window->GetRootWindow()),
|
| transform_window_(window),
|
| in_bounds_update_(false),
|
| - window_label_view_(nullptr),
|
| close_button_(new OverviewCloseButton(this)),
|
| - selector_item_activate_window_button_(
|
| - new TransparentActivateWindowButton(root_window_, this)) {
|
| + overview_window_button_(new OverviewWindowButton(window)) {
|
| views::Widget::InitParams params;
|
| params.type = views::Widget::InitParams::TYPE_POPUP;
|
| params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| @@ -179,7 +146,7 @@ void WindowSelectorItem::SetBounds(const gfx::Rect& target_bounds,
|
| base::AutoReset<bool> auto_reset_in_bounds_update(&in_bounds_update_, true);
|
| target_bounds_ = target_bounds;
|
|
|
| - UpdateWindowLabels(target_bounds, animation_type);
|
| + overview_window_button_->SetBounds(target_bounds, animation_type);
|
|
|
| gfx::Rect inset_bounds(target_bounds);
|
| inset_bounds.Inset(kWindowMargin, kWindowMargin);
|
| @@ -188,7 +155,6 @@ void WindowSelectorItem::SetBounds(const gfx::Rect& target_bounds,
|
| // SetItemBounds is called before UpdateCloseButtonLayout so the close button
|
| // can properly use the updated windows bounds.
|
| UpdateCloseButtonLayout(animation_type);
|
| - UpdateSelectorButtons();
|
| }
|
|
|
| void WindowSelectorItem::RecomputeWindowTransforms() {
|
| @@ -198,13 +164,11 @@ void WindowSelectorItem::RecomputeWindowTransforms() {
|
| gfx::Rect inset_bounds(target_bounds_);
|
| inset_bounds.Inset(kWindowMargin, kWindowMargin);
|
| SetItemBounds(inset_bounds, OverviewAnimationType::OVERVIEW_ANIMATION_NONE);
|
| -
|
| UpdateCloseButtonLayout(OverviewAnimationType::OVERVIEW_ANIMATION_NONE);
|
| - UpdateSelectorButtons();
|
| }
|
|
|
| void WindowSelectorItem::SendFocusAlert() const {
|
| - selector_item_activate_window_button_->SendFocusAlert();
|
| + overview_window_button_->SendFocusAlert();
|
| }
|
|
|
| void WindowSelectorItem::SetDimmed(bool dimmed) {
|
| @@ -225,18 +189,8 @@ void WindowSelectorItem::OnWindowDestroying(aura::Window* window) {
|
| void WindowSelectorItem::OnWindowTitleChanged(aura::Window* window) {
|
| // TODO(flackr): Maybe add the new title to a vector of titles so that we can
|
| // filter any of the titles the window had while in the overview session.
|
| - if (window == GetWindow()) {
|
| - window_label_view_->SetText(window->title());
|
| - UpdateCloseButtonAccessibilityName();
|
| - }
|
| - UpdateCloseButtonLayout(OverviewAnimationType::OVERVIEW_ANIMATION_NONE);
|
| - UpdateSelectorButtons();
|
| -}
|
| -
|
| -void WindowSelectorItem::Select() {
|
| - aura::Window* selection_window = GetWindow();
|
| - if (selection_window)
|
| - wm::GetWindowState(selection_window)->Activate();
|
| + overview_window_button_->SetLabelText(window->title());
|
| + UpdateCloseButtonAccessibilityName();
|
| }
|
|
|
| void WindowSelectorItem::SetItemBounds(const gfx::Rect& target_bounds,
|
| @@ -256,87 +210,18 @@ void WindowSelectorItem::SetItemBounds(const gfx::Rect& target_bounds,
|
| }
|
|
|
| void WindowSelectorItem::SetOpacity(float opacity) {
|
| - window_label_->GetNativeWindow()->layer()->SetOpacity(opacity);
|
| + overview_window_button_->SetOpacity(opacity);
|
| close_button_widget_.GetNativeWindow()->layer()->SetOpacity(opacity);
|
|
|
| transform_window_.SetOpacity(opacity);
|
| }
|
|
|
| -void WindowSelectorItem::UpdateWindowLabels(
|
| - const gfx::Rect& window_bounds,
|
| - OverviewAnimationType animation_type) {
|
| -
|
| - if (!window_label_) {
|
| - CreateWindowLabel(GetWindow()->title());
|
| - SetupFadeInAfterLayout(window_label_->GetNativeWindow());
|
| - }
|
| -
|
| - gfx::Rect converted_bounds = ScreenUtil::ConvertRectFromScreen(root_window_,
|
| - window_bounds);
|
| - gfx::Rect label_bounds(converted_bounds.x(),
|
| - converted_bounds.bottom(),
|
| - converted_bounds.width(),
|
| - 0);
|
| - label_bounds.set_height(window_label_->GetContentsView()->
|
| - GetPreferredSize().height());
|
| - label_bounds.set_y(label_bounds.y() - window_label_->
|
| - GetContentsView()->GetPreferredSize().height());
|
| -
|
| - ScopedOverviewAnimationSettings animation_settings(animation_type,
|
| - window_label_->GetNativeWindow());
|
| -
|
| - window_label_->GetNativeWindow()->SetBounds(label_bounds);
|
| -}
|
| -
|
| -void WindowSelectorItem::CreateWindowLabel(const base::string16& title) {
|
| - window_label_.reset(new views::Widget);
|
| - views::Widget::InitParams params;
|
| - params.type = views::Widget::InitParams::TYPE_POPUP;
|
| - params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| - params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
|
| - params.parent = Shell::GetContainer(root_window_,
|
| - kShellWindowId_OverlayContainer);
|
| - params.accept_events = false;
|
| - params.visible_on_all_workspaces = true;
|
| - window_label_->set_focus_on_creation(false);
|
| - window_label_->Init(params);
|
| - window_label_view_ = new views::Label;
|
| - window_label_view_->SetEnabledColor(kLabelColor);
|
| - window_label_view_->SetBackgroundColor(kLabelBackground);
|
| - window_label_view_->SetShadows(gfx::ShadowValues(
|
| - 1,
|
| - gfx::ShadowValue(
|
| - gfx::Point(0, kVerticalShadowOffset), kShadowBlur, kLabelShadow)));
|
| - ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| - window_label_view_->SetFontList(
|
| - bundle.GetFontList(ui::ResourceBundle::BoldFont));
|
| - window_label_view_->SetText(title);
|
| - views::BoxLayout* layout = new views::BoxLayout(views::BoxLayout::kVertical,
|
| - 0,
|
| - kVerticalLabelPadding,
|
| - 0);
|
| - window_label_view_->SetLayoutManager(layout);
|
| - window_label_->SetContentsView(window_label_view_);
|
| - window_label_->Show();
|
| -}
|
| -
|
| -void WindowSelectorItem::UpdateSelectorButtons() {
|
| - aura::Window* window = GetWindow();
|
| -
|
| - selector_item_activate_window_button_->SetBounds(target_bounds());
|
| - selector_item_activate_window_button_->SetAccessibleName(window->title());
|
| -
|
| - TransparentActivateWindowButton* activate_button =
|
| - transform_window_.activate_button();
|
| - activate_button->SetBounds(target_bounds());
|
| - activate_button->SetAccessibleName(window->title());
|
| -}
|
| -
|
| void WindowSelectorItem::UpdateCloseButtonLayout(
|
| OverviewAnimationType animation_type) {
|
| if (!close_button_->visible()) {
|
| close_button_->SetVisible(true);
|
| - SetupFadeInAfterLayout(close_button_widget_.GetNativeWindow());
|
| + ScopedOverviewAnimationSettings::SetupFadeInAfterLayout(
|
| + close_button_widget_.GetNativeWindow());
|
| }
|
| ScopedOverviewAnimationSettings animation_settings(animation_type,
|
| close_button_widget_.GetNativeWindow());
|
|
|