From d097cb1c94f015d66d82c56b10b71306588fa5dd Mon Sep 17 00:00:00 2001 From: Ethan Brierley Date: Sat, 20 Apr 2024 10:21:37 +0100 Subject: [PATCH] feat(power): only ask for user confirmation on destructive actions --- cosmic-applet-power/src/lib.rs | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/cosmic-applet-power/src/lib.rs b/cosmic-applet-power/src/lib.rs index efffe423..eee7c2a6 100644 --- a/cosmic-applet-power/src/lib.rs +++ b/cosmic-applet-power/src/lib.rs @@ -164,17 +164,22 @@ impl cosmic::Application for Power { Command::none() } Message::Action(action) => { - let id = window::Id::unique(); - self.action_to_confirm = Some((id, action, COUNTDOWN_LENGTH)); - get_layer_surface(SctkLayerSurfaceSettings { - id, - keyboard_interactivity: KeyboardInteractivity::None, - anchor: Anchor::all(), - namespace: "dialog".into(), - size: Some((None, None)), - size_limits: Limits::NONE.min_width(1.0).min_height(1.0), - ..Default::default() - }) + // Ask for user confirmation of non-destructive actions only + if matches!(action, PowerAction::Lock | PowerAction::Suspend) { + action.perform() + } else { + let id = window::Id::unique(); + self.action_to_confirm = Some((id, action, COUNTDOWN_LENGTH)); + get_layer_surface(SctkLayerSurfaceSettings { + id, + keyboard_interactivity: KeyboardInteractivity::None, + anchor: Anchor::all(), + namespace: "dialog".into(), + size: Some((None, None)), + size_limits: Limits::NONE.min_width(1.0).min_height(1.0), + ..Default::default() + }) + } } Message::Zbus(result) => { if let Err(e) = result {