diff --git a/crates/composition/src/builder.rs b/crates/composition/src/builder.rs index 88790a2..1c1c83c 100644 --- a/crates/composition/src/builder.rs +++ b/crates/composition/src/builder.rs @@ -137,7 +137,7 @@ impl LayerShika { impl LayerShika { #[must_use] - pub fn dimensions(mut self, width: u32, height: u32) -> Self { + pub fn size(mut self, width: u32, height: u32) -> Self { self.config.dimensions = WindowDimension::new(width, height); self } diff --git a/crates/composition/src/lib.rs b/crates/composition/src/lib.rs index cb515df..82b5990 100644 --- a/crates/composition/src/lib.rs +++ b/crates/composition/src/lib.rs @@ -75,7 +75,9 @@ pub mod prelude { pub use crate::{slint, slint_interpreter}; - pub use layer_shika_domain::prelude::{Margins, ScaleFactor, WindowConfig, WindowDimension}; + pub use layer_shika_domain::prelude::{ + LogicalSize, Margins, PhysicalSize, ScaleFactor, WindowConfig, WindowDimension, + }; pub use layer_shika_adapters::platform::wayland::Anchor; } diff --git a/crates/domain/src/value_objects/output_policy.rs b/crates/domain/src/value_objects/output_policy.rs index 62633da..4fa1090 100644 --- a/crates/domain/src/value_objects/output_policy.rs +++ b/crates/domain/src/value_objects/output_policy.rs @@ -1,10 +1,14 @@ use crate::value_objects::output_info::OutputInfo; use std::fmt; +use std::rc::Rc; +type OutputFilter = Rc bool>; + +#[derive(Clone)] pub enum OutputPolicy { AllOutputs, PrimaryOnly, - Custom(Box bool>), + Custom(OutputFilter), } impl OutputPolicy { @@ -28,7 +32,7 @@ impl OutputPolicy { where F: Fn(&OutputInfo) -> bool + 'static, { - Self::Custom(Box::new(filter)) + Self::Custom(Rc::new(filter)) } } @@ -38,21 +42,12 @@ impl Default for OutputPolicy { } } -impl Clone for OutputPolicy { - fn clone(&self) -> Self { - match self { - OutputPolicy::AllOutputs | OutputPolicy::Custom(_) => OutputPolicy::AllOutputs, - OutputPolicy::PrimaryOnly => OutputPolicy::PrimaryOnly, - } - } -} - impl fmt::Debug for OutputPolicy { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { OutputPolicy::AllOutputs => write!(f, "OutputPolicy::AllOutputs"), OutputPolicy::PrimaryOnly => write!(f, "OutputPolicy::PrimaryOnly"), - OutputPolicy::Custom(_) => write!(f, "OutputPolicy::Custom()"), + OutputPolicy::Custom(_) => write!(f, "OutputPolicy::Custom()"), } } } diff --git a/src/lib.rs b/src/lib.rs index ef0a2c8..977bad9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,7 @@ //! ```rust,no_run //! use layer_shika::prelude::*; //! -//! LayerShika::from_file("ui/main.slint", Some("AppWindow"))? +//! LayerShika::from_file("ui/main.slint")? //! .height(42) //! .anchor(AnchorEdges::top_bar()) //! .exclusive_zone(42) @@ -63,10 +63,10 @@ pub mod prelude; pub use layer_shika_composition::{ - AnchorEdges, AnchorStrategy, Error, EventContext, EventLoopHandle, KeyboardInteractivity, - Layer, LayerShika, OutputGeometry, OutputHandle, OutputInfo, OutputPolicy, OutputRegistry, - PopupHandle, PopupPlacement, PopupPositioningMode, PopupRequest, PopupSize, PopupWindow, - Result, ShellControl, ShellRuntime, SingleWindowShell, DEFAULT_WINDOW_NAME, + AnchorEdges, AnchorStrategy, DEFAULT_WINDOW_NAME, Error, EventContext, EventLoopHandle, + KeyboardInteractivity, Layer, LayerShika, OutputGeometry, OutputHandle, OutputInfo, + OutputPolicy, OutputRegistry, PopupHandle, PopupPlacement, PopupPositioningMode, PopupRequest, + PopupSize, PopupWindow, Result, ShellControl, ShellRuntime, SingleWindowShell, }; pub use layer_shika_composition::{ diff --git a/src/prelude.rs b/src/prelude.rs index 17957d2..da1be21 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -9,8 +9,8 @@ #![allow(clippy::pub_use)] pub use crate::{ - Error, EventContext, EventLoopHandle, LayerShika, PopupWindow, Result, ShellControl, - ShellRuntime, SingleWindowShell, DEFAULT_WINDOW_NAME, + DEFAULT_WINDOW_NAME, Error, EventContext, EventLoopHandle, LayerShika, PopupWindow, Result, + ShellControl, ShellRuntime, SingleWindowShell, }; pub use crate::{ @@ -25,7 +25,7 @@ pub use crate::{ }; pub use layer_shika_composition::prelude::{ - Anchor, Margins, ScaleFactor, WindowConfig, WindowDimension, + Anchor, LogicalSize, Margins, PhysicalSize, ScaleFactor, WindowConfig, WindowDimension, }; pub use crate::calloop;