static positioning to also set global
This commit is contained in:
@@ -38,6 +38,7 @@ pub fn new_pos_tab_handler(
|
|||||||
Box::new(|_common, state| {
|
Box::new(|_common, state| {
|
||||||
let positioning = state.pos;
|
let positioning = state.pos;
|
||||||
Box::new(move |app, owc| {
|
Box::new(move |app, owc| {
|
||||||
|
owc.global = matches!(positioning, Positioning::Static);
|
||||||
let state = owc.active_state.as_mut().unwrap(); //want panic
|
let state = owc.active_state.as_mut().unwrap(); //want panic
|
||||||
state.positioning = positioning;
|
state.positioning = positioning;
|
||||||
window::save_transform(state, app);
|
window::save_transform(state, app);
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ use crate::{
|
|||||||
BackendAttrib, BackendAttribValue, FrameMeta, OverlayBackend, OverlayEventData,
|
BackendAttrib, BackendAttribValue, FrameMeta, OverlayBackend, OverlayEventData,
|
||||||
RenderResources, ShouldRender,
|
RenderResources, ShouldRender,
|
||||||
},
|
},
|
||||||
window::OverlayWindowConfig,
|
window::{OverlayCategory, OverlayWindowConfig},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
@@ -86,6 +86,7 @@ pub fn create_keyboard(app: &mut AppState, wayland: bool) -> anyhow::Result<Over
|
|||||||
|
|
||||||
Ok(OverlayWindowConfig {
|
Ok(OverlayWindowConfig {
|
||||||
name: KEYBOARD_NAME.into(),
|
name: KEYBOARD_NAME.into(),
|
||||||
|
category: OverlayCategory::Keyboard,
|
||||||
default_state: OverlayWindowState {
|
default_state: OverlayWindowState {
|
||||||
grabbable: true,
|
grabbable: true,
|
||||||
positioning: Positioning::Anchored,
|
positioning: Positioning::Anchored,
|
||||||
|
|||||||
@@ -410,7 +410,7 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
if overlay.config.global {
|
if matches!(overlay.config.category, OverlayCategory::Internal) {
|
||||||
// watch, anchor, toast, dashboard
|
// watch, anchor, toast, dashboard
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -449,9 +449,12 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let ret_val = self.overlays.remove(id);
|
let ret_val = self.overlays.remove(id);
|
||||||
let internal = ret_val
|
let internal = ret_val.as_ref().is_some_and(|o| {
|
||||||
.as_ref()
|
matches!(
|
||||||
.is_some_and(|o| matches!(o.config.category, OverlayCategory::Internal));
|
o.config.category,
|
||||||
|
OverlayCategory::Internal | OverlayCategory::Keyboard
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
if !internal && let Err(e) = self.overlays_changed(app) {
|
if !internal && let Err(e) = self.overlays_changed(app) {
|
||||||
log::error!("Error while removing overlay: {e:?}");
|
log::error!("Error while removing overlay: {e:?}");
|
||||||
@@ -502,7 +505,10 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
|
|
||||||
let name = overlay.config.name.clone();
|
let name = overlay.config.name.clone();
|
||||||
let global = overlay.config.global;
|
let global = overlay.config.global;
|
||||||
let internal = matches!(overlay.config.category, OverlayCategory::Internal);
|
let internal = matches!(
|
||||||
|
overlay.config.category,
|
||||||
|
OverlayCategory::Internal | OverlayCategory::Keyboard
|
||||||
|
);
|
||||||
let show_on_spawn = overlay.config.show_on_spawn;
|
let show_on_spawn = overlay.config.show_on_spawn;
|
||||||
|
|
||||||
let oid = self.overlays.insert(overlay);
|
let oid = self.overlays.insert(overlay);
|
||||||
@@ -603,7 +609,10 @@ impl<T> OverlayWindowManager<T> {
|
|||||||
fn overlays_changed(&mut self, app: &mut AppState) -> anyhow::Result<()> {
|
fn overlays_changed(&mut self, app: &mut AppState) -> anyhow::Result<()> {
|
||||||
let mut meta = Vec::with_capacity(self.overlays.len());
|
let mut meta = Vec::with_capacity(self.overlays.len());
|
||||||
for (id, data) in &self.overlays {
|
for (id, data) in &self.overlays {
|
||||||
if matches!(data.config.category, OverlayCategory::Internal) {
|
if matches!(
|
||||||
|
data.config.category,
|
||||||
|
OverlayCategory::Internal | OverlayCategory::Keyboard
|
||||||
|
) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
meta.push(OverlayMeta {
|
meta.push(OverlayMeta {
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ impl<T> OverlayWindowData<T> {
|
|||||||
#[derive(Debug, Clone, Copy, IntegerId, PartialEq)]
|
#[derive(Debug, Clone, Copy, IntegerId, PartialEq)]
|
||||||
pub enum OverlayCategory {
|
pub enum OverlayCategory {
|
||||||
Internal,
|
Internal,
|
||||||
|
Keyboard,
|
||||||
Panel,
|
Panel,
|
||||||
Screen,
|
Screen,
|
||||||
Mirror,
|
Mirror,
|
||||||
|
|||||||
Reference in New Issue
Block a user