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