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

Side by Side Diff: ui/aura/window_event_dispatcher.cc

Issue 1565013002: Don't send touch events to windows like menus when the touch occurs outside the menu bounds. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix build redness Created 4 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/aura/window_event_dispatcher.h" 5 #include "ui/aura/window_event_dispatcher.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 } 95 }
96 96
97 WindowEventDispatcher::~WindowEventDispatcher() { 97 WindowEventDispatcher::~WindowEventDispatcher() {
98 TRACE_EVENT0("shutdown", "WindowEventDispatcher::Destructor"); 98 TRACE_EVENT0("shutdown", "WindowEventDispatcher::Destructor");
99 Env::GetInstance()->RemoveObserver(this); 99 Env::GetInstance()->RemoveObserver(this);
100 ui::GestureRecognizer::Get()->RemoveGestureEventHelper(this); 100 ui::GestureRecognizer::Get()->RemoveGestureEventHelper(this);
101 } 101 }
102 102
103 void WindowEventDispatcher::RepostEvent(const ui::LocatedEvent& event) { 103 void WindowEventDispatcher::RepostEvent(const ui::LocatedEvent& event) {
104 DCHECK(event.type() == ui::ET_MOUSE_PRESSED || 104 DCHECK(event.type() == ui::ET_MOUSE_PRESSED ||
105 event.type() == ui::ET_GESTURE_TAP_DOWN); 105 event.type() == ui::ET_GESTURE_TAP_DOWN ||
106 event.type() == ui::ET_TOUCH_PRESSED);
sky 2016/01/12 21:16:42 You'll want to update the description in the .h fo
ananta 2016/01/13 01:21:24 Done.
106 // We allow for only one outstanding repostable event. This is used 107 // We allow for only one outstanding repostable event. This is used
107 // in exiting context menus. A dropped repost request is allowed. 108 // in exiting context menus. A dropped repost request is allowed.
108 if (event.type() == ui::ET_MOUSE_PRESSED) { 109 if (event.type() == ui::ET_MOUSE_PRESSED) {
109 held_repostable_event_.reset( 110 held_repostable_event_.reset(
110 new ui::MouseEvent( 111 new ui::MouseEvent(
111 static_cast<const ui::MouseEvent&>(event), 112 static_cast<const ui::MouseEvent&>(event),
112 static_cast<aura::Window*>(event.target()), 113 static_cast<aura::Window*>(event.target()),
113 window())); 114 window()));
114 base::MessageLoop::current()->PostNonNestableTask( 115 base::MessageLoop::current()->PostNonNestableTask(
115 FROM_HERE, base::Bind( 116 FROM_HERE, base::Bind(
116 base::IgnoreResult(&WindowEventDispatcher::DispatchHeldEvents), 117 base::IgnoreResult(&WindowEventDispatcher::DispatchHeldEvents),
117 repost_event_factory_.GetWeakPtr())); 118 repost_event_factory_.GetWeakPtr()));
119 } else if (event.type() == ui::ET_TOUCH_PRESSED) {
120 DispatchDetails details = OnEventFromSource(
sky 2016/01/12 21:16:42 Doesn't this process immediatley right here? Don't
ananta 2016/01/13 01:21:24 Done.
121 const_cast<ui::LocatedEvent*>(&event));
122 if (details.dispatcher_destroyed)
123 return;
118 } else { 124 } else {
119 DCHECK(event.type() == ui::ET_GESTURE_TAP_DOWN); 125 DCHECK(event.type() == ui::ET_GESTURE_TAP_DOWN);
120 held_repostable_event_.reset(); 126 held_repostable_event_.reset();
121 // TODO(rbyers): Reposing of gestures is tricky to get 127 // TODO(rbyers): Reposing of gestures is tricky to get
122 // right, so it's not yet supported. crbug.com/170987. 128 // right, so it's not yet supported. crbug.com/170987.
123 } 129 }
124 } 130 }
125 131
126 void WindowEventDispatcher::OnMouseEventsEnableStateChanged(bool enabled) { 132 void WindowEventDispatcher::OnMouseEventsEnableStateChanged(bool enabled) {
127 // Send entered / exited so that visual state can be updated to match 133 // Send entered / exited so that visual state can be updated to match
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 } 920 }
915 921
916 // This flag is set depending on the gestures recognized in the call above, 922 // This flag is set depending on the gestures recognized in the call above,
917 // and needs to propagate with the forwarded event. 923 // and needs to propagate with the forwarded event.
918 event->set_may_cause_scrolling(orig_event.may_cause_scrolling()); 924 event->set_may_cause_scrolling(orig_event.may_cause_scrolling());
919 925
920 return PreDispatchLocatedEvent(target, event); 926 return PreDispatchLocatedEvent(target, event);
921 } 927 }
922 928
923 } // namespace aura 929 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698