Home | History | Annotate | Download | only in widget
      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