diff options
| author | Vaxry <vaxry@vaxry.net> | 2026-04-29 17:25:21 +0100 |
|---|---|---|
| committer | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2026-04-29 22:05:32 +0100 |
| commit | 55a1611fd8150d7bb8d1b6e2b8cc95ffccf31ea2 (patch) | |
| tree | 88ae2d9bcee6d327c6af97e2afb920020f16432b /src/desktop/view/Window.hpp | |
| parent | a92dae5af7bad3af53f6d6b689d71ee900077569 (diff) | |
desktop/window: expand hidden into proper states
Diffstat (limited to 'src/desktop/view/Window.hpp')
| -rw-r--r-- | src/desktop/view/Window.hpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/desktop/view/Window.hpp b/src/desktop/view/Window.hpp index 0a468ee3..a5d89c58 100644 --- a/src/desktop/view/Window.hpp +++ b/src/desktop/view/Window.hpp @@ -89,6 +89,13 @@ namespace Desktop::View { WINDOW_ALPHA_LAST, }; + enum eWindowInputBlockReason : uint32_t { + INPUT_BLOCK_NONE = 0, + INPUT_BLOCK_GROUP_INACTIVE = 1 << 0, + INPUT_BLOCK_MONOCLE_INACTIVE = 1 << 1, + INPUT_BLOCK_BELOW_FULLSCREEN = 1 << 2, + }; + struct SWindowActiveEvent { PHLWINDOW window = nullptr; eFocusReason reason = sc<eFocusReason>(0) /* unknown */; @@ -304,13 +311,19 @@ namespace Desktop::View { void onUnmap(); void onMap(); void setHidden(bool hidden); - bool isHidden(); + bool isHidden() const; + void setInputBlocked(eWindowInputBlockReason reason, bool blocked); + bool isInputBlocked() const; + bool isInputBlocked(eWindowInputBlockReason reason) const; + bool acceptsInput() const; PHLANIMVAR<float>& alpha(eWindowAlpha type); const PHLANIMVAR<float>& alpha(eWindowAlpha type) const; float alphaValue(eWindowAlpha type) const; float alphaGoal(eWindowAlpha type) const; float alphaTotal() const; float alphaTotalWithout(eWindowAlpha type) const; + float effectiveAlpha() const; + bool visibleByAlpha() const; void updateDecorationValues(); SBoxExtents getFullWindowReservedArea(); Vector2D middle(); @@ -414,9 +427,10 @@ namespace Desktop::View { void unmanagedSetGeometry(); // For hidden windows and stuff - bool m_hidden = false; - bool m_suspended = false; - WORKSPACEID m_lastWorkspace = WORKSPACE_INVALID; + bool m_hidden = false; + bool m_suspended = false; + WORKSPACEID m_lastWorkspace = WORKSPACE_INVALID; + uint32_t m_inputBlockReasons = INPUT_BLOCK_NONE; }; inline bool valid(PHLWINDOW w) { |
