Index: ui/views/mus/native_widget_mus.cc |
diff --git a/ui/views/mus/native_widget_mus.cc b/ui/views/mus/native_widget_mus.cc |
index e52e56f722e8f3ae42e086a857ddeccd434a0938..081fa34674ed589fbe0f28ee26e546d9a25586f1 100644 |
--- a/ui/views/mus/native_widget_mus.cc |
+++ b/ui/views/mus/native_widget_mus.cc |
@@ -20,6 +20,7 @@ |
#include "ui/aura/client/default_capture_client.h" |
#include "ui/aura/client/window_tree_client.h" |
#include "ui/aura/env.h" |
+#include "ui/aura/env_input_state_controller.h" |
#include "ui/aura/layout_manager.h" |
#include "ui/aura/mus/mus_util.h" |
#include "ui/aura/window.h" |
@@ -485,6 +486,7 @@ NativeWidgetMus::NativeWidgetMus(internal::NativeWidgetDelegate* delegate, |
show_state_before_fullscreen_(mus::mojom::ShowState::DEFAULT), |
ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
content_(new aura::Window(this)), |
+ aura_env_controller_(new aura::EnvInputStateController), |
close_widget_factory_(this) { |
window_->set_input_event_handler(this); |
mus_window_observer_.reset(new MusWindowObserver(this)); |
@@ -1317,9 +1319,16 @@ void NativeWidgetMus::OnWindowInputEvent( |
EventAckHandler ack_handler(std::move(*ack_callback)); |
std::unique_ptr<ui::Event> event = ui::Event::Clone(event_in); |
- // TODO(markdittmer): This should be this->OnEvent(event.get()), but that |
- // can't happen until IME is refactored out of in WindowTreeHostMus. |
- platform_window_delegate()->DispatchEvent(event.get()); |
+ |
+ if (!event->IsKeyEvent()) { |
+ if (event->IsMouseEvent()) |
+ aura_env_controller_->PreDispatchMouseEvent(event->AsMouseEvent()); |
+ OnEvent(event.get()); |
+ } else { |
+ // TODO(markdittmer): This should be this->OnEvent(event.get()), but that |
+ // can't happen until IME is refactored out of in WindowTreeHostMus. |
+ platform_window_delegate()->DispatchEvent(event.get()); |
+ } |
// NOTE: |this| may be deleted. |
ack_handler.set_handled(event->handled()); |