The new PopOverlay logical action returns to the previous non-overlay
activity, without reinitialising it.
}
}
+ pub fn pop_overlay(&mut self) {
+ self.overlay = None;
+ }
+
pub fn new_event(&mut self) {
// Save the utility activity we were in at the start of an
// event. That way we can restore it when moving to an
pub fn get_user_to_examine() -> Box<dyn ActivityState> {
Box::new(BottomLineEditorOverlay::new(
ColouredString::plain("Examine User: "),
- Box::new(move |s| LogicalAction::Goto(
- UtilityActivity::ExamineUser(s.to_owned()).into()))
+ Box::new(move |s| {
+ if s.is_empty() {
+ LogicalAction::PopOverlaySilent
+ } else {
+ LogicalAction::Goto(
+ UtilityActivity::ExamineUser(s.to_owned()).into())
+ }
+ })
))
}
pub enum LogicalAction {
Beep,
Pop,
+ PopOverlaySilent,
+ PopOverlayBeep,
Goto(Activity),
Exit,
Nothing,
self.changed_activity(client);
PhysicalAction::Nothing
},
+ LogicalAction::PopOverlaySilent => {
+ self.pop_overlay_activity();
+ PhysicalAction::Nothing
+ },
+ LogicalAction::PopOverlayBeep => {
+ self.pop_overlay_activity();
+ PhysicalAction::Beep
+ },
LogicalAction::Error(_) => PhysicalAction::Beep, // FIXME: Error Log
}
}
}
}
}
+
+ fn pop_overlay_activity(&mut self) {
+ self.activity_stack.pop_overlay();
+ self.overlay_activity_state = None;
+ }
}