scoped_window_targeter.cc 884 B

1234567891011121314151617181920212223242526272829303132333435
  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. #include "ui/aura/scoped_window_targeter.h"
  5. #include <utility>
  6. #include "ui/aura/window.h"
  7. #include "ui/aura/window_targeter.h"
  8. namespace aura {
  9. ScopedWindowTargeter::ScopedWindowTargeter(
  10. Window* window,
  11. std::unique_ptr<WindowTargeter> new_targeter)
  12. : window_(window),
  13. old_targeter_(window->SetEventTargeter(std::move(new_targeter))) {
  14. window_->AddObserver(this);
  15. }
  16. ScopedWindowTargeter::~ScopedWindowTargeter() {
  17. if (window_) {
  18. window_->RemoveObserver(this);
  19. window_->SetEventTargeter(std::move(old_targeter_));
  20. }
  21. }
  22. void ScopedWindowTargeter::OnWindowDestroyed(Window* window) {
  23. CHECK_EQ(window_, window);
  24. window_ = nullptr;
  25. old_targeter_.reset();
  26. }
  27. } // namespace aura