Fix dialog placement and decorations and compact confirmation dialogs

This commit is contained in:
Samuel Onoja committed 2026-10-01 14:36:33 +01:00
1 parent 24e23e2903
commit 91d2388d12
10 files changed
+83 -57

No files matched your search

+3 -18
View File
@@ -282,7 +282,7 @@ fn check_grab(seat: &Seat<Ferese>, surface: &WlSurface, serial: Serial) -> Optio
impl XdgDecorationHandler for Ferese {
fn new_decoration(&mut self, toplevel: ToplevelSurface) {
let mode = self.decoration_mode_for(&toplevel);
let mode = Mode::ServerSide;
toplevel.with_pending_state(|state| state.decoration_mode = Some(mode));
// Wait for the initial surface commit so app-id and saved floating
@@ -294,31 +294,16 @@ impl XdgDecorationHandler for Ferese {
}
}
fn request_mode(&mut self, toplevel: ToplevelSurface, _mode: Mode) {
let mode = self.decoration_mode_for(&toplevel);
fn request_mode(&mut self, toplevel: ToplevelSurface, mode: Mode) {
set_decoration_mode(&toplevel, mode);
}
fn unset_mode(&mut self, toplevel: ToplevelSurface) {
let mode = self.decoration_mode_for(&toplevel);
let mode = Mode::ServerSide;
set_decoration_mode(&toplevel, mode);
}
}
impl Ferese {
fn decoration_mode_for(&self, toplevel: &ToplevelSurface) -> Mode {
self.space
.elements()
.find(|window| {
window
.toplevel()
.is_some_and(|candidate| candidate.wl_surface() == toplevel.wl_surface())
})
.filter(|window| self.is_floating_window(window))
.map_or(Mode::ServerSide, |_| Mode::ClientSide)
}
}
fn set_decoration_mode(toplevel: &ToplevelSurface, mode: Mode) {
toplevel.with_pending_state(|state| state.decoration_mode = Some(mode));
if initial_configure_sent(toplevel) {