| Index: ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc
|
| ===================================================================
|
| --- ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc (revision 180150)
|
| +++ ui/views/widget/desktop_aura/desktop_root_window_host_linux.cc (working copy)
|
| @@ -23,10 +23,13 @@
|
| #include "ui/base/x/x11_util.h"
|
| #include "ui/native_theme/native_theme.h"
|
| #include "ui/views/corewm/compound_event_filter.h"
|
| +#include "ui/views/corewm/corewm_switches.h"
|
| +#include "ui/views/corewm/focus_controller.h"
|
| #include "ui/views/ime/input_method.h"
|
| #include "ui/views/widget/desktop_aura/desktop_activation_client.h"
|
| #include "ui/views/widget/desktop_aura/desktop_cursor_client.h"
|
| #include "ui/views/widget/desktop_aura/desktop_dispatcher_client.h"
|
| +#include "ui/views/widget/desktop_aura/desktop_focus_rules.h"
|
| #include "ui/views/widget/desktop_aura/desktop_layout_manager.h"
|
| #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h"
|
| #include "ui/views/widget/desktop_aura/desktop_screen_position_client.h"
|
| @@ -91,6 +94,10 @@
|
|
|
| DesktopRootWindowHostLinux::~DesktopRootWindowHostLinux() {
|
| root_window_->ClearProperty(kHostForRootWindow);
|
| + if (corewm::UseFocusControllerOnDesktop()) {
|
| + aura::client::SetFocusClient(root_window_, NULL);
|
| + aura::client::SetActivationClient(root_window_, NULL);
|
| + }
|
| }
|
|
|
| // static
|
| @@ -214,11 +221,19 @@
|
| // messages to us.
|
| X11DesktopHandler::get();
|
|
|
| - focus_client_.reset(new aura::FocusManager);
|
| - aura::client::SetFocusClient(root_window_, focus_client_.get());
|
| + if (corewm::UseFocusControllerOnDesktop()) {
|
| + corewm::FocusController* focus_controller =
|
| + new corewm::FocusController(new DesktopFocusRules);
|
| + focus_client_.reset(focus_controller);
|
| + aura::client::SetFocusClient(root_window_, focus_controller);
|
| + aura::client::SetActivationClient(root_window_, focus_controller);
|
| + root_window_->AddPreTargetHandler(focus_controller);
|
| + } else {
|
| + focus_client_.reset(new aura::FocusManager);
|
| + aura::client::SetFocusClient(root_window_, focus_client_.get());
|
| + activation_client_.reset(new DesktopActivationClient(root_window_));
|
| + }
|
|
|
| - activation_client_.reset(new DesktopActivationClient(root_window_));
|
| -
|
| dispatcher_client_.reset(new DesktopDispatcherClient);
|
| aura::client::SetDispatcherClient(root_window_,
|
| dispatcher_client_.get());
|
|
|