mirror of
https://codeberg.org/waydeer/layer-shika.git
synced 2025-10-28 14:14:23 +00:00
refactor: minor refactor
This commit is contained in:
parent
2cd5df6ee1
commit
b232df23a9
5 changed files with 33 additions and 36 deletions
|
|
@ -47,13 +47,13 @@ impl FemtoVGWindow {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_scale_factor(&self, scale_factor: f32) {
|
pub fn set_scale_factor(&self, scale_factor: f32) {
|
||||||
info!("Setting scale factor to {}", scale_factor);
|
info!("Setting scale factor to {scale_factor}");
|
||||||
self.scale_factor.set(scale_factor);
|
self.scale_factor.set(scale_factor);
|
||||||
self.window()
|
self.window()
|
||||||
.dispatch_event(WindowEvent::ScaleFactorChanged { scale_factor });
|
.dispatch_event(WindowEvent::ScaleFactorChanged { scale_factor });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn scale_factor(&self) -> f32 {
|
pub const fn scale_factor(&self) -> f32 {
|
||||||
self.scale_factor.get()
|
self.scale_factor.get()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,13 @@ pub struct CustomSlintPlatform {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CustomSlintPlatform {
|
impl CustomSlintPlatform {
|
||||||
pub fn new(window: Rc<FemtoVGWindow>) -> Self {
|
pub const fn new(window: Rc<FemtoVGWindow>) -> Self {
|
||||||
Self { window }
|
Self { window }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Platform for CustomSlintPlatform {
|
impl Platform for CustomSlintPlatform {
|
||||||
fn create_window_adapter(&self) -> Result<Rc<(dyn WindowAdapter + 'static)>, PlatformError> {
|
fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter + 'static>, PlatformError> {
|
||||||
Result::Ok(Rc::clone(&self.window) as Rc<dyn WindowAdapter>)
|
Result::Ok(Rc::clone(&self.window) as Rc<dyn WindowAdapter>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,22 @@ mod config;
|
||||||
mod macros;
|
mod macros;
|
||||||
mod state;
|
mod state;
|
||||||
|
|
||||||
|
type GlobalObjects = (
|
||||||
|
WlCompositor,
|
||||||
|
WlOutput,
|
||||||
|
ZwlrLayerShellV1,
|
||||||
|
WlSeat,
|
||||||
|
Option<WpFractionalScaleManagerV1>,
|
||||||
|
Option<WpViewporter>,
|
||||||
|
);
|
||||||
|
|
||||||
|
type SurfaceObjects = (
|
||||||
|
Rc<WlSurface>,
|
||||||
|
Rc<ZwlrLayerSurfaceV1>,
|
||||||
|
Option<Rc<WpFractionalScaleV1>>,
|
||||||
|
Option<Rc<WpViewport>>,
|
||||||
|
);
|
||||||
|
|
||||||
pub struct WindowingSystem {
|
pub struct WindowingSystem {
|
||||||
state: WindowState,
|
state: WindowState,
|
||||||
connection: Rc<Connection>,
|
connection: Rc<Connection>,
|
||||||
|
|
@ -108,17 +124,7 @@ impl WindowingSystem {
|
||||||
fn initialize_globals(
|
fn initialize_globals(
|
||||||
connection: &Connection,
|
connection: &Connection,
|
||||||
queue_handle: &QueueHandle<WindowState>,
|
queue_handle: &QueueHandle<WindowState>,
|
||||||
) -> Result<
|
) -> Result<GlobalObjects, LayerShikaError> {
|
||||||
(
|
|
||||||
WlCompositor,
|
|
||||||
WlOutput,
|
|
||||||
ZwlrLayerShellV1,
|
|
||||||
WlSeat,
|
|
||||||
Option<WpFractionalScaleManagerV1>,
|
|
||||||
Option<WpViewporter>,
|
|
||||||
),
|
|
||||||
LayerShikaError,
|
|
||||||
> {
|
|
||||||
let global_list = registry_queue_init::<WindowState>(connection)
|
let global_list = registry_queue_init::<WindowState>(connection)
|
||||||
.map(|(global_list, _)| global_list)
|
.map(|(global_list, _)| global_list)
|
||||||
.map_err(|e| LayerShikaError::GlobalInitialization(e.to_string()))?;
|
.map_err(|e| LayerShikaError::GlobalInitialization(e.to_string()))?;
|
||||||
|
|
@ -166,12 +172,7 @@ impl WindowingSystem {
|
||||||
viewporter: Option<&WpViewporter>,
|
viewporter: Option<&WpViewporter>,
|
||||||
queue_handle: &QueueHandle<WindowState>,
|
queue_handle: &QueueHandle<WindowState>,
|
||||||
config: &WindowConfig,
|
config: &WindowConfig,
|
||||||
) -> (
|
) -> SurfaceObjects {
|
||||||
Rc<WlSurface>,
|
|
||||||
Rc<ZwlrLayerSurfaceV1>,
|
|
||||||
Option<Rc<WpFractionalScaleV1>>,
|
|
||||||
Option<Rc<WpViewport>>,
|
|
||||||
) {
|
|
||||||
let surface = Rc::new(compositor.create_surface(queue_handle, ()));
|
let surface = Rc::new(compositor.create_surface(queue_handle, ()));
|
||||||
let layer_surface = Rc::new(layer_shell.get_layer_surface(
|
let layer_surface = Rc::new(layer_shell.get_layer_surface(
|
||||||
&surface,
|
&surface,
|
||||||
|
|
@ -273,7 +274,7 @@ impl WindowingSystem {
|
||||||
self.event_loop
|
self.event_loop
|
||||||
.run(None, &mut self.state, move |shared_data| {
|
.run(None, &mut self.state, move |shared_data| {
|
||||||
if let Err(e) = Self::process_events(connection, event_queue, shared_data) {
|
if let Err(e) = Self::process_events(connection, event_queue, shared_data) {
|
||||||
error!("Error processing events: {}", e);
|
error!("Error processing events: {e}");
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.map_err(|e| LayerShikaError::EventLoop(e.to_string()))
|
.map_err(|e| LayerShikaError::EventLoop(e.to_string()))
|
||||||
|
|
|
||||||
|
|
@ -49,10 +49,7 @@ impl Dispatch<ZwlrLayerSurfaceV1, ()> for WindowState {
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
} => {
|
} => {
|
||||||
info!(
|
info!("Layer surface configured with compositor size: {width}x{height}");
|
||||||
"Layer surface configured with compositor size: {}x{}",
|
|
||||||
width, height
|
|
||||||
);
|
|
||||||
layer_surface.ack_configure(serial);
|
layer_surface.ack_configure(serial);
|
||||||
|
|
||||||
let output_width = state.output_size().width;
|
let output_width = state.output_size().width;
|
||||||
|
|
@ -112,19 +109,19 @@ impl Dispatch<WlOutput, ()> for WindowState {
|
||||||
) {
|
) {
|
||||||
match event {
|
match event {
|
||||||
wl_output::Event::Mode { width, height, .. } => {
|
wl_output::Event::Mode { width, height, .. } => {
|
||||||
info!("WlOutput size changed to {}x{}", width, height);
|
info!("WlOutput size changed to {width}x{height}");
|
||||||
let width = width.try_into().unwrap_or_default();
|
let width = width.try_into().unwrap_or_default();
|
||||||
let height = height.try_into().unwrap_or_default();
|
let height = height.try_into().unwrap_or_default();
|
||||||
state.set_output_size(PhysicalSize::new(width, height));
|
state.set_output_size(PhysicalSize::new(width, height));
|
||||||
}
|
}
|
||||||
wl_output::Event::Description { ref description } => {
|
wl_output::Event::Description { ref description } => {
|
||||||
info!("WlOutput description: {:?}", description);
|
info!("WlOutput description: {description:?}");
|
||||||
}
|
}
|
||||||
wl_output::Event::Scale { ref factor } => {
|
wl_output::Event::Scale { ref factor } => {
|
||||||
info!("WlOutput factor scale: {:?}", factor);
|
info!("WlOutput factor scale: {factor:?}");
|
||||||
}
|
}
|
||||||
wl_output::Event::Name { ref name } => {
|
wl_output::Event::Name { ref name } => {
|
||||||
info!("WlOutput name: {:?}", name);
|
info!("WlOutput name: {name:?}");
|
||||||
}
|
}
|
||||||
wl_output::Event::Geometry {
|
wl_output::Event::Geometry {
|
||||||
x,
|
x,
|
||||||
|
|
@ -136,7 +133,7 @@ impl Dispatch<WlOutput, ()> for WindowState {
|
||||||
model,
|
model,
|
||||||
transform,
|
transform,
|
||||||
} => {
|
} => {
|
||||||
info!("WlOutput geometry: x={}, y={}, physical_width={}, physical_height={}, subpixel={:?}, make={:?}, model={:?}, transform={:?}", x, y, physical_width, physical_height, subpixel, make, model, transform);
|
info!("WlOutput geometry: x={x}, y={y}, physical_width={physical_width}, physical_height={physical_height}, subpixel={subpixel:?}, make={make:?}, model={model:?}, transform={transform:?}");
|
||||||
}
|
}
|
||||||
wl_output::Event::Done => {
|
wl_output::Event::Done => {
|
||||||
info!("WlOutput done");
|
info!("WlOutput done");
|
||||||
|
|
|
||||||
|
|
@ -67,12 +67,11 @@ impl WindowState {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::cast_precision_loss)]
|
||||||
|
#[allow(clippy::cast_possible_wrap)]
|
||||||
pub fn update_size(&mut self, width: u32, height: u32) {
|
pub fn update_size(&mut self, width: u32, height: u32) {
|
||||||
if width == 0 || height == 0 {
|
if width == 0 || height == 0 {
|
||||||
info!(
|
info!("Skipping update_size with zero dimension: {width}x{height}");
|
||||||
"Skipping update_size with zero dimension: {}x{}",
|
|
||||||
width, height
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -181,7 +180,7 @@ impl WindowState {
|
||||||
self.height
|
self.height
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_output_size(&mut self, output_size: PhysicalSize) {
|
pub const fn set_output_size(&mut self, output_size: PhysicalSize) {
|
||||||
self.output_size = output_size;
|
self.output_size = output_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue