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 12 namespace wm { 13 14 // An EventTargeter for a container window that uses a slightly larger 15 // hit-target region for easier resize. 16 class 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