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

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 1 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..2d9e679b4e91f1ed89fde23ecaa6df2342187c4f 100644
--- a/ash/aura/pointer_watcher_adapter.cc
+++ b/ash/aura/pointer_watcher_adapter.cc
@@ -24,13 +24,20 @@ PointerWatcherAdapter::~PointerWatcherAdapter() {
}
void PointerWatcherAdapter::AddPointerWatcher(views::PointerWatcher* watcher,
- bool wants_moves) {
+ views::RequestedEvents 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) {
+ // the pair of |watcher| and |wants_move| and |wants_drags| unique, just
+ // |watcher|.
+ if (events == views::RequestedEvents::DRAGS) {
+ DCHECK(!move_watchers_.HasObserver(watcher));
sky 2016/08/26 15:36:54 I think it's ok to assume a watcher isn't added mo
sammiequon 2016/08/26 18:34:20 Done.
+ DCHECK(!non_move_watchers_.HasObserver(watcher));
+ drag_watchers_.AddObserver(watcher);
+ } else if (events == views::RequestedEvents::MOVES) {
+ DCHECK(!drag_watchers_.HasObserver(watcher));
DCHECK(!non_move_watchers_.HasObserver(watcher));
move_watchers_.AddObserver(watcher);
} else {
+ DCHECK(!drag_watchers_.HasObserver(watcher));
DCHECK(!move_watchers_.HasObserver(watcher));
non_move_watchers_.AddObserver(watcher);
}
@@ -40,6 +47,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 +56,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.
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 +75,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 +104,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) {
FOR_EACH_OBSERVER(
views::PointerWatcher, non_move_watchers_,
OnPointerEventObserved(event, screen_location, target_widget));

Powered by Google App Engine
This is Rietveld 408576698