custom panels

This commit is contained in:
galister
2025-12-17 15:54:43 +09:00
parent 9dbd35e8f7
commit ea90853e56
18 changed files with 181 additions and 61 deletions
+16 -4
View File
@@ -14,8 +14,8 @@ use wlx_common::{
use crate::{
backend::task::OverlayTask,
overlays::{
anchor::create_anchor, edit::EditWrapperManager, keyboard::create_keyboard,
screen::create_screens, toast::Toast, watch::create_watch,
anchor::create_anchor, custom::create_custom, edit::EditWrapperManager,
keyboard::create_keyboard, screen::create_screens, toast::Toast, watch::create_watch,
},
state::AppState,
windowing::{
@@ -114,6 +114,15 @@ where
let watch = OverlayWindowData::from_config(create_watch(app)?);
me.watch_id = me.add(watch, app);
let custom_panels = app.session.config.custom_panels.clone();
for name in custom_panels.into_iter() {
let Some(panel) = create_custom(app, name) else {
continue;
};
log::info!("Loaded custom panel '{}'", panel.name);
me.add(OverlayWindowData::from_config(panel), app);
}
// overwrite default layout with saved layout, if exists
me.restore_layout(app);
me.overlays_changed(app)?;
@@ -375,7 +384,7 @@ impl<T> OverlayWindowManager<T> {
self.edit_mode = enabled;
if !enabled {
for o in self.overlays.values_mut() {
self.wrappers.unwrap_edit_mode(&mut o.config);
self.wrappers.unwrap_edit_mode(&mut o.config, app)?;
}
}
if changed && let Some(watch) = self.mut_by_id(self.watch_id) {
@@ -412,7 +421,10 @@ impl<T> OverlayWindowManager<T> {
.inspect_err(|e| log::error!("{e:?}"))
.unwrap(); // FIXME: unwrap
} else {
self.wrappers.unwrap_edit_mode(&mut overlay.config);
self.wrappers
.unwrap_edit_mode(&mut overlay.config, app)
.inspect_err(|e| log::error!("{e:?}"))
.unwrap(); // FIXME: unwrap
}
}
+3 -2
View File
@@ -1,4 +1,5 @@
use glam::{Affine3A, Mat3A, Quat, Vec3, Vec3A};
use idmap_derive::IntegerId;
use std::{f32::consts::PI, sync::Arc};
use wlx_common::windowing::{OverlayWindowState, Positioning};
@@ -49,10 +50,10 @@ impl<T> OverlayWindowData<T> {
}
}
#[derive(Clone, Copy)]
#[derive(Debug, Clone, Copy, IntegerId, PartialEq)]
pub enum OverlayCategory {
Internal,
PanelCustom,
Panel,
Screen,
Mirror,
WayVR,