Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1881)

Unified Diff: ash/aura/pointer_watcher_adapter.cc

Issue 2271393002: Wires up drags to pointer watcher adapter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Fixed patch set 2 errors. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/aura/pointer_watcher_adapter.cc
diff --git a/ash/aura/pointer_watcher_adapter.cc b/ash/aura/pointer_watcher_adapter.cc
index c57b6b5d5d6c2df393883e3c7ea08cff324c19c9..be9583f24897c2c7095348adf67ed0377558b6c9 100644
--- a/ash/aura/pointer_watcher_adapter.cc
+++ b/ash/aura/pointer_watcher_adapter.cc
@@ -23,15 +23,20 @@ PointerWatcherAdapter::~PointerWatcherAdapter() {
Shell::GetInstance()->RemovePreTargetHandler(this);
}
-void PointerWatcherAdapter::AddPointerWatcher(views::PointerWatcher* watcher,
- bool wants_moves) {
+void PointerWatcherAdapter::AddPointerWatcher(
+ views::PointerWatcher* watcher,
+ views::PointerWatcherEventTypes events) {
// We only allow a watcher to be added once. That is, we don't consider
- // the pair of |watcher| and |wants_move| unique, just |watcher|.
- if (wants_moves) {
- DCHECK(!non_move_watchers_.HasObserver(watcher));
+ // the pair of |watcher| and |wants_move| and |wants_drags| unique, just
sky 2016/08/26 19:58:57 update comment.
sammiequon 2016/08/26 21:48:04 Done.
+ // |watcher|.
+ DCHECK(!non_move_watchers_.HasObserver(watcher));
+ DCHECK(!move_watchers_.HasObserver(watcher));
+ DCHECK(!drag_watchers_.HasObserver(watcher));
+ if (events == views::PointerWatcherEventTypes::DRAGS) {
sky 2016/08/26 19:58:57 Now that all paths are a single line you can nuke
sammiequon 2016/08/26 21:48:04 Done.
+ drag_watchers_.AddObserver(watcher);
+ } else if (events == views::PointerWatcherEventTypes::MOVES) {
move_watchers_.AddObserver(watcher);
} else {
- DCHECK(!move_watchers_.HasObserver(watcher));
non_move_watchers_.AddObserver(watcher);
}
}
@@ -40,6 +45,7 @@ void PointerWatcherAdapter::RemovePointerWatcher(
views::PointerWatcher* watcher) {
non_move_watchers_.RemoveObserver(watcher);
move_watchers_.RemoveObserver(watcher);
+ drag_watchers_.RemoveObserver(watcher);
}
void PointerWatcherAdapter::OnMouseEvent(ui::MouseEvent* event) {
@@ -48,13 +54,16 @@ void PointerWatcherAdapter::OnMouseEvent(ui::MouseEvent* event) {
OnMouseCaptureChanged());
FOR_EACH_OBSERVER(views::PointerWatcher, move_watchers_,
OnMouseCaptureChanged());
+ FOR_EACH_OBSERVER(views::PointerWatcher, drag_watchers_,
+ OnMouseCaptureChanged());
return;
}
- // For compatibility with the mus version, don't send drags.
+ // The mus version does not send drags.
sky 2016/08/26 19:58:57 I think this comment is no longer helpful, you may
sammiequon 2016/08/26 21:48:04 Done.
if (event->type() != ui::ET_MOUSE_PRESSED &&
event->type() != ui::ET_MOUSE_RELEASED &&
- event->type() != ui::ET_MOUSE_MOVED)
+ event->type() != ui::ET_MOUSE_MOVED &&
+ event->type() != ui::ET_MOUSE_DRAGGED)
return;
DCHECK(ui::PointerEvent::CanConvertFrom(*event));
@@ -64,7 +73,8 @@ void PointerWatcherAdapter::OnMouseEvent(ui::MouseEvent* event) {
void PointerWatcherAdapter::OnTouchEvent(ui::TouchEvent* event) {
// For compatibility with the mus version, don't send drags.
if (event->type() != ui::ET_TOUCH_PRESSED &&
- event->type() != ui::ET_TOUCH_RELEASED)
+ event->type() != ui::ET_TOUCH_RELEASED &&
+ event->type() != ui::ET_TOUCH_MOVED)
return;
DCHECK(ui::PointerEvent::CanConvertFrom(*event));
@@ -92,9 +102,16 @@ void PointerWatcherAdapter::NotifyWatchers(
const gfx::Point screen_location(GetLocationInScreen(original_event));
views::Widget* target_widget = GetTargetWidget(original_event);
FOR_EACH_OBSERVER(
- views::PointerWatcher, move_watchers_,
+ views::PointerWatcher, drag_watchers_,
OnPointerEventObserved(event, screen_location, target_widget));
- if (event.type() != ui::ET_POINTER_MOVED) {
+ if (original_event.type() != ui::ET_TOUCH_MOVED &&
+ original_event.type() != ui::ET_MOUSE_DRAGGED) {
+ FOR_EACH_OBSERVER(
+ views::PointerWatcher, move_watchers_,
+ OnPointerEventObserved(event, screen_location, target_widget));
+ }
+ if (event.type() != ui::ET_POINTER_MOVED &&
+ original_event.type() != ui::ET_MOUSE_DRAGGED) {
sky 2016/08/26 19:58:57 ET_POINTER_MOVED covers ET_MOUSE_DRAGGED, right? I
sammiequon 2016/08/26 21:48:04 Done.
FOR_EACH_OBSERVER(
views::PointerWatcher, non_move_watchers_,
OnPointerEventObserved(event, screen_location, target_widget));

Powered by Google App Engine
This is Rietveld 408576698