From 6169ec95050faf4e769fb4fd5276e4fbd588aa4b Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Tue, 11 Nov 2025 14:41:39 +0900 Subject: [PATCH] fix anchor not showing --- wlx-overlay-s/src/backend/input.rs | 5 ++--- wlx-overlay-s/src/gui/panel/mod.rs | 7 ++++--- wlx-overlay-s/src/overlays/anchor.rs | 3 ++- wlx-overlay-s/src/windowing/window.rs | 8 ++++++++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/wlx-overlay-s/src/backend/input.rs b/wlx-overlay-s/src/backend/input.rs index 0a39656..64c19cd 100644 --- a/wlx-overlay-s/src/backend/input.rs +++ b/wlx-overlay-s/src/backend/input.rs @@ -2,7 +2,7 @@ use std::f32::consts::PI; use std::process::{Child, Command}; use std::{collections::VecDeque, time::Instant}; -use glam::{Affine3A, Vec2, Vec3A, Vec3Swizzles}; +use glam::{Affine3A, Vec2, Vec3, Vec3A, Vec3Swizzles}; use smallvec::{smallvec, SmallVec}; @@ -582,8 +582,7 @@ impl Pointer { tasks.enqueue(TaskType::Overlay( OverlaySelector::Name(ANCHOR_NAME.clone()), Box::new(|app, o| { - o.saved_transform = Some(app.anchor); - o.activate(app); + o.activate_static(app.anchor * Affine3A::from_scale(Vec3::ONE * 0.1)); }), )); } diff --git a/wlx-overlay-s/src/gui/panel/mod.rs b/wlx-overlay-s/src/gui/panel/mod.rs index 43ab0fa..04fd1fc 100644 --- a/wlx-overlay-s/src/gui/panel/mod.rs +++ b/wlx-overlay-s/src/gui/panel/mod.rs @@ -1,7 +1,7 @@ use std::{cell::RefCell, rc::Rc, sync::Arc}; use button::setup_custom_button; -use glam::{Affine2, Vec2, vec2}; +use glam::{vec2, Affine2, Vec2}; use label::setup_custom_label; use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView}; use wgui::{ @@ -15,14 +15,14 @@ use wgui::{ layout::{Layout, LayoutParams, WidgetID}, parser::ParserState, renderer_vk::context::Context as WguiContext, - widget::{EventResult, label::WidgetLabel, rectangle::WidgetRectangle}, + widget::{label::WidgetLabel, rectangle::WidgetRectangle, EventResult}, }; use crate::{ backend::input::{Haptics, HoverResult, PointerHit, PointerMode}, graphics::{CommandBuffers, ExtentExt}, state::AppState, - windowing::backend::{FrameMeta, OverlayBackend, ShouldRender, ui_transform}, + windowing::backend::{ui_transform, FrameMeta, OverlayBackend, ShouldRender}, }; use super::{timer::GuiTimer, timestep::Timestep}; @@ -206,6 +206,7 @@ impl OverlayBackend for GuiPanel { } if self.layout.content_size.x * self.layout.content_size.y == 0.0 { + log::trace!("Unable to render: content size 0"); return Ok(ShouldRender::Unable); } diff --git a/wlx-overlay-s/src/overlays/anchor.rs b/wlx-overlay-s/src/overlays/anchor.rs index f80e2b0..ede4a13 100644 --- a/wlx-overlay-s/src/overlays/anchor.rs +++ b/wlx-overlay-s/src/overlays/anchor.rs @@ -9,7 +9,8 @@ use crate::windowing::Z_ORDER_ANCHOR; pub static ANCHOR_NAME: LazyLock> = LazyLock::new(|| Arc::from("anchor")); pub fn create_anchor(app: &mut AppState) -> anyhow::Result { - let panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), None)?; + let mut panel = GuiPanel::new_from_template(app, "gui/anchor.xml", (), None)?; + panel.update_layout()?; Ok(OverlayWindowConfig { name: ANCHOR_NAME.clone(), diff --git a/wlx-overlay-s/src/windowing/window.rs b/wlx-overlay-s/src/windowing/window.rs index 688022e..afc1f27 100644 --- a/wlx-overlay-s/src/windowing/window.rs +++ b/wlx-overlay-s/src/windowing/window.rs @@ -128,6 +128,14 @@ impl OverlayWindowConfig { self.reset(app, true); } + pub fn activate_static(&mut self, global_transform: Affine3A) { + log::debug!("activate {}", self.name.as_ref()); + self.dirty = true; + let mut state = self.default_state.clone(); + state.transform = global_transform; + self.active_state = Some(state); + } + pub fn deactivate(&mut self) { log::debug!("deactivate {}", self.name.as_ref()); self.active_state = None;