aboutsummaryrefslogtreecommitdiff
path: root/src/utils/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-09-05 16:41:54 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-09-17 22:04:23 +0300
commit4808ba2b2055a09008be17d3e9eeae2d592b7b18 (patch)
tree2ca186112158a9b69e36aa6f76cd78f0361fc911 /src/utils/mod.rs
parent35cbab476ebfc271909777029f56f666b29d76a2 (diff)
downloadniri-4808ba2b2055a09008be17d3e9eeae2d592b7b18.tar.gz
niri-4808ba2b2055a09008be17d3e9eeae2d592b7b18.tar.bz2
niri-4808ba2b2055a09008be17d3e9eeae2d592b7b18.zip
Update Smithay (last_acked refactor, Qt layer-shell popup grab fix, popup ordering fix)
Diffstat (limited to 'src/utils/mod.rs')
-rw-r--r--src/utils/mod.rs22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index 26bfe582..a96c1bfc 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -25,7 +25,8 @@ use smithay::utils::{Coordinate, Logical, Point, Rectangle, Size, Transform};
use smithay::wayland::compositor::{send_surface_state, with_states, SurfaceData};
use smithay::wayland::fractional_scale::with_fractional_scale;
use smithay::wayland::shell::xdg::{
- ToplevelSurface, XdgToplevelSurfaceData, XdgToplevelSurfaceRoleAttributes,
+ ToplevelCachedState, ToplevelState, ToplevelSurface, XdgToplevelSurfaceData,
+ XdgToplevelSurfaceRoleAttributes,
};
use wayland_backend::server::Credentials;
@@ -279,6 +280,25 @@ pub fn with_toplevel_role<T>(
})
}
+pub fn with_toplevel_role_and_current<T>(
+ toplevel: &ToplevelSurface,
+ f: impl FnOnce(&mut XdgToplevelSurfaceRoleAttributes, Option<&ToplevelState>) -> T,
+) -> T {
+ with_states(toplevel.wl_surface(), |states| {
+ let mut role = states
+ .data_map
+ .get::<XdgToplevelSurfaceData>()
+ .unwrap()
+ .lock()
+ .unwrap();
+
+ let mut guard = states.cached_state.get::<ToplevelCachedState>();
+ let current = guard.current().last_acked.as_ref().map(|c| &c.state);
+
+ f(&mut role, current)
+ })
+}
+
pub fn update_tiled_state(
toplevel: &ToplevelSurface,
prefer_no_csd: bool,