cosmic-workspaces/src/wayland/workspace.rs

37 lines
1 KiB
Rust
Raw Normal View History

2023-02-09 16:04:36 -08:00
use cctk::{
wayland_client::Proxy,
workspace::{WorkspaceHandler, WorkspaceState},
};
use super::{AppData, CaptureSource, Event};
impl WorkspaceHandler for AppData {
fn workspace_state(&mut self) -> &mut WorkspaceState {
&mut self.workspace_state
}
fn done(&mut self) {
let mut workspaces = Vec::new();
// XXX remove capture source for removed workspaces
for group in self.workspace_state.workspace_groups() {
for workspace in &group.workspaces {
if let Some(output) = group.output.as_ref() {
let output_name = self.output_names.get(&output.id()).unwrap().clone();
workspaces.push((output_name, workspace.clone()));
self.add_capture_source(CaptureSource::Workspace(
workspace.handle.clone(),
output.clone(),
));
}
}
}
self.send_event(Event::Workspaces(workspaces));
}
}
cctk::delegate_workspace!(AppData);