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