feat(commandline): fade history entries off the overlay after 3 s
The overlay used to keep the last four history lines on screen indefinitely, leaving stale command output cluttering the viewport. Stamp each `HistoryEntry` with its `Instant` of insertion and filter the rows shown on the overlay to entries younger than 3 s. `CommandLine::has_visible_history()` gates a per-frame tick subscription so the view re-renders and the entry disappears on time. The subscription auto-stops once no entry is fresh enough, keeping the idle CPU draw at zero (#18). Full history stays in the backing `Vec` — the upcoming dropdown button will surface it on demand. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
862e5aed31
commit
5a8c79deb5
2 changed files with 56 additions and 16 deletions
|
|
@ -661,8 +661,19 @@ impl OpenCADStudio {
|
|||
} else {
|
||||
Subscription::none()
|
||||
};
|
||||
// While the command-line overlay is still displaying any
|
||||
// recently-pushed history entry, re-render every frame so the
|
||||
// entry disappears at the moment its visible window expires.
|
||||
// The subscription auto-stops once no entry is fresh enough
|
||||
// (typically within a few seconds of the last command).
|
||||
let history_tick = if self.command_line.has_visible_history() {
|
||||
window::frames().map(Message::Tick)
|
||||
} else {
|
||||
Subscription::none()
|
||||
};
|
||||
iced::Subscription::batch([
|
||||
frames,
|
||||
history_tick,
|
||||
event::listen_with(|ev, status, win_id| {
|
||||
use iced::event::Status;
|
||||
match ev {
|
||||
|
|
|
|||
Loading…
Reference in a new issue