| Index: ash/root_window_controller.cc
|
| diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
|
| index 45c0f7a6372d750e7f0a6d9088f6c7024f9a02d4..5914c9f19115420d068a9a1d05c2fdec02fc9629 100644
|
| --- a/ash/root_window_controller.cc
|
| +++ b/ash/root_window_controller.cc
|
| @@ -518,21 +518,31 @@ void RootWindowController::UpdateShelfVisibility() {
|
| shelf_->shelf_layout_manager()->UpdateVisibilityState();
|
| }
|
|
|
| -const aura::Window* RootWindowController::GetTopmostFullscreenWindow() const {
|
| +const aura::Window* RootWindowController::GetWindowForFullscreenMode() const {
|
| const aura::Window::Windows& windows =
|
| GetContainer(kShellWindowId_DefaultContainer)->children();
|
| + const aura::Window* topmost_window = NULL;
|
| for (aura::Window::Windows::const_reverse_iterator iter = windows.rbegin();
|
| iter != windows.rend(); ++iter) {
|
| - if (wm::GetWindowState(*iter)->IsFullscreen())
|
| - return *iter;
|
| + if (((*iter)->type() == aura::client::WINDOW_TYPE_NORMAL ||
|
| + (*iter)->type() == aura::client::WINDOW_TYPE_PANEL) &&
|
| + (*iter)->layer()->GetTargetVisibility()) {
|
| + topmost_window = *iter;
|
| + break;
|
| + }
|
| + }
|
| + while (topmost_window) {
|
| + if (wm::GetWindowState(topmost_window)->IsFullscreen())
|
| + return topmost_window;
|
| + topmost_window = topmost_window->transient_parent();
|
| }
|
| return NULL;
|
| }
|
|
|
| -aura::Window* RootWindowController::GetTopmostFullscreenWindow() {
|
| +aura::Window* RootWindowController::GetWindowForFullscreenMode() {
|
| return const_cast<aura::Window*>(
|
| const_cast<const RootWindowController*>(this)->
|
| - GetTopmostFullscreenWindow());
|
| + GetWindowForFullscreenMode());
|
| }
|
|
|
| void RootWindowController::ActivateKeyboard(
|
|
|