11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/views/view_targeter.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/views/views_export.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace views {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace internal {
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass RootView;
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace internal
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass View;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass ViewTargeterDelegate;
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// A derived class of ViewTargeter that defines targeting logic for cases
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// needing to access the members of RootView. For example, when determining the
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// target of a gesture event, we need to know if a previous gesture has already
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// established the View to which all subsequent gestures should be targeted.
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass VIEWS_EXPORT RootViewTargeter : public ViewTargeter {
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  RootViewTargeter(ViewTargeterDelegate* delegate,
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                   internal::RootView* root_view);
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~RootViewTargeter();
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // ViewTargeter:
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual View* FindTargetForGestureEvent(
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      View* root,
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const ui::GestureEvent& gesture) OVERRIDE;
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ui::EventTarget* FindNextBestTargetForGestureEvent(
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ui::EventTarget* previous_target,
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      const ui::GestureEvent& gesture) OVERRIDE;
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // A pointer to the RootView on which |this| is installed.
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  internal::RootView* root_view_;
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DISALLOW_COPY_AND_ASSIGN(RootViewTargeter);
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace views
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // UI_VIEWS_WIDGET_ROOT_VIEW_TARGETER_H_
48