aboutsummaryrefslogtreecommitdiff
path: root/src/window
diff options
context:
space:
mode:
Diffstat (limited to 'src/window')
-rw-r--r--src/window/mapped.rs18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/window/mapped.rs b/src/window/mapped.rs
index 6db13ad9..ae5204ea 100644
--- a/src/window/mapped.rs
+++ b/src/window/mapped.rs
@@ -17,6 +17,7 @@ use smithay::wayland::compositor::{remove_pre_commit_hook, with_states, HookId};
use smithay::wayland::shell::xdg::{SurfaceCachedState, ToplevelSurface};
use super::{ResolvedWindowRules, WindowRef};
+use crate::handlers::KdeDecorationsModeState;
use crate::layout::{
InteractiveResizeData, LayoutElement, LayoutElementRenderElement, LayoutElementRenderSnapshot,
};
@@ -422,8 +423,21 @@ impl LayoutElement for Mapped {
}
fn has_ssd(&self) -> bool {
- self.toplevel().current_state().decoration_mode
- == Some(zxdg_toplevel_decoration_v1::Mode::ServerSide)
+ let toplevel = self.toplevel();
+ let mode = toplevel.current_state().decoration_mode;
+
+ match mode {
+ Some(zxdg_toplevel_decoration_v1::Mode::ServerSide) => true,
+ // Check KDE decorations when XDG are not in use.
+ None => with_states(toplevel.wl_surface(), |states| {
+ states
+ .data_map
+ .get::<KdeDecorationsModeState>()
+ .map(KdeDecorationsModeState::is_server)
+ == Some(true)
+ }),
+ _ => false,
+ }
}
fn output_enter(&self, output: &Output) {