diff --git a/src/wayland/protocols/workspace/cosmic.rs b/src/wayland/protocols/workspace/cosmic.rs index aaebc0af..58638654 100644 --- a/src/wayland/protocols/workspace/cosmic.rs +++ b/src/wayland/protocols/workspace/cosmic.rs @@ -338,7 +338,7 @@ where handle_state.outputs = group.outputs.clone(); } - if handle_state.capabilities != group.capabilities { + if handle_state.capabilities != Some(group.capabilities) { let caps = group .capabilities .iter() @@ -349,7 +349,7 @@ where .flat_map(|cap| (cap as u32).to_ne_bytes()) .collect::>(); instance.capabilities(caps); - handle_state.capabilities = group.capabilities.clone(); + handle_state.capabilities = Some(group.capabilities.clone()); changed = true; } @@ -421,7 +421,7 @@ where handle_state.coordinates = workspace.coordinates.clone(); changed = true; } - if handle_state.capabilities != workspace.capabilities { + if handle_state.capabilities != Some(workspace.capabilities) { let caps = workspace .capabilities .iter() @@ -446,10 +446,10 @@ where .flat_map(|cap| (cap as u32).to_ne_bytes()) .collect::>(); instance.capabilities(caps); - handle_state.capabilities = workspace.capabilities.clone(); + handle_state.capabilities = Some(workspace.capabilities.clone()); changed = true; } - if handle_state.states != workspace.states { + if handle_state.states != Some(workspace.states) { let states = workspace .states .iter() @@ -468,7 +468,7 @@ where .flat_map(|state| (state as u32).to_ne_bytes()) .collect::>(); instance.state(states); - handle_state.states = workspace.states.clone(); + handle_state.states = Some(workspace.states.clone()); changed = true; } if instance.version() >= zcosmic_workspace_handle_v1::EVT_TILING_STATE_SINCE { diff --git a/src/wayland/protocols/workspace/ext.rs b/src/wayland/protocols/workspace/ext.rs index d7746e0f..610f9ef7 100644 --- a/src/wayland/protocols/workspace/ext.rs +++ b/src/wayland/protocols/workspace/ext.rs @@ -333,9 +333,9 @@ where handle_state.outputs = group.outputs.clone(); } - if handle_state.capabilities != group.capabilities { + if handle_state.capabilities != Some(group.capabilities) { instance.capabilities(group.capabilities); - handle_state.capabilities = group.capabilities.clone(); + handle_state.capabilities = Some(group.capabilities.clone()); changed = true; } @@ -411,7 +411,7 @@ where handle_state.coordinates = workspace.coordinates.clone(); changed = true; } - if handle_state.capabilities != workspace.capabilities { + if handle_state.capabilities != Some(workspace.capabilities) { let caps = workspace .capabilities .iter() @@ -432,12 +432,12 @@ where }) .collect::(); instance.capabilities(caps); - handle_state.capabilities = workspace.capabilities.clone(); + handle_state.capabilities = Some(workspace.capabilities.clone()); changed = true; } - if handle_state.states != workspace.states { + if handle_state.states != Some(workspace.states) { instance.state(workspace.states); - handle_state.states = workspace.states.clone(); + handle_state.states = Some(workspace.states.clone()); changed = true; } // TODO ext_workspace_handle_v1::id diff --git a/src/wayland/protocols/workspace/mod.rs b/src/wayland/protocols/workspace/mod.rs index 79074e42..1137f89e 100644 --- a/src/wayland/protocols/workspace/mod.rs +++ b/src/wayland/protocols/workspace/mod.rs @@ -114,24 +114,14 @@ pub struct WorkspaceGroupHandle { id: usize, } +#[derive(Default)] pub struct WorkspaceGroupDataInner { outputs: Vec, wl_outputs: HashSet, - capabilities: GroupCapabilities, + capabilities: Option, workspace_count: usize, } -impl Default for WorkspaceGroupDataInner { - fn default() -> Self { - Self { - outputs: Vec::new(), - wl_outputs: HashSet::new(), - capabilities: GroupCapabilities::empty(), - workspace_count: 0, - } - } -} - pub type WorkspaceGroupData = Mutex; #[derive(Debug)] @@ -153,26 +143,15 @@ pub struct WorkspaceHandle { id: usize, } +#[derive(Default)] pub struct WorkspaceDataInner { name: String, - capabilities: WorkspaceCapabilities, + capabilities: Option, coordinates: Vec, - states: ext_workspace_handle_v1::State, + states: Option, tiling: Option, } -impl Default for WorkspaceDataInner { - fn default() -> Self { - Self { - name: String::new(), - capabilities: WorkspaceCapabilities::empty(), - coordinates: Vec::new(), - states: ext_workspace_handle_v1::State::empty(), - tiling: None, - } - } -} - pub type WorkspaceData = Mutex; pub trait WorkspaceHandler