use cctk::{ cosmic_protocols::{ toplevel_info::v1::client::zcosmic_toplevel_handle_v1, toplevel_management::v1::client::zcosmic_toplevel_manager_v1, }, toplevel_info::{ToplevelInfoHandler, ToplevelInfoState}, toplevel_management::{ToplevelManagerHandler, ToplevelManagerState}, wayland_client::{Connection, QueueHandle, WEnum}, }; use super::{AppData, CaptureSource, Event}; // TODO any indication when we have all toplevels? impl ToplevelInfoHandler for AppData { fn toplevel_info_state(&mut self) -> &mut ToplevelInfoState { &mut self.toplevel_info_state } fn new_toplevel( &mut self, _conn: &Connection, _qh: &QueueHandle, toplevel: &zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1, ) { let info = self.toplevel_info_state.info(toplevel).unwrap(); self.send_event(Event::NewToplevel(toplevel.clone(), info.clone())); self.add_capture_source(CaptureSource::Toplevel(toplevel.clone())); } fn update_toplevel( &mut self, _conn: &Connection, _qh: &QueueHandle, _toplevel: &zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1, ) { // TODO } fn toplevel_closed( &mut self, _conn: &Connection, _qh: &QueueHandle, toplevel: &zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1, ) { self.send_event(Event::CloseToplevel(toplevel.clone())); self.remove_capture_source(CaptureSource::Toplevel(toplevel.clone())); } } impl ToplevelManagerHandler for AppData { fn toplevel_manager_state(&mut self) -> &mut ToplevelManagerState { &mut self.toplevel_manager_state } fn capabilities( &mut self, _conn: &Connection, _qh: &QueueHandle, _capabilities: Vec< WEnum, >, ) { } } cctk::delegate_toplevel_info!(AppData); cctk::delegate_toplevel_manager!(AppData);