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

Unified Diff: ash/pointer_watcher_delegate_aura.cc

Issue 2231533004: Pointer watcher modifications to support laser pointer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Initial patch. 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/pointer_watcher_delegate_aura.cc
diff --git a/ash/pointer_watcher_delegate_aura.cc b/ash/pointer_watcher_delegate_aura.cc
index 9e72178a25cf0e6ce1550a8d28801a9bd6f6fd6f..41ff7e8ec134ed55d3f537641c59e4232e022952 100644
--- a/ash/pointer_watcher_delegate_aura.cc
+++ b/ash/pointer_watcher_delegate_aura.cc
@@ -24,25 +24,47 @@ PointerWatcherDelegateAura::~PointerWatcherDelegateAura() {
}
void PointerWatcherDelegateAura::AddPointerWatcher(
- views::PointerWatcher* watcher) {
+ views::PointerWatcher* watcher,
+ bool wants_moves) {
pointer_watchers_.AddObserver(watcher);
+ if (wants_moves) {
James Cook 2016/08/11 23:51:10 Since want_moves is always true in the map, you co
+ wants_moves_map_.insert(
+ std::pair<views::PointerWatcher*, bool>(watcher, wants_moves));
+ }
}
void PointerWatcherDelegateAura::RemovePointerWatcher(
views::PointerWatcher* watcher) {
pointer_watchers_.RemoveObserver(watcher);
+ auto it = wants_moves_map_.find(watcher);
+ if (it != wants_moves_map_.end())
+ wants_moves_map_.erase(it);
}
void PointerWatcherDelegateAura::OnMouseEvent(ui::MouseEvent* event) {
// For compatibility with the mus version, don't send moves.
- if (event->type() != ui::ET_MOUSE_PRESSED &&
+ if (event->type() != ui::ET_MOUSE_DRAGGED &&
James Cook 2016/08/11 23:51:10 Good catch on drags.
+ event->type() != ui::ET_MOUSE_MOVED &&
+ event->type() != ui::ET_MOUSE_PRESSED &&
event->type() != ui::ET_MOUSE_RELEASED)
return;
+
ui::PointerEvent mouse_pointer_event(*event);
- FOR_EACH_OBSERVER(
- views::PointerWatcher, pointer_watchers_,
- OnPointerEventObserved(mouse_pointer_event, GetLocationInScreen(*event),
- GetTargetWidget(*event)));
+ // Mouse move events only sent to a select number of observers.
+ if (event->type() == ui::ET_MOUSE_DRAGGED ||
+ event->type() == ui::ET_MOUSE_MOVED) {
+ auto it = wants_moves_map_.begin();
+ for (; it != wants_moves_map_.end(); it++) {
+ it->first->OnPointerEventObserved(mouse_pointer_event,
+ GetLocationInScreen(*event),
+ GetTargetWidget(*event));
+ }
+ } else {
+ FOR_EACH_OBSERVER(
+ views::PointerWatcher, pointer_watchers_,
+ OnPointerEventObserved(mouse_pointer_event, GetLocationInScreen(*event),
+ GetTargetWidget(*event)));
+ }
}
void PointerWatcherDelegateAura::OnTouchEvent(ui::TouchEvent* event) {

Powered by Google App Engine
This is Rietveld 408576698