From 12817a682d666e81e30b5a723d6419baf74cdb1c Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Sat, 1 Mar 2025 09:45:57 +0300 Subject: Store offscreen element id on Mapped instead of user data We don't need user data for this. --- src/window/mapped.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/window') diff --git a/src/window/mapped.rs b/src/window/mapped.rs index 77a08ab1..8263c078 100644 --- a/src/window/mapped.rs +++ b/src/window/mapped.rs @@ -1,4 +1,4 @@ -use std::cell::{Cell, RefCell}; +use std::cell::{Cell, Ref, RefCell}; use std::time::Duration; use niri_config::{Color, CornerRadius, GradientInterpolation, WindowRule}; @@ -24,7 +24,6 @@ use crate::layout::{ ConfigureIntent, InteractiveResizeData, LayoutElement, LayoutElementRenderElement, LayoutElementRenderSnapshot, }; -use crate::niri::WindowOffscreenId; use crate::niri_render_elements; use crate::render_helpers::border::BorderRenderElement; use crate::render_helpers::renderer::NiriRenderer; @@ -71,6 +70,11 @@ pub struct Mapped { /// resizes immediately, without waiting for a 1 second throttled callback. needs_frame_callback: bool, + /// Id of the offscreen element rendered in place of this window. + /// + /// If `None`, then the window is not offscreened. + offscreen_element_id: RefCell>, + /// Whether this window has the keyboard focus. is_focused: bool, @@ -188,6 +192,7 @@ impl Mapped { need_to_recompute_rules: false, needs_configure: false, needs_frame_callback: false, + offscreen_element_id: RefCell::new(None), is_focused: false, is_active_in_column: true, is_floating: false, @@ -252,6 +257,10 @@ impl Mapped { self.credentials.as_ref() } + pub fn offscreen_element_id(&self) -> Ref> { + self.offscreen_element_id.borrow() + } + pub fn is_focused(&self) -> bool { self.is_focused } @@ -743,11 +752,7 @@ impl LayoutElement for Mapped { } fn set_offscreen_element_id(&self, id: Option) { - let data = self - .window - .user_data() - .get_or_insert(WindowOffscreenId::default); - data.0.replace(id); + self.offscreen_element_id.replace(id); } fn set_activated(&mut self, active: bool) { -- cgit