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() { |