From 57db78f6454ec8beb371e0e770fa1eaf6836bf09 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Sun, 21 Apr 2024 08:28:17 +0200 Subject: [PATCH] Move frameable unscaled --- src/elements/grid.rs | 12 ++++++++++++ src/guihandler/gui/framable.rs | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/elements/grid.rs b/src/elements/grid.rs index 3d7f46c..cd8d416 100644 --- a/src/elements/grid.rs +++ b/src/elements/grid.rs @@ -415,6 +415,18 @@ impl Grid { Ok(grid) } + pub fn change_position_unscaled(&self, x: i32, y: i32) -> Result<()> { + self.framable.change_position_unscaled(x, y)?; + + if let Some(background) = self.background.read().unwrap().as_ref() { + background.update_frame()?; + } + + self.calculate_child_positions()?; + + Ok(()) + } + fn child_position( &self, child: &dyn Gridable, diff --git a/src/guihandler/gui/framable.rs b/src/guihandler/gui/framable.rs index 1cca7bf..00355d4 100644 --- a/src/guihandler/gui/framable.rs +++ b/src/guihandler/gui/framable.rs @@ -430,6 +430,18 @@ impl Framable { Ok(()) } + pub fn change_position_unscaled(&self, x: i32, y: i32) -> Result<()> { + assert!(self.is_framed(), "framable needs to be framed first!"); + + self.left.store(x, SeqCst); + self.top.store(y, SeqCst); + + for (_, callback) in self.resize_callbacks.read().unwrap().iter() { + callback()?; + } + + Ok(()) + } pub fn resize(&self) -> Result<()> { self.calculate_frame();