From 90bce4c369db58e7ea4da417fe3981b82ac51993 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Wed, 17 Dec 2025 16:58:13 +0900 Subject: [PATCH] static positioning to also set global --- wlx-overlay-s/src/overlays/edit/pos.rs | 1 + wlx-overlay-s/src/overlays/keyboard/mod.rs | 3 ++- wlx-overlay-s/src/windowing/manager.rs | 21 +++++++++++++++------ wlx-overlay-s/src/windowing/window.rs | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/wlx-overlay-s/src/overlays/edit/pos.rs b/wlx-overlay-s/src/overlays/edit/pos.rs index 986a43e..8237a2f 100644 --- a/wlx-overlay-s/src/overlays/edit/pos.rs +++ b/wlx-overlay-s/src/overlays/edit/pos.rs @@ -38,6 +38,7 @@ pub fn new_pos_tab_handler( Box::new(|_common, state| { let positioning = state.pos; Box::new(move |app, owc| { + owc.global = matches!(positioning, Positioning::Static); let state = owc.active_state.as_mut().unwrap(); //want panic state.positioning = positioning; window::save_transform(state, app); diff --git a/wlx-overlay-s/src/overlays/keyboard/mod.rs b/wlx-overlay-s/src/overlays/keyboard/mod.rs index 1ca7e96..e12b711 100644 --- a/wlx-overlay-s/src/overlays/keyboard/mod.rs +++ b/wlx-overlay-s/src/overlays/keyboard/mod.rs @@ -20,7 +20,7 @@ use crate::{ BackendAttrib, BackendAttribValue, FrameMeta, OverlayBackend, OverlayEventData, RenderResources, ShouldRender, }, - window::OverlayWindowConfig, + window::{OverlayCategory, OverlayWindowConfig}, }, }; use anyhow::Context; @@ -86,6 +86,7 @@ pub fn create_keyboard(app: &mut AppState, wayland: bool) -> anyhow::Result OverlayWindowManager { return; }; - if overlay.config.global { + if matches!(overlay.config.category, OverlayCategory::Internal) { // watch, anchor, toast, dashboard return; } @@ -449,9 +449,12 @@ impl OverlayWindowManager { }; let ret_val = self.overlays.remove(id); - let internal = ret_val - .as_ref() - .is_some_and(|o| matches!(o.config.category, OverlayCategory::Internal)); + let internal = ret_val.as_ref().is_some_and(|o| { + matches!( + o.config.category, + OverlayCategory::Internal | OverlayCategory::Keyboard + ) + }); if !internal && let Err(e) = self.overlays_changed(app) { log::error!("Error while removing overlay: {e:?}"); @@ -502,7 +505,10 @@ impl OverlayWindowManager { let name = overlay.config.name.clone(); let global = overlay.config.global; - let internal = matches!(overlay.config.category, OverlayCategory::Internal); + let internal = matches!( + overlay.config.category, + OverlayCategory::Internal | OverlayCategory::Keyboard + ); let show_on_spawn = overlay.config.show_on_spawn; let oid = self.overlays.insert(overlay); @@ -603,7 +609,10 @@ impl OverlayWindowManager { fn overlays_changed(&mut self, app: &mut AppState) -> anyhow::Result<()> { let mut meta = Vec::with_capacity(self.overlays.len()); for (id, data) in &self.overlays { - if matches!(data.config.category, OverlayCategory::Internal) { + if matches!( + data.config.category, + OverlayCategory::Internal | OverlayCategory::Keyboard + ) { continue; } meta.push(OverlayMeta { diff --git a/wlx-overlay-s/src/windowing/window.rs b/wlx-overlay-s/src/windowing/window.rs index 3f78819..556aa9e 100644 --- a/wlx-overlay-s/src/windowing/window.rs +++ b/wlx-overlay-s/src/windowing/window.rs @@ -53,6 +53,7 @@ impl OverlayWindowData { #[derive(Debug, Clone, Copy, IntegerId, PartialEq)] pub enum OverlayCategory { Internal, + Keyboard, Panel, Screen, Mirror,