Index: ash/display/display_controller.cc |
diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc |
index 456b831235a36e971c5e3bb6e08f7ee21f7567a8..b17f4b51352e98d5622c9722d34b2607f2808b0f 100644 |
--- a/ash/display/display_controller.cc |
+++ b/ash/display/display_controller.cc |
@@ -33,7 +33,7 @@ DisplayController::~DisplayController() { |
aura::Env::GetInstance()->display_manager()->RemoveObserver(this); |
// Delete all root window controllers, which deletes root window |
// from the last so that the primary root window gets deleted last. |
- for (std::map<int, aura::RootWindow*>::const_reverse_iterator it = |
+ for (std::map<int64, aura::RootWindow*>::const_reverse_iterator it = |
root_windows_.rbegin(); it != root_windows_.rend(); ++it) { |
internal::RootWindowController* controller = |
GetRootWindowController(it->second); |
@@ -50,8 +50,7 @@ void DisplayController::InitPrimaryDisplay() { |
aura::DisplayManager* display_manager = |
aura::Env::GetInstance()->display_manager(); |
const gfx::Display* display = display_manager->GetDisplayAt(0); |
- DCHECK_EQ(0, display->id()); |
- aura::RootWindow* root = AddRootWindowForDisplay(*display); |
+ aura::RootWindow* root = AddRootWindowForDisplay(*display, true); |
root->SetHostBounds(display->bounds_in_pixel()); |
} |
@@ -60,7 +59,7 @@ void DisplayController::InitSecondaryDisplays() { |
aura::Env::GetInstance()->display_manager(); |
for (size_t i = 1; i < display_manager->GetNumDisplays(); ++i) { |
const gfx::Display* display = display_manager->GetDisplayAt(i); |
- aura::RootWindow* root = AddRootWindowForDisplay(*display); |
+ aura::RootWindow* root = AddRootWindowForDisplay(*display, false); |
Shell::GetInstance()->InitRootWindowForSecondaryDisplay(root); |
} |
UpdateDisplayBoundsForLayout(); |
@@ -68,7 +67,9 @@ void DisplayController::InitSecondaryDisplays() { |
aura::RootWindow* DisplayController::GetPrimaryRootWindow() { |
DCHECK(!root_windows_.empty()); |
- return root_windows_[0]; |
+ aura::DisplayManager* display_manager = |
+ aura::Env::GetInstance()->display_manager(); |
+ return root_windows_[display_manager->GetDisplayAt(0)->id()]; |
} |
aura::RootWindow* DisplayController::GetRootWindowForDisplayId(int id) { |
@@ -76,7 +77,7 @@ aura::RootWindow* DisplayController::GetRootWindowForDisplayId(int id) { |
} |
void DisplayController::CloseChildWindows() { |
- for (std::map<int, aura::RootWindow*>::const_iterator it = |
+ for (std::map<int64, aura::RootWindow*>::const_iterator it = |
root_windows_.begin(); it != root_windows_.end(); ++it) { |
aura::RootWindow* root_window = it->second; |
internal::RootWindowController* controller = |
@@ -94,7 +95,7 @@ void DisplayController::CloseChildWindows() { |
std::vector<aura::RootWindow*> DisplayController::GetAllRootWindows() { |
std::vector<aura::RootWindow*> windows; |
- for (std::map<int, aura::RootWindow*>::const_iterator it = |
+ for (std::map<int64, aura::RootWindow*>::const_iterator it = |
root_windows_.begin(); it != root_windows_.end(); ++it) { |
DCHECK(it->second); |
if (GetRootWindowController(it->second)) |
@@ -106,7 +107,7 @@ std::vector<aura::RootWindow*> DisplayController::GetAllRootWindows() { |
std::vector<internal::RootWindowController*> |
DisplayController::GetAllRootWindowControllers() { |
std::vector<internal::RootWindowController*> controllers; |
- for (std::map<int, aura::RootWindow*>::const_iterator it = |
+ for (std::map<int64, aura::RootWindow*>::const_iterator it = |
root_windows_.begin(); it != root_windows_.end(); ++it) { |
internal::RootWindowController* controller = |
GetRootWindowController(it->second); |
@@ -175,12 +176,11 @@ void DisplayController::OnDisplayBoundsChanged(const gfx::Display& display) { |
void DisplayController::OnDisplayAdded(const gfx::Display& display) { |
if (root_windows_.empty()) { |
- DCHECK_EQ(0, display.id()); |
root_windows_[display.id()] = Shell::GetPrimaryRootWindow(); |
Shell::GetPrimaryRootWindow()->SetHostBounds(display.bounds_in_pixel()); |
return; |
} |
- aura::RootWindow* root = AddRootWindowForDisplay(display); |
+ aura::RootWindow* root = AddRootWindowForDisplay(display, false); |
Shell::GetInstance()->InitRootWindowForSecondaryDisplay(root); |
UpdateDisplayBoundsForLayout(); |
} |
@@ -214,7 +214,7 @@ bool DisplayController::IsExtendedDesktopEnabled(){ |
} |
aura::RootWindow* DisplayController::AddRootWindowForDisplay( |
- const gfx::Display& display) { |
+ const gfx::Display& display, bool is_primary) { |
aura::RootWindow* root = aura::Env::GetInstance()->display_manager()-> |
CreateRootWindowForDisplay(display); |
root_windows_[display.id()] = root; |
@@ -223,8 +223,7 @@ aura::RootWindow* DisplayController::AddRootWindowForDisplay( |
// 2) the display is primary display and the host window |
// is set to be fullscreen (this is old behavior). |
if (IsExtendedDesktopEnabled() || |
- (aura::DisplayManager::use_fullscreen_host_window() && |
- display.id() == 0)) { |
+ (aura::DisplayManager::use_fullscreen_host_window() && is_primary)) { |
root->ConfineCursorToWindow(); |
} |
return root; |