diff --git a/Userland/Services/WindowServer/Window.cpp b/Userland/Services/WindowServer/Window.cpp index 752bf55dec4..e8a0d11d540 100644 --- a/Userland/Services/WindowServer/Window.cpp +++ b/Userland/Services/WindowServer/Window.cpp @@ -949,6 +949,8 @@ bool Window::hit_test(const Gfx::IntPoint& point, bool include_frame) const return frame().hit_test(point); return false; } + if (!m_hit_testing_enabled) + return false; u8 threshold = alpha_hit_threshold() * 255; if (threshold == 0 || !m_backing_store || !m_backing_store->has_alpha_channel()) return true; diff --git a/Userland/Services/WindowServer/Window.h b/Userland/Services/WindowServer/Window.h index 4b26d6d653b..456d6dac4f2 100644 --- a/Userland/Services/WindowServer/Window.h +++ b/Userland/Services/WindowServer/Window.h @@ -146,6 +146,10 @@ public: float opacity() const { return m_opacity; } void set_opacity(float); + void set_hit_testing_enabled(bool value) + { + m_hit_testing_enabled = value; + } float alpha_hit_threshold() const { return m_alpha_hit_threshold; } void set_alpha_hit_threshold(float threshold) { @@ -379,6 +383,7 @@ private: bool m_invalidated { true }; bool m_invalidated_all { true }; bool m_invalidated_frame { true }; + bool m_hit_testing_enabled { true }; WindowTileType m_tiled { WindowTileType::None }; Gfx::IntRect m_untiled_rect; bool m_occluded { false };