Index: ui/views/widget/root_view.cc |
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc |
index c7166e22e8c2894df63cb278485413735bfd5a3f..5d52e8d62c2b18d1e170a1fb4a45e0f2b5b56018 100644 |
--- a/ui/views/widget/root_view.cc |
+++ b/ui/views/widget/root_view.cc |
@@ -262,7 +262,7 @@ ui::EventDispatchDetails RootView::OnEventFromSource(ui::Event* event) { |
else if (event->IsTouchEvent()) |
NOTREACHED() << "Touch events should not be sent to RootView."; |
else if (event->IsGestureEvent()) |
- DispatchGestureEvent(static_cast<ui::GestureEvent*>(event)); |
+ DispatchGestureEvent(event->AsGestureEvent()); |
else if (event->IsMouseEvent()) |
NOTREACHED() << "Should not be called with a MouseEvent."; |
else |
@@ -556,6 +556,65 @@ void RootView::UpdateParentLayer() { |
//////////////////////////////////////////////////////////////////////////////// |
// RootView, protected: |
+void RootView::ViewHierarchyChanged( |
+ const ViewHierarchyChangedDetails& details) { |
+ widget_->ViewHierarchyChanged(details); |
+ |
+ if (!details.is_add) { |
+ if (!explicit_mouse_handler_ && mouse_pressed_handler_ == details.child) |
+ mouse_pressed_handler_ = NULL; |
+ if (mouse_move_handler_ == details.child) |
+ mouse_move_handler_ = NULL; |
+ if (gesture_handler_ == details.child) |
+ gesture_handler_ = NULL; |
+ if (scroll_gesture_handler_ == details.child) |
+ scroll_gesture_handler_ = NULL; |
+ if (event_dispatch_target_ == details.child) |
+ event_dispatch_target_ = NULL; |
+ if (old_dispatch_target_ == details.child) |
+ old_dispatch_target_ = NULL; |
+ } |
+} |
+ |
+void RootView::VisibilityChanged(View* /*starting_from*/, bool is_visible) { |
+ if (!is_visible) { |
+ // When the root view is being hidden (e.g. when widget is minimized) |
+ // handlers are reset, so that after it is reshown, events are not captured |
+ // by old handlers. |
+ explicit_mouse_handler_ = false; |
+ mouse_pressed_handler_ = NULL; |
+ mouse_move_handler_ = NULL; |
+ gesture_handler_ = NULL; |
+ scroll_gesture_handler_ = NULL; |
+ event_dispatch_target_ = NULL; |
+ old_dispatch_target_ = NULL; |
+ } |
+} |
+ |
+void RootView::OnPaint(gfx::Canvas* canvas) { |
+ if (!layer() || !layer()->fills_bounds_opaquely()) |
+ canvas->DrawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); |
+ |
+ View::OnPaint(canvas); |
+} |
+ |
+gfx::Vector2d RootView::CalculateOffsetToAncestorWithLayer( |
+ ui::Layer** layer_parent) { |
+ gfx::Vector2d offset(View::CalculateOffsetToAncestorWithLayer(layer_parent)); |
+ if (!layer() && layer_parent) |
+ *layer_parent = widget_->GetLayer(); |
+ return offset; |
+} |
+ |
+View::DragInfo* RootView::GetDragInfo() { |
+ return &drag_info_; |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// RootView, private: |
+ |
+// Input ----------------------------------------------------------------------- |
+ |
void RootView::DispatchGestureEvent(ui::GestureEvent* event) { |
if (gesture_handler_) { |
// |gesture_handler_| (or |scroll_gesture_handler_|) can be deleted during |
@@ -692,65 +751,6 @@ void RootView::DispatchGestureEvent(ui::GestureEvent* event) { |
gesture_handler_ = NULL; |
} |
-void RootView::ViewHierarchyChanged( |
- const ViewHierarchyChangedDetails& details) { |
- widget_->ViewHierarchyChanged(details); |
- |
- if (!details.is_add) { |
- if (!explicit_mouse_handler_ && mouse_pressed_handler_ == details.child) |
- mouse_pressed_handler_ = NULL; |
- if (mouse_move_handler_ == details.child) |
- mouse_move_handler_ = NULL; |
- if (gesture_handler_ == details.child) |
- gesture_handler_ = NULL; |
- if (scroll_gesture_handler_ == details.child) |
- scroll_gesture_handler_ = NULL; |
- if (event_dispatch_target_ == details.child) |
- event_dispatch_target_ = NULL; |
- if (old_dispatch_target_ == details.child) |
- old_dispatch_target_ = NULL; |
- } |
-} |
- |
-void RootView::VisibilityChanged(View* /*starting_from*/, bool is_visible) { |
- if (!is_visible) { |
- // When the root view is being hidden (e.g. when widget is minimized) |
- // handlers are reset, so that after it is reshown, events are not captured |
- // by old handlers. |
- explicit_mouse_handler_ = false; |
- mouse_pressed_handler_ = NULL; |
- mouse_move_handler_ = NULL; |
- gesture_handler_ = NULL; |
- scroll_gesture_handler_ = NULL; |
- event_dispatch_target_ = NULL; |
- old_dispatch_target_ = NULL; |
- } |
-} |
- |
-void RootView::OnPaint(gfx::Canvas* canvas) { |
- if (!layer() || !layer()->fills_bounds_opaquely()) |
- canvas->DrawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); |
- |
- View::OnPaint(canvas); |
-} |
- |
-gfx::Vector2d RootView::CalculateOffsetToAncestorWithLayer( |
- ui::Layer** layer_parent) { |
- gfx::Vector2d offset(View::CalculateOffsetToAncestorWithLayer(layer_parent)); |
- if (!layer() && layer_parent) |
- *layer_parent = widget_->GetLayer(); |
- return offset; |
-} |
- |
-View::DragInfo* RootView::GetDragInfo() { |
- return &drag_info_; |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// RootView, private: |
- |
-// Input ----------------------------------------------------------------------- |
- |
void RootView::UpdateCursor(const ui::MouseEvent& event) { |
if (!(event.flags() & ui::EF_IS_NON_CLIENT)) { |
View* v = GetEventHandlerForPoint(event.location()); |