From 3160fc1bd8a18b1555fcc4755d403198e432a1fb Mon Sep 17 00:00:00 2001 From: Josh Megnauth Date: Fri, 24 May 2024 00:20:23 -0400 Subject: [PATCH] fix: Disallow disabling only active display Closes: #299 --- cosmic-settings/src/pages/display/mod.rs | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/cosmic-settings/src/pages/display/mod.rs b/cosmic-settings/src/pages/display/mod.rs index f8a42ac..2094473 100644 --- a/cosmic-settings/src/pages/display/mod.rs +++ b/cosmic-settings/src/pages/display/mod.rs @@ -469,12 +469,23 @@ impl Page { .button_alignment(Alignment::Center) .on_activate(Message::Display); - let display_enable = list_column().add(cosmic::widget::settings::item( - &*text::DISPLAY_ENABLE, - toggler(None, active_output.enabled, Message::DisplayToggle), - )); + let display_enable = (self + // Don't allow disabling display if it's the only active + .list + .outputs + .values() + .filter(|display| display.enabled) + .count() + > 1 + || !active_output.enabled) + .then(|| { + list_column().add(cosmic::widget::settings::item( + &*text::DISPLAY_ENABLE, + toggler(None, active_output.enabled, Message::DisplayToggle), + )) + }); - content = content.push(display_switcher).push(display_enable); + content = content.push(display_switcher).push_maybe(display_enable); } content