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_WM_CORE_EASY_RESIZE_WINDOW_TARGETER_H_ 6#define UI_WM_CORE_EASY_RESIZE_WINDOW_TARGETER_H_ 7 8#include "ui/aura/window_targeter.h" 9#include "ui/gfx/geometry/insets.h" 10#include "ui/wm/wm_export.h" 11 12namespace wm { 13 14// An EventTargeter for a container window that uses a slightly larger 15// hit-target region for easier resize. 16class WM_EXPORT EasyResizeWindowTargeter : public aura::WindowTargeter { 17 public: 18 // |container| window is the owner of this targeter. 19 EasyResizeWindowTargeter(aura::Window* container, 20 const gfx::Insets& mouse_extend, 21 const gfx::Insets& touch_extend); 22 23 virtual ~EasyResizeWindowTargeter(); 24 25 protected: 26 void set_mouse_extend(const gfx::Insets& mouse_extend) { 27 mouse_extend_ = mouse_extend; 28 } 29 30 void set_touch_extend(const gfx::Insets& touch_extend) { 31 touch_extend_ = touch_extend; 32 } 33 34 // ui::EventTargeter: 35 virtual bool EventLocationInsideBounds( 36 ui::EventTarget* target, 37 const ui::LocatedEvent& event) const OVERRIDE; 38 39 private: 40 // Returns true if the hit testing (EventLocationInsideBounds()) should use 41 // the extended bounds. 42 bool ShouldUseExtendedBounds(const aura::Window* window) const; 43 44 aura::Window* container_; 45 gfx::Insets mouse_extend_; 46 gfx::Insets touch_extend_; 47 48 DISALLOW_COPY_AND_ASSIGN(EasyResizeWindowTargeter); 49}; 50 51} // namespace wm 52 53#endif // UI_WM_CORE_EASY_RESIZE_WINDOW_TARGETER_H_ 54