atagen

monolith

public
Star0
Watch0

Commit 73e675f1b2ac

tarball

atagen <boss@atagen.co>2026-10-19 10:59 UTC

2 files changed+5-28
windows: remove realign

The Space origin fix places elements at their layout rect, so relocating a window's input region on every commit never finds anything to move.
Modified file: crates/monolith/src/commit.rs+4 additions−5 deletions
@@ -77,11 +77,10 @@ impl CompositorHandler for State {
7777 window.on_commit();
7878 }
7979 self.count_commit(&root);
80- if let Some(id) = self.window_id(&root) {
81- self.realign(id);
82- if self.services.captures.wants_damage() {
83- self.services.captures.window_damaged(id);
84- }
80+ if let Some(id) = self.window_id(&root)
81+ && self.services.captures.wants_damage()
82+ {
83+ self.services.captures.window_damaged(id);
8584 }
8685 }
8786 if let Some(i) = self
Modified file: crates/monolith/src/windows.rs+1 additions−23 deletions
@@ -7,7 +7,7 @@ use smithay::reexports::calloop::timer::{TimeoutAction, Timer};
77 use smithay::reexports::wayland_protocols::xdg::shell::server::xdg_toplevel::State as XdgState;
88 use smithay::reexports::wayland_server::protocol::wl_output::WlOutput;
99 use smithay::reexports::wayland_server::protocol::wl_surface::WlSurface;
10-use smithay::utils::{Logical, Point, Rectangle, Serial};
10+use smithay::utils::{Logical, Rectangle, Serial};
1111 use smithay::wayland::compositor::with_states;
1212 use smithay::wayland::shell::xdg::XdgToplevelSurfaceData;
1313 use std::time::Duration;
@@ -371,28 +371,6 @@ impl State {
371371 }
372372 }
373373
374- /// Moves a mapped window's input region to follow its window geometry.
375- /// GTK drops its shadow margins once told it is tiled, shifting the
376- /// geometry after `apply_layout` placed it, so clicks landed a shadow's
377- /// width away from what was drawn.
378- pub fn realign(&mut self, id: WindowId) {
379- let Some(s) = self.wm.get(id) else {
380- return;
381- };
382- let Some((_, rect, _)) = s.placed else {
383- return;
384- };
385- let window = &s.window;
386- let Some(mapped) = self.wm.space.element_location(window) else {
387- return;
388- };
389- let at = Point::from((rect.x.round() as i32, rect.y.round() as i32));
390- if at != mapped {
391- let window = window.clone();
392- self.wm.space.relocate_element(&window, at);
393- }
394- }
395-
396374 /// Brings a window's tag into view when it is the tag's first window,
397375 /// whether it mapped there, was moved there or was placed by activation.
398376 pub fn view_if_first(&mut self, id: WindowId) {