Apply window rules earlier

Fixes winit applications getting a wl_shm_pool protocol error

Longer explanation: It seems if you immediately change a winit window's decoration mode after it binds xdg-decoration then winit no likey and it requests a shm buffer with 0 width leading to a protocol error. If the decoration window rule is applied earlier this doesn't happen
This commit is contained in:
Ottatop 2024-06-24 12:33:28 -05:00
parent 8d0da8ccfc
commit 4ecf1c2e71
2 changed files with 4 additions and 10 deletions

View file

@ -206,9 +206,6 @@ impl CompositorHandler for State {
let output = self.pinnacle.focused_output().cloned();
if let Some(output) = output.as_ref() {
tracing::debug!("Placing toplevel");
unmapped_window.place_on_output(output);
output.with_state_mut(|state| {
state.focus_stack.set_focus(unmapped_window.clone())
});
@ -223,8 +220,6 @@ impl CompositorHandler for State {
self.pinnacle.raise_window(unmapped_window.clone(), true);
self.pinnacle.apply_window_rules(&unmapped_window);
if let Some(focused_output) = output {
if unmapped_window.is_on_active_tag() {
self.update_keyboard_focus(&focused_output);
@ -243,6 +238,10 @@ impl CompositorHandler for State {
}
}
} else {
if let Some(output) = self.pinnacle.focused_output().cloned() {
unmapped_window.place_on_output(&output);
}
self.pinnacle.apply_window_rules(&unmapped_window);
// Still unmapped
unmapped_window.on_commit();
self.pinnacle.ensure_initial_configure(surface);

View file

@ -581,11 +581,6 @@ mod output {
local focus_stack = Pinnacle.output.get_focused():keyboard_focus_stack()
assert(#focus_stack == 5, "focus stack len != 5")
print(focus_stack[1].id)
print(focus_stack[2].id)
print(focus_stack[3].id)
print(focus_stack[4].id)
print(focus_stack[5].id)
assert(focus_stack[1].id == 0, "focus stack at 1 id != 0")
assert(focus_stack[2].id == 1, "focus stack at 2 id != 1")