::OverlayToggle to not reset overlay on show
This commit is contained in:
@@ -106,7 +106,6 @@
|
||||
<rectangle macro="dropdown_title">
|
||||
<label text="${name}" weight="bold" size="24" />
|
||||
</rectangle>
|
||||
<MenuButton translation="BAR.TOGGLE_HIDE" action="::OverlaySoftToggle ${name}" />
|
||||
<MenuButton translation="BAR.TOGGLE_IN_SET" action="::OverlayToggle ${name}" />
|
||||
<MenuButton translation="BAR.CLOSE" action="::WvrOverlayTermProcess ${name}" />
|
||||
<MenuButton translation="BAR.FORCE_CLOSE" action="::WvrOverlayKillProcess ${name}" />
|
||||
@@ -127,7 +126,6 @@
|
||||
<rectangle macro="dropdown_title">
|
||||
<label text="${name}" weight="bold" size="24" />
|
||||
</rectangle>
|
||||
<MenuButton translation="BAR.TOGGLE_HIDE" action="::OverlaySoftToggle ${name}" />
|
||||
<MenuButton translation="BAR.TOGGLE_IN_SET" action="::OverlayToggle ${name}" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -142,7 +140,6 @@
|
||||
<rectangle macro="dropdown_title">
|
||||
<label text="${name}" weight="bold" size="24" />
|
||||
</rectangle>
|
||||
<MenuButton translation="BAR.TOGGLE_HIDE" action="::OverlaySoftToggle ${name}" />
|
||||
<MenuButton translation="BAR.TOGGLE_IN_SET" action="::OverlayToggle ${name}" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,7 +157,6 @@
|
||||
<rectangle macro="dropdown_title">
|
||||
<label text="${name}" weight="bold" size="24" />
|
||||
</rectangle>
|
||||
<MenuButton translation="BAR.TOGGLE_HIDE" action="::OverlaySoftToggle ${name}" />
|
||||
<MenuButton translation="BAR.TOGGLE_IN_SET" action="::OverlayToggle ${name}" />
|
||||
<MenuButton translation="BAR.CLOSE" action="::OverlayDrop ${name}" />
|
||||
</div>
|
||||
|
||||
@@ -35,7 +35,7 @@ All overlays are listed on bottom row.
|
||||
|
||||
<template name="Overlay">
|
||||
<Button macro="button_style" id="overlay_${idx}"
|
||||
tooltip="WATCH.TOGGLE_FOR_CURRENT_SET" _press="::SingleSetOverlayToggle ${idx}" _long_release="::SingleSetOverlayReset ${idx}"
|
||||
tooltip="WATCH.TOGGLE_FOR_CURRENT_SET" _press="::OverlayToggle ${idx}" _long_release="::SingleSetOverlayReset ${idx}"
|
||||
align_items="center"
|
||||
height="40">
|
||||
<sprite id="overlay_${idx}_sprite" src_builtin="${src}" width="32" height="32" />
|
||||
|
||||
@@ -82,7 +82,7 @@ pub enum OverlayTask {
|
||||
AddSet,
|
||||
ToggleSet(usize),
|
||||
SwitchSet(Option<usize>),
|
||||
SoftToggleOverlay(OverlaySelector),
|
||||
ToggleOverlay(OverlaySelector),
|
||||
DeleteActiveSet,
|
||||
ToggleEditMode,
|
||||
ToggleDashboard,
|
||||
|
||||
@@ -307,38 +307,13 @@ pub(super) fn setup_custom_button<S: 'static>(
|
||||
return;
|
||||
};
|
||||
|
||||
Box::new(move |_common, data, app, _| {
|
||||
if !test_button(data) || !test_duration(&button, app) {
|
||||
return Ok(EventResult::Pass);
|
||||
}
|
||||
|
||||
app.tasks.enqueue(TaskType::Overlay(OverlayTask::Modify(
|
||||
OverlaySelector::Name(arg.clone()),
|
||||
Box::new(move |app, owc| {
|
||||
if owc.active_state.is_none() {
|
||||
owc.activate(app);
|
||||
} else {
|
||||
owc.deactivate();
|
||||
}
|
||||
}),
|
||||
)));
|
||||
Ok(EventResult::Consumed)
|
||||
})
|
||||
}
|
||||
"::OverlaySoftToggle" => {
|
||||
let arg: Arc<str> = args.collect::<Vec<_>>().join(" ").into();
|
||||
if arg.len() < 1 {
|
||||
log::error!("{command} has missing arguments");
|
||||
return;
|
||||
};
|
||||
|
||||
Box::new(move |_common, data, app, _| {
|
||||
if !test_button(data) || !test_duration(&button, app) {
|
||||
return Ok(EventResult::Pass);
|
||||
}
|
||||
|
||||
app.tasks
|
||||
.enqueue(TaskType::Overlay(OverlayTask::SoftToggleOverlay(
|
||||
.enqueue(TaskType::Overlay(OverlayTask::ToggleOverlay(
|
||||
OverlaySelector::Name(arg.clone()),
|
||||
)));
|
||||
Ok(EventResult::Consumed)
|
||||
|
||||
@@ -111,35 +111,6 @@ pub fn create_watch(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
|
||||
Ok(EventResult::Consumed)
|
||||
}),
|
||||
"::EditModeOverlayToggle" => {
|
||||
let arg = args.next().unwrap_or_default();
|
||||
let Ok(idx) = arg.parse::<usize>() else {
|
||||
log::error!("{command} has invalid argument: \"{arg}\"");
|
||||
return;
|
||||
};
|
||||
Box::new(move |_common, data, app, state| {
|
||||
if !test_button(data) || !test_duration(&button, app) {
|
||||
return Ok(EventResult::Pass);
|
||||
}
|
||||
|
||||
let Some(overlay) = state.overlay_metas.get(idx) else {
|
||||
log::error!("No overlay at index {idx}.");
|
||||
return Ok(EventResult::Consumed);
|
||||
};
|
||||
|
||||
app.tasks.enqueue(TaskType::Overlay(OverlayTask::Modify(
|
||||
OverlaySelector::Id(overlay.id),
|
||||
Box::new(move |app, owc| {
|
||||
if owc.active_state.is_none() {
|
||||
owc.activate(app);
|
||||
} else {
|
||||
owc.deactivate();
|
||||
}
|
||||
}),
|
||||
)));
|
||||
Ok(EventResult::Consumed)
|
||||
})
|
||||
}
|
||||
"::SingleSetOverlayToggle" => {
|
||||
let arg = args.next().unwrap_or_default();
|
||||
let Ok(idx) = arg.parse::<usize>() else {
|
||||
log::error!("{command} has invalid argument: \"{arg}\"");
|
||||
@@ -156,7 +127,7 @@ pub fn create_watch(app: &mut AppState) -> anyhow::Result<OverlayWindowConfig> {
|
||||
};
|
||||
|
||||
app.tasks
|
||||
.enqueue(TaskType::Overlay(OverlayTask::SoftToggleOverlay(
|
||||
.enqueue(TaskType::Overlay(OverlayTask::ToggleOverlay(
|
||||
OverlaySelector::Id(overlay.id),
|
||||
)));
|
||||
Ok(EventResult::Consumed)
|
||||
|
||||
@@ -172,7 +172,7 @@ where
|
||||
OverlayTask::SwitchSet(maybe_set) => {
|
||||
self.switch_to_set(app, maybe_set, false);
|
||||
}
|
||||
OverlayTask::SoftToggleOverlay(sel) => {
|
||||
OverlayTask::ToggleOverlay(sel) => {
|
||||
let Some(id) = self.id_by_selector(&sel) else {
|
||||
log::warn!("Overlay not found for task: {sel:?}");
|
||||
return Ok(());
|
||||
@@ -180,13 +180,17 @@ where
|
||||
|
||||
let o = &mut self.overlays[id];
|
||||
if let Some(active_state) = o.config.active_state.take() {
|
||||
log::debug!("{}: soft-toggle off", o.config.name);
|
||||
log::debug!("{}: toggle off", o.config.name);
|
||||
|
||||
self.sets[self.restore_set]
|
||||
.overlays
|
||||
.insert(id, active_state);
|
||||
} else if let Some(state) = self.sets[self.restore_set].overlays.remove(id) {
|
||||
.inactive_overlays
|
||||
.arc_set(o.config.name.clone(), active_state);
|
||||
} else if let Some(state) = self.sets[self.restore_set]
|
||||
.inactive_overlays
|
||||
.arc_rm(&o.config.name)
|
||||
{
|
||||
let o = &mut self.overlays[id];
|
||||
log::debug!("{}: soft-toggle on", o.config.name);
|
||||
log::debug!("{}: toggle on", o.config.name);
|
||||
o.config.dirty = true;
|
||||
o.config.active_state = Some(state);
|
||||
o.config.reset(app, false);
|
||||
|
||||
Reference in New Issue
Block a user