diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-31 01:35:41 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-31 01:35:41 +0000 |
commit | 95f642cb2b4e39d50b145e09327cc581657389ac (patch) | |
tree | 89a177d4170ecf23c24e4d380f156aad15865167 /ui/aura/scoped_window_targeter.h | |
parent | 7f9cae31f4a3ce431c7abbb5977f56f0065c69de (diff) | |
download | chromium_src-95f642cb2b4e39d50b145e09327cc581657389ac.zip chromium_src-95f642cb2b4e39d50b145e09327cc581657389ac.tar.gz chromium_src-95f642cb2b4e39d50b145e09327cc581657389ac.tar.bz2 |
aura: Introduce ScopedWindowTargeter.
It is sometimes necessary to temporary replace the event-targeter for a window,
and restore the previous event-targeter after some time. To that end, this patch
introduces ScopedWindowTargeter.
BUG=318879, 338671
R=ben@chromium.org
Review URL: https://codereview.chromium.org/135543004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248101 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/aura/scoped_window_targeter.h')
-rw-r--r-- | ui/aura/scoped_window_targeter.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/ui/aura/scoped_window_targeter.h b/ui/aura/scoped_window_targeter.h new file mode 100644 index 0000000..ce65092 --- /dev/null +++ b/ui/aura/scoped_window_targeter.h @@ -0,0 +1,42 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_AURA_SCOPED_WINDOW_TARGETER_H_ +#define UI_AURA_SCOPED_WINDOW_TARGETER_H_ + +#include "base/macros.h" +#include "base/memory/scoped_ptr.h" +#include "ui/aura/window_observer.h" + +namespace ui { +class EventTargeter; +} + +namespace aura { + +class Window; + +// ScopedWindowTargeter is used to temporarily replace the event-targeter for a +// window. Upon construction, it installs a new targeter on the window, and upon +// destruction, it restores the previous event-targeter on the window. +class AURA_EXPORT ScopedWindowTargeter : public WindowObserver { + public: + ScopedWindowTargeter(Window* window, + scoped_ptr<ui::EventTargeter> new_targeter); + + virtual ~ScopedWindowTargeter(); + + private: + // WindowObserver: + virtual void OnWindowDestroyed(Window* window) OVERRIDE; + + Window* window_; + scoped_ptr<ui::EventTargeter> old_targeter_; + + DISALLOW_COPY_AND_ASSIGN(ScopedWindowTargeter); +}; + +} // namespace aura + +#endif // UI_AURA_SCOPED_WINDOW_TARGETER_H_ |