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