feat: impl design header

This commit is contained in:
2026-05-07 19:49:45 +05:00
parent 7cc2b8542d
commit f425145e81
13 changed files with 978 additions and 304 deletions
+39
View File
@@ -0,0 +1,39 @@
use i_slint_backend_winit::WinitWindowAccessor;
use i_slint_backend_winit::winit::dpi::PhysicalPosition;
use i_slint_backend_winit::winit::monitor::MonitorHandle;
use i_slint_backend_winit::winit::window::Window;
pub fn center_window(window: &slint::Window) {
println!("Centering window");
if window.has_winit_window() {
println!("Has winit");
window.with_winit_window(|window: &Window| {
match window.current_monitor() {
Some(monitor) => set_centered(window, &monitor),
None => (),
};
None as Option<()>
});
}
}
fn set_centered(window: &Window, monitor: &MonitorHandle) {
let window_size = window.outer_size();
let monitor_size = monitor.size();
let monitor_position = monitor.position();
println!("Monitor size: {:?}", monitor_size);
println!("Window size: {:?}", window_size);
let mut monitor_window_position = PhysicalPosition { x: 0, y: 0 };
monitor_window_position.x = (monitor_position.x as f32 + (monitor_size.width as f32 * 0.5)
- (window_size.width as f32 * 0.5)) as i32;
monitor_window_position.y = (monitor_position.y as f32 + (monitor_size.height as f32 * 0.5)
- (window_size.height as f32 * 0.5)) as i32;
window.set_outer_position(monitor_window_position);
}