From 43e2cf14d2994299298b05fc194110e875aeecf4 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sun, 7 Jan 2024 09:41:56 +0400 Subject: Be more insistent on CSD by default By default I want CSD so that people don't necessarily have to learn all of the shortcuts right away, and can at least use the X to close windows. --- src/handlers/xdg_shell.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/handlers/xdg_shell.rs b/src/handlers/xdg_shell.rs index f99aa82b..3848b7e8 100644 --- a/src/handlers/xdg_shell.rs +++ b/src/handlers/xdg_shell.rs @@ -193,16 +193,25 @@ delegate_xdg_shell!(State); impl XdgDecorationHandler for State { fn new_decoration(&mut self, toplevel: ToplevelSurface) { let mode = if self.niri.config.borrow().prefer_no_csd { - Some(zxdg_toplevel_decoration_v1::Mode::ServerSide) + zxdg_toplevel_decoration_v1::Mode::ServerSide } else { - None + zxdg_toplevel_decoration_v1::Mode::ClientSide }; toplevel.with_pending_state(|state| { - state.decoration_mode = mode; + state.decoration_mode = Some(mode); }); } - fn request_mode(&mut self, toplevel: ToplevelSurface, mode: zxdg_toplevel_decoration_v1::Mode) { + fn request_mode( + &mut self, + toplevel: ToplevelSurface, + mut mode: zxdg_toplevel_decoration_v1::Mode, + ) { + // If prefer-no-csd is unset, then insist on CSD. + if !self.niri.config.borrow().prefer_no_csd { + mode = zxdg_toplevel_decoration_v1::Mode::ClientSide; + } + toplevel.with_pending_state(|state| { state.decoration_mode = Some(mode); }); @@ -215,12 +224,12 @@ impl XdgDecorationHandler for State { fn unset_mode(&mut self, toplevel: ToplevelSurface) { let mode = if self.niri.config.borrow().prefer_no_csd { - Some(zxdg_toplevel_decoration_v1::Mode::ServerSide) + zxdg_toplevel_decoration_v1::Mode::ServerSide } else { - None + zxdg_toplevel_decoration_v1::Mode::ClientSide }; toplevel.with_pending_state(|state| { - state.decoration_mode = mode; + state.decoration_mode = Some(mode); }); // Only send configure if it's non-initial. -- cgit