blob: c37c7d9db8a100fa48b67ab63e01129bbb543d67 [file] [log] [blame]
Avi Drissman3e1a26c2022-09-15 20:26:031// Copyright 2019 The Chromium Authors
Xiaoqian Dai563f0202019-10-04 22:01:102// 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_EVENT_TARGETING_BLOCKER_H_
6#define UI_AURA_SCOPED_WINDOW_EVENT_TARGETING_BLOCKER_H_
7
Keishi Hattori0e45c022021-11-27 09:25:528#include "base/memory/raw_ptr.h"
Xiaoqian Dai563f0202019-10-04 22:01:109#include "ui/aura/aura_export.h"
10#include "ui/aura/window_observer.h"
11
12namespace aura {
13
14class Window;
15
16// Temporarily blocks the event targeting by setting kNone targeting policy to
17// |window_|. The original event targeting policy will be restored if all
18// targeting blockers are removed from |window_|.
19class AURA_EXPORT ScopedWindowEventTargetingBlocker : public WindowObserver {
20 public:
21 explicit ScopedWindowEventTargetingBlocker(Window* window);
Peter Boströmc8c12352021-09-21 23:37:1522
23 ScopedWindowEventTargetingBlocker(const ScopedWindowEventTargetingBlocker&) =
24 delete;
25 ScopedWindowEventTargetingBlocker& operator=(
26 const ScopedWindowEventTargetingBlocker&) = delete;
27
Xiaoqian Dai563f0202019-10-04 22:01:1028 ~ScopedWindowEventTargetingBlocker() override;
29
30 // WindowObserver:
31 void OnWindowDestroying(Window* window) override;
32
Mitsuru Oshimac2d394b2025-04-03 21:06:1633 aura::Window* window() { return window_.get(); }
34
Xiaoqian Dai563f0202019-10-04 22:01:1035 private:
Keishi Hattori0e45c022021-11-27 09:25:5236 raw_ptr<Window> window_;
Xiaoqian Dai563f0202019-10-04 22:01:1037};
38
39} // namespace aura
40
41#endif // UI_AURA_SCOPED_WINDOW_EVENT_TARGETING_BLOCKER_H_