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_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 12 namespace ui { 13 class EventTargeter; 14 } 15 16 namespace aura { 17 18 class 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. 23 class 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: 36 virtual void OnWindowDestroyed(Window* window) OVERRIDE; 37 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_ 47