Index: ash/wm/overview/window_selector.cc |
diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc |
index 50b9d60ff26b3a2c4e63e764e943b3ac3e950f80..71c1ef9d979cf500c094aec0710967d718cd85c2 100644 |
--- a/ash/wm/overview/window_selector.cc |
+++ b/ash/wm/overview/window_selector.cc |
@@ -33,6 +33,7 @@ |
#include "base/metrics/histogram_macros.h" |
#include "third_party/skia/include/core/SkPath.h" |
#include "ui/base/resource/resource_bundle.h" |
+#include "ui/compositor/layer.h" |
#include "ui/compositor/scoped_layer_animation_settings.h" |
#include "ui/display/screen.h" |
#include "ui/events/event.h" |
@@ -44,6 +45,8 @@ |
#include "ui/views/controls/image_view.h" |
#include "ui/views/controls/textfield/textfield.h" |
#include "ui/views/layout/box_layout.h" |
+#include "ui/wm/core/coordinate_conversion.h" |
+#include "ui/wm/core/window_util.h" |
#include "ui/wm/public/activation_client.h" |
namespace ash { |
@@ -87,14 +90,14 @@ const int kTextFilterCornerRadius = 2; |
// A comparator for locating a selector item for a given root. |
struct WindowSelectorItemForRoot { |
- explicit WindowSelectorItemForRoot(const WmWindow* root) |
+ explicit WindowSelectorItemForRoot(const aura::Window* root) |
: root_window(root) {} |
bool operator()(WindowSelectorItem* item) const { |
return item->root_window() == root_window; |
} |
- const WmWindow* root_window; |
+ const aura::Window* root_window; |
}; |
// A View having rounded corners and a specified background color which is |
@@ -135,11 +138,10 @@ void UpdateShelfVisibility() { |
WmShelf::ForWindow(root)->UpdateVisibilityState(); |
} |
-gfx::Rect GetTextFilterPosition(WmWindow* root_window) { |
- gfx::Rect total_bounds = root_window->ConvertRectToScreen( |
- ScreenUtil::GetDisplayWorkAreaBoundsInParent( |
- root_window->GetChildByShellWindowId(kShellWindowId_DefaultContainer) |
- ->aura_window())); |
+gfx::Rect GetTextFilterPosition(aura::Window* root_window) { |
+ gfx::Rect total_bounds = ScreenUtil::GetDisplayWorkAreaBoundsInParent( |
+ root_window->GetChildById(kShellWindowId_DefaultContainer)); |
+ ::wm::ConvertRectToScreen(root_window, &total_bounds); |
return gfx::Rect( |
0.5 * (total_bounds.width() - |
std::min(kTextFilterWidth, total_bounds.width())), |
@@ -151,7 +153,7 @@ gfx::Rect GetTextFilterPosition(WmWindow* root_window) { |
// focus on its textfield. Uses |image| to place an icon to the left of the text |
// field. |
views::Widget* CreateTextFilter(views::TextfieldController* controller, |
- WmWindow* root_window, |
+ aura::Window* root_window, |
const gfx::ImageSkia& image, |
int* text_filter_bottom) { |
views::Widget* widget = new views::Widget; |
@@ -163,8 +165,9 @@ views::Widget* CreateTextFilter(views::TextfieldController* controller, |
params.bounds = GetTextFilterPosition(root_window); |
params.name = "OverviewModeTextFilter"; |
*text_filter_bottom = params.bounds.bottom() + kTextFieldBottomMargin; |
- root_window->GetRootWindowController()->ConfigureWidgetInitParamsForContainer( |
- widget, kShellWindowId_StatusContainer, ¶ms); |
+ RootWindowController::ForWindow(root_window) |
+ ->ConfigureWidgetInitParamsForContainer( |
+ widget, kShellWindowId_StatusContainer, ¶ms); |
widget->Init(params); |
// Use |container| to specify the padding surrounding the text and to give |
@@ -199,9 +202,8 @@ views::Widget* CreateTextFilter(views::TextfieldController* controller, |
// outside the visible bounds of the screen. |
gfx::Transform transform; |
transform.Translate(0, -(*text_filter_bottom)); |
- WmWindow* text_filter_widget_window = |
- WmWindow::Get(widget->GetNativeWindow()); |
- text_filter_widget_window->SetOpacity(0); |
+ aura::Window* text_filter_widget_window = widget->GetNativeWindow(); |
+ text_filter_widget_window->layer()->SetOpacity(0); |
text_filter_widget_window->SetTransform(transform); |
widget->Show(); |
textfield->RequestFocus(); |
@@ -212,14 +214,13 @@ views::Widget* CreateTextFilter(views::TextfieldController* controller, |
} // namespace |
// static |
-bool WindowSelector::IsSelectable(WmWindow* window) { |
- wm::WindowState* state = window->GetWindowState(); |
- return state->IsUserPositionable(); |
+bool WindowSelector::IsSelectable(aura::Window* window) { |
+ return wm::GetWindowState(window)->IsUserPositionable(); |
} |
WindowSelector::WindowSelector(WindowSelectorDelegate* delegate) |
: delegate_(delegate), |
- restore_focus_window_(WmWindow::Get(wm::GetFocusedWindow())), |
+ restore_focus_window_(wm::GetFocusedWindow()), |
ignore_activations_(false), |
selected_grid_index_(0), |
overview_start_time_(base::Time::Now()), |
@@ -242,13 +243,11 @@ WindowSelector::~WindowSelector() { |
// calls to restoring_minimized_windows() on a partially constructed object. |
void WindowSelector::Init(const WindowList& windows) { |
if (restore_focus_window_) |
- restore_focus_window_->aura_window()->AddObserver(this); |
+ restore_focus_window_->AddObserver(this); |
- ShellPort* shell_port = ShellPort::Get(); |
- |
- std::vector<WmWindow*> root_windows = shell_port->GetAllRootWindows(); |
+ aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
std::sort(root_windows.begin(), root_windows.end(), |
- [](const WmWindow* a, const WmWindow* b) { |
+ [](const aura::Window* a, const aura::Window* b) { |
// Since we don't know if windows are vertically or horizontally |
// oriented we use both x and y position. This may be confusing |
// if you have 3 or more monitors which are not strictly |
@@ -257,19 +256,19 @@ void WindowSelector::Init(const WindowList& windows) { |
(b->GetBoundsInScreen().x() + b->GetBoundsInScreen().y()); |
}); |
- for (WmWindow* root : root_windows) { |
+ for (auto* root : root_windows) { |
// Observed switchable containers for newly created windows on all root |
// windows. |
for (size_t i = 0; i < wm::kSwitchableWindowContainerIdsLength; ++i) { |
- WmWindow* container = |
- root->GetChildByShellWindowId(wm::kSwitchableWindowContainerIds[i]); |
- container->aura_window()->AddObserver(this); |
+ aura::Window* container = |
+ root->GetChildById(wm::kSwitchableWindowContainerIds[i]); |
+ container->AddObserver(this); |
observed_windows_.insert(container); |
} |
// Hide the callout widgets for panels. It is safe to call this for |
// root windows that don't contain any panel windows. |
- PanelLayoutManager::Get(root)->SetShowCalloutWidgets(false); |
+ PanelLayoutManager::Get(WmWindow::Get(root))->SetShowCalloutWidgets(false); |
std::unique_ptr<WindowGrid> grid(new WindowGrid(root, windows, this)); |
if (grid->empty()) |
@@ -299,7 +298,7 @@ void WindowSelector::Init(const WindowList& windows) { |
search_image_ = gfx::CreateVectorIcon(ui::kSearchIcon, kTextFilterIconSize, |
kTextFilterIconColor); |
- WmWindow* root_window = WmWindow::Get(Shell::GetPrimaryRootWindow()); |
+ aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
text_filter_widget_.reset(CreateTextFilter(this, root_window, search_image_, |
&text_filter_bottom_)); |
} |
@@ -310,7 +309,7 @@ void WindowSelector::Init(const WindowList& windows) { |
Shell::Get()->activation_client()->AddObserver(this); |
display::Screen::GetScreen()->AddObserver(this); |
- shell_port->RecordUserMetricsAction(UMA_WINDOW_OVERVIEW); |
+ ShellPort::Get()->RecordUserMetricsAction(UMA_WINDOW_OVERVIEW); |
// Send an a11y alert. |
Shell::Get()->accessibility_delegate()->TriggerAccessibilityAlert( |
A11Y_ALERT_WINDOW_OVERVIEW_MODE_ENTERED); |
@@ -373,13 +372,13 @@ void WindowSelector::Shutdown() { |
} |
void WindowSelector::RemoveAllObservers() { |
- for (WmWindow* window : observed_windows_) |
- window->aura_window()->RemoveObserver(this); |
+ for (auto* window : observed_windows_) |
+ window->RemoveObserver(this); |
Shell::Get()->activation_client()->RemoveObserver(this); |
display::Screen::GetScreen()->RemoveObserver(this); |
if (restore_focus_window_) |
- restore_focus_window_->aura_window()->RemoveObserver(this); |
+ restore_focus_window_->RemoveObserver(this); |
} |
void WindowSelector::CancelSelection() { |
@@ -421,8 +420,8 @@ bool WindowSelector::AcceptSelection() { |
} |
void WindowSelector::SelectWindow(WindowSelectorItem* item) { |
- WmWindow* window = item->GetWindow(); |
- std::vector<WmWindow*> window_list = |
+ aura::Window* window = item->GetWindow(); |
+ aura::Window::Windows window_list = |
Shell::Get()->mru_window_tracker()->BuildMruWindowList(); |
if (!window_list.empty()) { |
// Record UMA_WINDOW_OVERVIEW_ACTIVE_WINDOW_CHANGED if the user is selecting |
@@ -440,7 +439,7 @@ void WindowSelector::SelectWindow(WindowSelectorItem* item) { |
} |
} |
item->EnsureVisible(); |
- window->GetWindowState()->Activate(); |
+ wm::GetWindowState(window)->Activate(); |
} |
void WindowSelector::WindowClosing(WindowSelectorItem* window) { |
@@ -520,19 +519,18 @@ void WindowSelector::OnDisplayMetricsChanged(const display::Display& display, |
void WindowSelector::OnWindowHierarchyChanged( |
const HierarchyChangeParams& params) { |
// Only care about newly added children of |observed_windows_|. |
- if (!observed_windows_.count(WmWindow::Get(params.receiver)) || |
- !observed_windows_.count(WmWindow::Get(params.new_parent))) { |
+ if (!observed_windows_.count(params.receiver) || |
+ !observed_windows_.count(params.new_parent)) { |
return; |
} |
- WmWindow* new_window = WmWindow::Get(params.target); |
+ aura::Window* new_window = params.target; |
if (!IsSelectable(new_window)) |
return; |
for (size_t i = 0; i < wm::kSwitchableWindowContainerIdsLength; ++i) { |
- if (new_window->GetParent()->aura_window()->id() == |
- wm::kSwitchableWindowContainerIds[i] && |
- !new_window->GetTransientParent()) { |
+ if (new_window->parent()->id() == wm::kSwitchableWindowContainerIds[i] && |
+ !::wm::GetTransientParent(new_window)) { |
// The new window is in one of the switchable containers, abort overview. |
CancelSelection(); |
return; |
@@ -542,21 +540,20 @@ void WindowSelector::OnWindowHierarchyChanged( |
void WindowSelector::OnWindowDestroying(aura::Window* window) { |
window->RemoveObserver(this); |
- observed_windows_.erase(WmWindow::Get(window)); |
- if (WmWindow::Get(window) == restore_focus_window_) |
+ observed_windows_.erase(window); |
+ if (window == restore_focus_window_) |
restore_focus_window_ = nullptr; |
} |
void WindowSelector::OnWindowActivated(ActivationReason reason, |
aura::Window* gained_active, |
aura::Window* lost_active) { |
- WmWindow* wm_gained_active = WmWindow::Get(gained_active); |
- if (ignore_activations_ || !wm_gained_active || |
- wm_gained_active == GetTextFilterWidgetWindow()) { |
+ if (ignore_activations_ || !gained_active || |
+ gained_active == GetTextFilterWidgetWindow()) { |
return; |
} |
- WmWindow* root_window = wm_gained_active->GetRootWindow(); |
+ aura::Window* root_window = gained_active->GetRootWindow(); |
auto grid = |
std::find_if(grid_list_.begin(), grid_list_.end(), |
[root_window](const std::unique_ptr<WindowGrid>& grid) { |
@@ -568,12 +565,12 @@ void WindowSelector::OnWindowActivated(ActivationReason reason, |
auto iter = std::find_if( |
windows.begin(), windows.end(), |
- [wm_gained_active](const std::unique_ptr<WindowSelectorItem>& window) { |
- return window->Contains(wm_gained_active); |
+ [gained_active](const std::unique_ptr<WindowSelectorItem>& window) { |
+ return window->Contains(gained_active); |
}); |
if (iter == windows.end() && showing_text_filter_ && |
- WmWindow::Get(lost_active) == GetTextFilterWidgetWindow()) { |
+ lost_active == GetTextFilterWidgetWindow()) { |
return; |
} |
@@ -596,9 +593,9 @@ void WindowSelector::ContentsChanged(views::Textfield* sender, |
bool should_show_text_filter = !new_contents.empty(); |
if (showing_text_filter_ != should_show_text_filter) { |
- WmWindow* text_filter_widget_window = GetTextFilterWidgetWindow(); |
+ aura::Window* text_filter_widget_window = GetTextFilterWidgetWindow(); |
ui::ScopedLayerAnimationSettings animation_settings( |
- text_filter_widget_window->GetLayer()->GetAnimator()); |
+ text_filter_widget_window->layer()->GetAnimator()); |
animation_settings.SetPreemptionStrategy( |
ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET); |
animation_settings.SetTweenType(showing_text_filter_ |
@@ -608,10 +605,10 @@ void WindowSelector::ContentsChanged(views::Textfield* sender, |
gfx::Transform transform; |
if (should_show_text_filter) { |
transform.Translate(0, 0); |
- text_filter_widget_window->SetOpacity(1); |
+ text_filter_widget_window->layer()->SetOpacity(1); |
} else { |
transform.Translate(0, -text_filter_bottom_); |
- text_filter_widget_window->SetOpacity(0); |
+ text_filter_widget_window->layer()->SetOpacity(0); |
} |
text_filter_widget_window->SetTransform(transform); |
@@ -627,8 +624,8 @@ void WindowSelector::ContentsChanged(views::Textfield* sender, |
Move(WindowSelector::RIGHT, false); |
} |
-WmWindow* WindowSelector::GetTextFilterWidgetWindow() { |
- return WmWindow::Get(text_filter_widget_->GetNativeWindow()); |
+aura::Window* WindowSelector::GetTextFilterWidgetWindow() { |
+ return text_filter_widget_->GetNativeWindow(); |
} |
void WindowSelector::PositionWindows(bool animate) { |
@@ -637,16 +634,16 @@ void WindowSelector::PositionWindows(bool animate) { |
} |
void WindowSelector::RepositionTextFilterOnDisplayMetricsChange() { |
- WmWindow* root_window = WmWindow::Get(Shell::GetPrimaryRootWindow()); |
- const gfx::Rect rect = GetTextFilterPosition(root_window); |
+ const gfx::Rect rect = GetTextFilterPosition(Shell::GetPrimaryRootWindow()); |
text_filter_bottom_ = rect.bottom() + kTextFieldBottomMargin; |
text_filter_widget_->SetBounds(rect); |
gfx::Transform transform; |
transform.Translate( |
0, text_filter_string_length_ == 0 ? -text_filter_bottom_ : 0); |
- WmWindow* text_filter_window = GetTextFilterWidgetWindow(); |
- text_filter_window->SetOpacity(text_filter_string_length_ == 0 ? 0 : 1); |
+ aura::Window* text_filter_window = GetTextFilterWidgetWindow(); |
+ text_filter_window->layer()->SetOpacity(text_filter_string_length_ == 0 ? 0 |
+ : 1); |
text_filter_window->SetTransform(transform); |
} |
@@ -655,13 +652,13 @@ void WindowSelector::ResetFocusRestoreWindow(bool focus) { |
return; |
if (focus) { |
base::AutoReset<bool> restoring_focus(&ignore_activations_, true); |
- restore_focus_window_->Activate(); |
+ wm::ActivateWindow(restore_focus_window_); |
} |
// If the window is in the observed_windows_ list it needs to continue to be |
// observed. |
if (observed_windows_.find(restore_focus_window_) == |
observed_windows_.end()) { |
- restore_focus_window_->aura_window()->RemoveObserver(this); |
+ restore_focus_window_->RemoveObserver(this); |
} |
restore_focus_window_ = nullptr; |
} |