diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-02-22 17:28:02 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-02-22 17:28:02 +0800 |
| commit | 7086b0731f9bf172c0550d1fe71daa88db91f935 (patch) | |
| tree | d842417f430db4f2f43c44c24d1c3398d42e60fd /src/desktop/view/Group.cpp | |
| parent | 0eb4755a3ed1980c15453fbe73d4ad36dea5da4b (diff) | |
group: disband_on_empty config
Diffstat (limited to 'src/desktop/view/Group.cpp')
| -rw-r--r-- | src/desktop/view/Group.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/desktop/view/Group.cpp b/src/desktop/view/Group.cpp index 67a89986..d017e8f4 100644 --- a/src/desktop/view/Group.cpp +++ b/src/desktop/view/Group.cpp @@ -121,6 +121,8 @@ void CGroup::add(PHLWINDOW w) { } void CGroup::remove(PHLWINDOW w) { + static auto DISBAND_ON_EMPTY = CConfigValue<Hyprlang::INT>("group:disband_on_empty"); + std::optional<size_t> idx; for (size_t i = 0; i < m_windows.size(); ++i) { if (m_windows.at(i) == w) { @@ -158,6 +160,11 @@ void CGroup::remove(PHLWINDOW w) { // do this here: otherwise the new current is hidden and workspace rules get wrong data if (!REMOVING_GROUP) w->m_target->assignToSpace(m_target->space()); + + if (*DISBAND_ON_EMPTY && m_windows.size() == 1) { + destroy(); + return; + } } void CGroup::moveCurrent(bool next) { |
