OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/views/widget/root_view.h" | 5 #include "ui/views/widget/root_view.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "ui/base/accessibility/accessible_view_state.h" | 11 #include "ui/base/accessibility/accessible_view_state.h" |
12 #include "ui/base/dragdrop/drag_drop_types.h" | 12 #include "ui/base/dragdrop/drag_drop_types.h" |
13 #include "ui/compositor/layer.h" | 13 #include "ui/compositor/layer.h" |
14 #include "ui/events/event.h" | 14 #include "ui/events/event.h" |
15 #include "ui/events/keycodes/keyboard_codes.h" | 15 #include "ui/events/keycodes/keyboard_codes.h" |
16 #include "ui/gfx/canvas.h" | 16 #include "ui/gfx/canvas.h" |
17 #include "ui/views/focus/view_storage.h" | 17 #include "ui/views/focus/view_storage.h" |
18 #include "ui/views/layout/fill_layout.h" | 18 #include "ui/views/layout/fill_layout.h" |
| 19 #include "ui/views/views_switches.h" |
19 #include "ui/views/widget/widget.h" | 20 #include "ui/views/widget/widget.h" |
20 #include "ui/views/widget/widget_delegate.h" | 21 #include "ui/views/widget/widget_delegate.h" |
21 #include "ui/views/widget/widget_deletion_observer.h" | 22 #include "ui/views/widget/widget_deletion_observer.h" |
22 | 23 |
23 #if defined(USE_AURA) | 24 #if defined(USE_AURA) |
24 #include "ui/base/cursor/cursor.h" | 25 #include "ui/base/cursor/cursor.h" |
25 #endif | 26 #endif |
26 | 27 |
27 namespace views { | 28 namespace views { |
28 namespace internal { | 29 namespace internal { |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 // events are not dispatched to any views. | 280 // events are not dispatched to any views. |
280 switch (event->type()) { | 281 switch (event->type()) { |
281 case ui::ET_GESTURE_SCROLL_UPDATE: | 282 case ui::ET_GESTURE_SCROLL_UPDATE: |
282 case ui::ET_GESTURE_SCROLL_END: | 283 case ui::ET_GESTURE_SCROLL_END: |
283 case ui::ET_SCROLL_FLING_START: | 284 case ui::ET_SCROLL_FLING_START: |
284 return; | 285 return; |
285 default: | 286 default: |
286 break; | 287 break; |
287 } | 288 } |
288 | 289 |
| 290 View* gesture_handler = NULL; |
| 291 if (views::switches::UseRectBasedTargeting()) { |
| 292 // TODO(tdanderson): Pass in the bounding box to GetEventHandlerForRect() |
| 293 // once crbug.com/313392 is resolved. |
| 294 gfx::Rect touch_rect(event->details().bounding_box()); |
| 295 touch_rect.set_origin(event->location()); |
| 296 touch_rect.Offset(-touch_rect.width() / 2, -touch_rect.height() / 2); |
| 297 gesture_handler = GetEventHandlerForRect(touch_rect); |
| 298 } else { |
| 299 gesture_handler = GetEventHandlerForPoint(event->location()); |
| 300 } |
| 301 |
289 // Walk up the tree until we find a view that wants the gesture event. | 302 // Walk up the tree until we find a view that wants the gesture event. |
290 for (gesture_handler_ = GetEventHandlerForPoint(event->location()); | 303 for (gesture_handler_ = gesture_handler; |
291 gesture_handler_ && (gesture_handler_ != this); | 304 gesture_handler_ && (gesture_handler_ != this); |
292 gesture_handler_ = gesture_handler_->parent()) { | 305 gesture_handler_ = gesture_handler_->parent()) { |
293 if (!gesture_handler_->enabled()) { | 306 if (!gesture_handler_->enabled()) { |
294 // Disabled views eat events but are treated as not handled. | 307 // Disabled views eat events but are treated as not handled. |
295 return; | 308 return; |
296 } | 309 } |
297 | 310 |
298 // See if this view wants to handle the Gesture. | 311 // See if this view wants to handle the Gesture. |
299 ui::GestureEvent gesture_event(*event, static_cast<View*>(this), | 312 ui::GestureEvent gesture_event(*event, static_cast<View*>(this), |
300 gesture_handler_); | 313 gesture_handler_); |
301 DispatchEventToTarget(gesture_handler_, &gesture_event); | 314 DispatchEventToTarget(gesture_handler_, &gesture_event); |
302 | 315 |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 return; | 736 return; |
724 } | 737 } |
725 } | 738 } |
726 | 739 |
727 bool RootView::CanDispatchToTarget(ui::EventTarget* target) { | 740 bool RootView::CanDispatchToTarget(ui::EventTarget* target) { |
728 return event_dispatch_target_ == target; | 741 return event_dispatch_target_ == target; |
729 } | 742 } |
730 | 743 |
731 } // namespace internal | 744 } // namespace internal |
732 } // namespace views | 745 } // namespace views |
OLD | NEW |