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 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_ 6 #define UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_ 7 8 #include "ui/views/view_targeter.h" 9 #include "ui/views/views_export.h" 10 11 namespace views { 12 13 namespace internal { 14 class RootView; 15 } // namespace internal 16 17 class View; 18 class ViewTargeterDelegate; 19 20 // A derived class of ViewTargeter that defines targeting logic for cases 21 // needing to access the members of RootView. For example, when determining the 22 // target of a gesture event, we need to know if a previous gesture has already 23 // established the View to which all subsequent gestures should be targeted. 24 class VIEWS_EXPORT RootViewTargeter : public ViewTargeter { 25 public: 26 RootViewTargeter(ViewTargeterDelegate* delegate, 27 internal::RootView* root_view); 28 virtual ~RootViewTargeter(); 29 30 private: 31 // ViewTargeter: 32 virtual View* FindTargetForGestureEvent( 33 View* root, 34 const ui::GestureEvent& gesture) OVERRIDE; 35 virtual ui::EventTarget* FindNextBestTargetForGestureEvent( 36 ui::EventTarget* previous_target, 37 const ui::GestureEvent& gesture) OVERRIDE; 38 39 // A pointer to the RootView on which |this| is installed. 40 internal::RootView* root_view_; 41 42 DISALLOW_COPY_AND_ASSIGN(RootViewTargeter); 43 }; 44 45 } // namespace views 46 47 #endif // UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_ 48