blob: 14c3e89d651da0f64f5a706b71c2a907f08d85c2 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// 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_AURA_SCOPED_WINDOW_TARGETER_H_
6#define UI_AURA_SCOPED_WINDOW_TARGETER_H_
7
8#include "base/macros.h"
9#include "base/memory/scoped_ptr.h"
10#include "ui/aura/window_observer.h"
11
12namespace ui {
13class EventTargeter;
14}
15
16namespace aura {
17
18class Window;
19
20// ScopedWindowTargeter is used to temporarily replace the event-targeter for a
21// window. Upon construction, it installs a new targeter on the window, and upon
22// destruction, it restores the previous event-targeter on the window.
23class AURA_EXPORT ScopedWindowTargeter : public WindowObserver {
24 public:
25 ScopedWindowTargeter(Window* window,
26 scoped_ptr<ui::EventTargeter> new_targeter);
27
28 virtual ~ScopedWindowTargeter();
29
30 ui::EventTargeter* old_targeter() {
31 return old_targeter_.get();
32 }
33
34 private:
35 // WindowObserver:
James Robinsone2ac7e82014-10-15 13:21:59 -070036 virtual void OnWindowDestroyed(Window* window) override;
James Robinson646469d2014-10-03 15:33:28 -070037
38 Window* window_;
39 scoped_ptr<ui::EventTargeter> old_targeter_;
40
41 DISALLOW_COPY_AND_ASSIGN(ScopedWindowTargeter);
42};
43
44} // namespace aura
45
46#endif // UI_AURA_SCOPED_WINDOW_TARGETER_H_