Index: ui/views/mus/window_manager_connection.cc |
diff --git a/ui/views/mus/window_manager_connection.cc b/ui/views/mus/window_manager_connection.cc |
index 4d1fe3bc11b140cd67ac7eff5d48387e1e3ff4cc..0e62c76b7c708e53b0c0e153654b4d54cfee5bcd 100644 |
--- a/ui/views/mus/window_manager_connection.cc |
+++ b/ui/views/mus/window_manager_connection.cc |
@@ -14,6 +14,7 @@ |
#include "components/mus/public/cpp/window_tree_client.h" |
#include "components/mus/public/interfaces/event_matcher.mojom.h" |
#include "components/mus/public/interfaces/window_tree.mojom.h" |
+#include "mojo/common/common_type_converters.h" |
#include "services/shell/public/cpp/connection.h" |
#include "services/shell/public/cpp/connector.h" |
#include "ui/views/mus/clipboard_mus.h" |
@@ -86,8 +87,14 @@ void WindowManagerConnection::AddPointerWatcher(PointerWatcher* watcher) { |
// Start a watcher for pointer down. |
// TODO(jamescook): Extend event observers to handle multiple event types. |
mus::mojom::EventMatcherPtr matcher = mus::mojom::EventMatcher::New(); |
- matcher->type_matcher = mus::mojom::EventTypeMatcher::New(); |
- matcher->type_matcher->type = ui::mojom::EventType::POINTER_DOWN; |
+ matcher->types_matcher = mus::mojom::EventMultTypeMatcher::New(); |
+ |
+ matcher->types_matcher->types = mojo::Array<ui::mojom::EventType>::New(4); |
+ matcher->types_matcher->types.push_back(ui::mojom::EventType::POINTER_DOWN); |
+ matcher->types_matcher->types.push_back(ui::mojom::EventType::POINTER_UP); |
+ matcher->types_matcher->types.push_back(ui::mojom::EventType::POINTER_MOVE); |
+ matcher->types_matcher->types.push_back( |
+ ui::mojom::EventType::POINTER_CANCEL); |
client_->SetEventObserver(std::move(matcher)); |
sadrul
2016/06/27 14:44:54
We currently have PointerWatcher instances that wa
riajiang
2016/06/28 21:52:51
Done.
|
} |
} |
@@ -169,12 +176,29 @@ void WindowManagerConnection::OnEventObserved(const ui::Event& event, |
gfx::Point location_in_screen = event.AsLocatedEvent()->root_location(); |
if (event.type() == ui::ET_MOUSE_PRESSED) { |
FOR_EACH_OBSERVER(PointerWatcher, pointer_watchers_, |
- OnMousePressed(*event.AsMouseEvent(), location_in_screen, |
- target_widget)); |
+ OnMousePressObserved( |
+ *event.AsMouseEvent(), location_in_screen, |
+ target_widget)); |
} else if (event.type() == ui::ET_TOUCH_PRESSED) { |
FOR_EACH_OBSERVER(PointerWatcher, pointer_watchers_, |
- OnTouchPressed(*event.AsTouchEvent(), location_in_screen, |
- target_widget)); |
+ OnTouchPressObserved( |
+ *event.AsTouchEvent(), location_in_screen, |
+ target_widget)); |
+ } else if (event.type() == ui::ET_TOUCH_RELEASED) { |
+ FOR_EACH_OBSERVER(PointerWatcher, pointer_watchers_, |
+ OnTouchReleaseObserved( |
+ *event.AsTouchEvent(), location_in_screen, |
+ target_widget)); |
+ } else if (event.type() == ui::ET_TOUCH_MOVED) { |
+ FOR_EACH_OBSERVER(PointerWatcher, pointer_watchers_, |
+ OnTouchMoveObserved( |
+ *event.AsTouchEvent(), location_in_screen, |
+ target_widget)); |
+ } else if (event.type() == ui::ET_TOUCH_CANCELLED) { |
+ FOR_EACH_OBSERVER(PointerWatcher, pointer_watchers_, |
+ OnTouchCancellObserved( |
+ *event.AsTouchEvent(), location_in_screen, |
+ target_widget)); |
} |
} |