Index: ash/display/window_tree_host_manager.cc |
diff --git a/ash/display/window_tree_host_manager.cc b/ash/display/window_tree_host_manager.cc |
index a158d60993af9f481ddef7ddbbc9b3244cf1ea3f..d23d5c80493cd26610c8f3db8baa312d5ce38ee1 100644 |
--- a/ash/display/window_tree_host_manager.cc |
+++ b/ash/display/window_tree_host_manager.cc |
@@ -13,7 +13,6 @@ |
#include "ash/common/ash_switches.h" |
#include "ash/common/system/tray/system_tray.h" |
#include "ash/display/cursor_window_controller.h" |
-#include "ash/display/display_manager.h" |
#include "ash/display/mirror_window_controller.h" |
#include "ash/display/root_window_transformers.h" |
#include "ash/host/ash_window_tree_host.h" |
@@ -45,6 +44,7 @@ |
#include "ui/display/display.h" |
#include "ui/display/manager/display_layout.h" |
#include "ui/display/manager/display_layout_store.h" |
+#include "ui/display/manager/display_manager.h" |
#include "ui/display/screen.h" |
#include "ui/wm/core/coordinate_conversion.h" |
#include "ui/wm/public/activation_client.h" |
@@ -78,7 +78,7 @@ int64_t primary_display_id = -1; |
const float kCursorMultiplierForExternalDisplays = 1.2f; |
#endif |
-DisplayManager* GetDisplayManager() { |
+display::DisplayManager* GetDisplayManager() { |
return Shell::GetInstance()->display_manager(); |
} |
@@ -300,7 +300,7 @@ void WindowTreeHostManager::CreatePrimaryHost( |
void WindowTreeHostManager::InitHosts() { |
RootWindowController::CreateForPrimaryDisplay( |
window_tree_hosts_[primary_display_id]); |
- DisplayManager* display_manager = GetDisplayManager(); |
+ display::DisplayManager* display_manager = GetDisplayManager(); |
for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { |
const display::Display& display = display_manager->GetDisplayAt(i); |
if (primary_display_id != display.id()) { |
@@ -412,7 +412,7 @@ void WindowTreeHostManager::SetPrimaryDisplayId(int64_t id) { |
return; |
} |
- DisplayManager* display_manager = GetDisplayManager(); |
+ display::DisplayManager* display_manager = GetDisplayManager(); |
DCHECK(new_primary_display.is_valid()); |
DCHECK(display_manager->GetDisplayForId(new_primary_display.id()).is_valid()); |
@@ -477,7 +477,7 @@ void WindowTreeHostManager::UpdateMouseLocationAfterDisplayChange() { |
display::Screen::GetScreen()->GetCursorScreenPoint(); |
gfx::Point target_location_in_native; |
int64_t closest_distance_squared = -1; |
- DisplayManager* display_manager = GetDisplayManager(); |
+ display::DisplayManager* display_manager = GetDisplayManager(); |
aura::Window* dst_root_window = nullptr; |
for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { |
@@ -571,8 +571,8 @@ void WindowTreeHostManager::OnDisplayAdded(const display::Display& display) { |
// create new WTH for primary display instead of reusing. |
if (primary_tree_host_for_replace_ && |
(GetRootWindowSettings(GetWindow(primary_tree_host_for_replace_)) |
- ->display_id == DisplayManager::kUnifiedDisplayId || |
- display.id() == DisplayManager::kUnifiedDisplayId)) { |
+ ->display_id == display::DisplayManager::kUnifiedDisplayId || |
+ display.id() == display::DisplayManager::kUnifiedDisplayId)) { |
DCHECK_EQ(display::Display::kInvalidDisplayID, primary_display_id); |
primary_display_id = display.id(); |
@@ -720,7 +720,7 @@ void WindowTreeHostManager::OnHostResized(const aura::WindowTreeHost* host) { |
display::Screen::GetScreen()->GetDisplayNearestWindow( |
const_cast<aura::Window*>(host->window())); |
- DisplayManager* display_manager = GetDisplayManager(); |
+ display::DisplayManager* display_manager = GetDisplayManager(); |
if (display_manager->UpdateDisplayBounds(display.id(), host->GetBounds())) { |
mirror_window_controller_->UpdateWindow(); |
cursor_window_controller_->UpdateContainer(); |
@@ -728,7 +728,7 @@ void WindowTreeHostManager::OnHostResized(const aura::WindowTreeHost* host) { |
} |
void WindowTreeHostManager::CreateOrUpdateMirroringDisplay( |
- const DisplayInfoList& info_list) { |
+ const display::DisplayInfoList& info_list) { |
if (GetDisplayManager()->IsInMirrorMode() || |
GetDisplayManager()->IsInUnifiedMode()) { |
mirror_window_controller_->UpdateWindow(info_list); |
@@ -766,10 +766,11 @@ void WindowTreeHostManager::PreDisplayConfigurationChange(bool clear_focus) { |
cursor_location_in_native_coords_for_restore_ = point_in_native; |
} |
-void WindowTreeHostManager::PostDisplayConfigurationChange() { |
+void WindowTreeHostManager::PostDisplayConfigurationChange( |
+ bool must_clear_window) { |
focus_activation_store_->Restore(); |
- DisplayManager* display_manager = GetDisplayManager(); |
+ display::DisplayManager* display_manager = GetDisplayManager(); |
display::DisplayLayoutStore* layout_store = display_manager->layout_store(); |
if (display_manager->num_connected_displays() > 1) { |
display::DisplayIdList list = display_manager->GetCurrentDisplayIdList(); |
@@ -798,6 +799,11 @@ void WindowTreeHostManager::PostDisplayConfigurationChange() { |
for (auto& observer : observers_) |
observer.OnDisplayConfigurationChanged(); |
UpdateMouseLocationAfterDisplayChange(); |
+ |
+#if defined(USE_X11) && defined(OS_CHROMEOS) |
+ if (must_clear_window) |
+ ui::ClearX11DefaultRootWindow(); |
+#endif |
} |
#if defined(OS_CHROMEOS) |
@@ -834,7 +840,7 @@ AshWindowTreeHost* WindowTreeHostManager::AddWindowTreeHostForDisplay( |
AshWindowTreeHostInitParams params_with_bounds(init_params); |
params_with_bounds.initial_bounds = display_info.bounds_in_native(); |
params_with_bounds.offscreen = |
- display.id() == DisplayManager::kUnifiedDisplayId; |
+ display.id() == display::DisplayManager::kUnifiedDisplayId; |
AshWindowTreeHost* ash_host = AshWindowTreeHost::Create(params_with_bounds); |
aura::WindowTreeHost* host = ash_host->AsWindowTreeHost(); |
if (!input_method_) { // Singleton input method instance for Ash. |