scoped_window_targeter.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. #ifndef UI_AURA_SCOPED_WINDOW_TARGETER_H_
  5. #define UI_AURA_SCOPED_WINDOW_TARGETER_H_
  6. #include <memory>
  7. #include "base/memory/raw_ptr.h"
  8. #include "ui/aura/window_observer.h"
  9. namespace aura {
  10. class Window;
  11. class WindowTargeter;
  12. // ScopedWindowTargeter is used to temporarily replace the event-targeter for a
  13. // window. Upon construction, it installs a new targeter on the window, and upon
  14. // destruction, it restores the previous event-targeter on the window.
  15. class AURA_EXPORT ScopedWindowTargeter : public WindowObserver {
  16. public:
  17. ScopedWindowTargeter(Window* window,
  18. std::unique_ptr<WindowTargeter> new_targeter);
  19. ScopedWindowTargeter(const ScopedWindowTargeter&) = delete;
  20. ScopedWindowTargeter& operator=(const ScopedWindowTargeter&) = delete;
  21. ~ScopedWindowTargeter() override;
  22. WindowTargeter* old_targeter() { return old_targeter_.get(); }
  23. private:
  24. // WindowObserver:
  25. void OnWindowDestroyed(Window* window) override;
  26. raw_ptr<Window> window_;
  27. std::unique_ptr<WindowTargeter> old_targeter_;
  28. };
  29. } // namespace aura
  30. #endif // UI_AURA_SCOPED_WINDOW_TARGETER_H_