1
0
Fork 0
forked from wry/wry

tree: remove hidden, unused workspaces

This commit is contained in:
Julian Orth 2022-05-17 17:47:01 +02:00
parent 871827fdde
commit 70cc24107b
4 changed files with 45 additions and 0 deletions

View file

@ -42,6 +42,7 @@ mod t0013_graphics_initialized;
mod t0014_container_scroll_focus;
mod t0015_scroll_partial;
mod t0016_scroll_ws;
mod t0017_remove_unused_ws;
pub trait TestCase: Sync {
fn name(&self) -> &'static str;
@ -76,5 +77,6 @@ pub fn tests() -> Vec<&'static dyn TestCase> {
t0014_container_scroll_focus,
t0015_scroll_partial,
t0016_scroll_ws,
t0017_remove_unused_ws,
}
}

View file

@ -0,0 +1,35 @@
use {
crate::it::{test_error::TestResult, testrun::TestRun},
std::rc::Rc,
};
testcase!();
async fn test(run: Rc<TestRun>) -> TestResult {
let ds = run.create_default_setup().await?;
run.cfg.show_workspace(ds.seat.id(), "1")?;
tassert_eq!(run.state.workspaces.len(), 1);
run.cfg.show_workspace(ds.seat.id(), "2")?;
tassert_eq!(run.state.workspaces.len(), 1);
run.cfg.show_workspace(ds.seat.id(), "1")?;
tassert_eq!(run.state.workspaces.len(), 1);
let client = run.create_client().await?;
let win = client.create_window().await?;
win.map().await?;
run.cfg.show_workspace(ds.seat.id(), "2")?;
tassert_eq!(run.state.workspaces.len(), 2);
run.cfg.show_workspace(ds.seat.id(), "1")?;
tassert_eq!(run.state.workspaces.len(), 1);
Ok(())
}

View file

@ -180,6 +180,10 @@ impl OutputNode {
}
collect_kb_foci2(old.clone(), &mut seats);
old.set_visible(false);
if old.is_empty() {
old.clear();
self.state.workspaces.remove(&old.name);
}
}
ws.set_visible(true);
if let Some(fs) = ws.fullscreen.get() {

View file

@ -47,6 +47,10 @@ impl WorkspaceNode {
self.container.set(Some(container.clone()));
}
pub fn is_empty(&self) -> bool {
self.stacked.is_empty() && self.fullscreen.get().is_none() && self.container.get().is_none()
}
pub fn stacked_visible(&self) -> bool {
self.visible.get() && self.fullscreen.get().is_none()
}