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 ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_ 6#define ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_ 7 8#include "ash/wm/window_state_observer.h" 9#include "ui/aura/window_observer.h" 10#include "ui/aura/window_targeter.h" 11#include "ui/gfx/geometry/insets.h" 12 13namespace ash { 14 15class ImmersiveFullscreenController; 16 17// To allow easy resize, the resize handles should slightly overlap the content 18// area of non-maximized and non-fullscreen windows. For immersive fullscreen 19// windows, this targeter makes sure that touch-events towards the top of the 20// screen are targeted to the window itself (instead of a child window that may 21// otherwise have been targeted) when the top-of-window views are not revealed. 22class ResizeHandleWindowTargeter : public wm::WindowStateObserver, 23 public aura::WindowObserver, 24 public aura::WindowTargeter { 25 public: 26 ResizeHandleWindowTargeter(aura::Window* window, 27 ImmersiveFullscreenController* immersive); 28 virtual ~ResizeHandleWindowTargeter(); 29 30 private: 31 // wm::WindowStateObserver: 32 virtual void OnPostWindowStateTypeChange( 33 wm::WindowState* window_state, 34 wm::WindowStateType old_type) OVERRIDE; 35 // aura::WindowObserver: 36 virtual void OnWindowDestroying(aura::Window* window) OVERRIDE; 37 38 // aura::WindowTargeter: 39 virtual ui::EventTarget* FindTargetForLocatedEvent( 40 ui::EventTarget* root, 41 ui::LocatedEvent* event) OVERRIDE; 42 virtual bool SubtreeShouldBeExploredForEvent( 43 ui::EventTarget* target, 44 const ui::LocatedEvent& event) OVERRIDE; 45 46 // The targeter does not take ownership of |window_| or 47 // |immersive_controller_|. 48 aura::Window* window_; 49 gfx::Insets frame_border_inset_; 50 ImmersiveFullscreenController* immersive_controller_; 51 52 DISALLOW_COPY_AND_ASSIGN(ResizeHandleWindowTargeter); 53}; 54 55} // namespace ash 56 57#endif // ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_ 58