Add sleeping tab recovery

This commit is contained in:
2026-05-08 10:23:58 -04:00
parent 1ec3bfcc3d
commit 3c380e1455
12 changed files with 338 additions and 50 deletions
+1 -1
View File
@@ -13,7 +13,6 @@ use sync::SyncObjectPolicies;
mod bookmarks;
mod commands;
mod crashes;
mod downloads;
mod history;
mod notes;
@@ -25,6 +24,7 @@ mod spaces;
mod splits;
mod sync;
mod tab_groups;
mod tab_lifecycle;
mod tab_order;
mod tabs;
@@ -277,11 +277,20 @@ impl BrowserCore {
self.crash_active_tab()?;
Ok(true)
}
"sleep-tab" | "sleep tab" | "discard-tab" | "discard tab" => {
self.discard_active_tab()?;
Ok(true)
}
"recover-tab" | "recover tab" | "recover-crashed-tab" | "recover crashed tab" => {
let tab_id = self.active_tab()?.id().clone();
self.recover_crashed_tab(&tab_id)?;
Ok(true)
}
"wake-tab" | "wake tab" | "restore-sleeping-tab" | "restore sleeping tab" => {
let tab_id = self.active_tab()?.id().clone();
self.wake_discarded_tab(&tab_id)?;
Ok(true)
}
"close-split-view" | "close split view" => {
Ok(self.close_active_saved_split_view()?.is_some())
}
@@ -20,6 +20,29 @@ impl BrowserCore {
}
pub fn recover_crashed_tab(&mut self, tab_id: &TabId) -> Result<TabId, CoreError> {
self.mark_tab_ready(tab_id)
}
pub fn discard_active_tab(&mut self) -> Result<TabId, CoreError> {
let tab_id = self.active_tab_id.clone();
self.discard_tab(&tab_id)
}
pub fn discard_tab(&mut self, tab_id: &TabId) -> Result<TabId, CoreError> {
let tab = self
.tabs
.iter_mut()
.find(|tab| tab.id() == tab_id)
.ok_or_else(|| CoreError::TabNotFound { id: tab_id.clone() })?;
tab.mark_discarded();
Ok(tab_id.clone())
}
pub fn wake_discarded_tab(&mut self, tab_id: &TabId) -> Result<TabId, CoreError> {
self.mark_tab_ready(tab_id)
}
fn mark_tab_ready(&mut self, tab_id: &TabId) -> Result<TabId, CoreError> {
{
let tab = self
.tabs