| Index: ash/wm/event_client_impl.cc
|
| diff --git a/ash/wm/event_client_impl.cc b/ash/wm/event_client_impl.cc
|
| index fcdc1b425d382c948e31b0135fff8e61d105c5ee..03d4dea0b030c1130b5134ef22ece67fdb2b7df0 100644
|
| --- a/ash/wm/event_client_impl.cc
|
| +++ b/ash/wm/event_client_impl.cc
|
| @@ -8,6 +8,7 @@
|
| #include "ash/shell.h"
|
| #include "ash/shell_window_ids.h"
|
| #include "ui/aura/window.h"
|
| +#include "ui/keyboard/keyboard_util.h"
|
|
|
| namespace ash {
|
| namespace internal {
|
| @@ -21,26 +22,34 @@ EventClientImpl::~EventClientImpl() {
|
| bool EventClientImpl::CanProcessEventsWithinSubtree(
|
| const aura::Window* window) const {
|
| const aura::RootWindow* root_window = window ? window->GetRootWindow() : NULL;
|
| - if (!root_window)
|
| + if (!root_window ||
|
| + !Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked()) {
|
| return true;
|
| - if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked()) {
|
| - const aura::Window* lock_screen_containers = Shell::GetContainer(
|
| - root_window,
|
| - kShellWindowId_LockScreenContainersContainer);
|
| - const aura::Window* lock_background_containers = Shell::GetContainer(
|
| - root_window,
|
| - kShellWindowId_LockScreenBackgroundContainer);
|
| - const aura::Window* lock_screen_related_containers = Shell::GetContainer(
|
| + }
|
| +
|
| + const aura::Window* lock_screen_containers = Shell::GetContainer(
|
| + root_window,
|
| + kShellWindowId_LockScreenContainersContainer);
|
| + const aura::Window* lock_background_containers = Shell::GetContainer(
|
| + root_window,
|
| + kShellWindowId_LockScreenBackgroundContainer);
|
| + const aura::Window* lock_screen_related_containers = Shell::GetContainer(
|
| + root_window,
|
| + kShellWindowId_LockScreenRelatedContainersContainer);
|
| + bool can_process_events = (window->Contains(lock_screen_containers) &&
|
| + window->Contains(lock_background_containers) &&
|
| + window->Contains(lock_screen_related_containers)) ||
|
| + lock_screen_containers->Contains(window) ||
|
| + lock_background_containers->Contains(window) ||
|
| + lock_screen_related_containers->Contains(window);
|
| + if (keyboard::IsKeyboardEnabled()) {
|
| + const aura::Window* virtual_keyboard_container = Shell::GetContainer(
|
| root_window,
|
| - kShellWindowId_LockScreenRelatedContainersContainer);
|
| - return (window->Contains(lock_screen_containers) &&
|
| - window->Contains(lock_background_containers) &&
|
| - window->Contains(lock_screen_related_containers)) ||
|
| - lock_screen_containers->Contains(window) ||
|
| - lock_background_containers->Contains(window) ||
|
| - lock_screen_related_containers->Contains(window);
|
| + kShellWindowId_VirtualKeyboardContainer);
|
| + can_process_events |= (window->Contains(virtual_keyboard_container) ||
|
| + virtual_keyboard_container->Contains(window));
|
| }
|
| - return true;
|
| + return can_process_events;
|
| }
|
|
|
| ui::EventTarget* EventClientImpl::GetToplevelEventTarget() {
|
|
|