Add Magpie ClosePanel message

This commit is contained in:
mars 2022-12-07 18:00:34 -07:00
parent e944caa358
commit 9660ebb4dd
2 changed files with 13 additions and 0 deletions

View File

@ -29,6 +29,12 @@ pub struct CreatePanel {
pub init_msg: Vec<u8>, pub init_msg: Vec<u8>,
} }
/// Closes a Magpie panel with a given ID.
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct ClosePanel {
pub id: PanelId,
}
/// Sends a panel a message. /// Sends a panel a message.
#[derive(Clone, Debug, Deserialize, Serialize)] #[derive(Clone, Debug, Deserialize, Serialize)]
pub struct SendMessage { pub struct SendMessage {
@ -41,6 +47,7 @@ pub struct SendMessage {
#[serde(tag = "kind")] #[serde(tag = "kind")]
pub enum MagpieServerMsg { pub enum MagpieServerMsg {
CreatePanel(CreatePanel), CreatePanel(CreatePanel),
ClosePanel(ClosePanel),
SendMessage(SendMessage), SendMessage(SendMessage),
} }

View File

@ -151,6 +151,12 @@ impl Client {
}; };
let _ = self.window_sender.send_event(msg); let _ = self.window_sender.send_event(msg);
} }
MagpieServerMsg::ClosePanel(ClosePanel { id }) => {
if let Some(id) = self.id_to_window.get(&id).copied() {
let msg = WindowMessage::CloseWindow { id };
let _ = self.window_sender.send_event(msg);
}
}
MagpieServerMsg::SendMessage(SendMessage { id, msg }) => { MagpieServerMsg::SendMessage(SendMessage { id, msg }) => {
if let Some(id) = self.id_to_window.get(&id).cloned() { if let Some(id) = self.id_to_window.get(&id).cloned() {
let msg = WindowMessage::SendMessage { id, msg }; let msg = WindowMessage::SendMessage { id, msg };