feat(wayland): make state fields optional

This commit is contained in:
Nova
2022-12-26 08:22:09 -05:00
parent 246cf5ceea
commit 2de49d981b
2 changed files with 12 additions and 12 deletions

View File

@@ -71,11 +71,11 @@ pub struct ToplevelState {
pub mapped: bool, pub mapped: bool,
#[serde(skip_serializing)] #[serde(skip_serializing)]
pub parent: Option<WlWeak<XdgToplevel>>, pub parent: Option<WlWeak<XdgToplevel>>,
pub title: String, pub title: Option<String>,
pub app_id: String, pub app_id: Option<String>,
pub size: Vector2<u32>, pub size: Vector2<u32>,
pub max_size: Vector2<u32>, pub max_size: Option<Vector2<u32>>,
pub min_size: Vector2<u32>, pub min_size: Option<Vector2<u32>>,
pub states: Vec<u8>, pub states: Vec<u8>,
#[serde(skip_serializing)] #[serde(skip_serializing)]
pub queued_state: Option<Box<ToplevelState>>, pub queued_state: Option<Box<ToplevelState>>,
@@ -85,11 +85,11 @@ impl Default for ToplevelState {
Self { Self {
mapped: false, mapped: false,
parent: None, parent: None,
title: String::default(), title: None,
app_id: String::default(), app_id: None,
size: Vector2::from([0; 2]), size: Vector2::from([0; 2]),
max_size: Vector2::from([0; 2]), max_size: None,
min_size: Vector2::from([0; 2]), min_size: None,
states: Vec::new(), states: Vec::new(),
queued_state: None, queued_state: None,
} }

View File

@@ -299,12 +299,12 @@ impl Dispatch<XdgToplevel, XdgToplevelData, WaylandState> for WaylandState {
xdg_toplevel::Request::SetTitle { title } => { xdg_toplevel::Request::SetTitle { title } => {
let mut state = data.state.lock(); let mut state = data.state.lock();
let queued_state = state.queued_state.as_mut().unwrap(); let queued_state = state.queued_state.as_mut().unwrap();
queued_state.title = title; queued_state.title = Some(title);
} }
xdg_toplevel::Request::SetAppId { app_id } => { xdg_toplevel::Request::SetAppId { app_id } => {
let mut state = data.state.lock(); let mut state = data.state.lock();
let queued_state = state.queued_state.as_mut().unwrap(); let queued_state = state.queued_state.as_mut().unwrap();
queued_state.app_id = app_id; queued_state.app_id = Some(app_id);
} }
xdg_toplevel::Request::ShowWindowMenu { xdg_toplevel::Request::ShowWindowMenu {
seat: _, seat: _,
@@ -321,12 +321,12 @@ impl Dispatch<XdgToplevel, XdgToplevelData, WaylandState> for WaylandState {
xdg_toplevel::Request::SetMaxSize { width, height } => { xdg_toplevel::Request::SetMaxSize { width, height } => {
let mut state = data.state.lock(); let mut state = data.state.lock();
let queued_state = state.queued_state.as_mut().unwrap(); let queued_state = state.queued_state.as_mut().unwrap();
queued_state.max_size = Vector2::from([width as u32, height as u32]); queued_state.max_size = Some(Vector2::from([width as u32, height as u32]));
} }
xdg_toplevel::Request::SetMinSize { width, height } => { xdg_toplevel::Request::SetMinSize { width, height } => {
let mut state = data.state.lock(); let mut state = data.state.lock();
let queued_state = state.queued_state.as_mut().unwrap(); let queued_state = state.queued_state.as_mut().unwrap();
queued_state.min_size = Vector2::from([width as u32, height as u32]); queued_state.min_size = Some(Vector2::from([width as u32, height as u32]));
} }
xdg_toplevel::Request::SetMaximized => (), xdg_toplevel::Request::SetMaximized => (),
xdg_toplevel::Request::UnsetMaximized => (), xdg_toplevel::Request::UnsetMaximized => (),