feat(wayland): recommended_state

This commit is contained in:
Nova
2023-01-02 18:53:58 -05:00
parent 2d0865e73c
commit 57ea51fb40
2 changed files with 60 additions and 15 deletions

View File

@@ -58,7 +58,7 @@ lazy_static! {
"close",
],
aliased_local_methods: vec![],
aliased_remote_signals: vec!["commit_toplevel", "set_cursor",],
aliased_remote_signals: vec!["commit_toplevel", "recommend_toplevel_state", "set_cursor"],
ui: Default::default(),
items: Registry::new(),
acceptors: Registry::new(),
@@ -96,6 +96,16 @@ impl Default for ToplevelState {
}
}
#[derive(Debug, Clone, Serialize)]
#[serde(tag = "type", content = "content")]
pub enum RecommendedState {
Maximize(bool),
Fullscreen(bool),
Minimize,
Move,
Resize(u32),
}
pub struct PanelItem {
node: Weak<Node>,
client_credentials: Option<Credentials>,
@@ -498,7 +508,7 @@ impl PanelItem {
let Ok(xdg_toplevel) = panel_item.toplevel.upgrade() else { return Ok(()) };
let Some(xdg_surface) = panel_item.toplevel_surface_data().and_then(|d| d.xdg_surface.upgrade().ok()) else { return Ok(()) };
#[derive(Deserialize)]
#[derive(Debug, Deserialize)]
struct ConfigureToplevelInfo {
size: Option<Vector2<u32>>,
states: Vec<u8>,
@@ -547,6 +557,14 @@ impl PanelItem {
let _ = node.send_remote_signal("commit_toplevel", &serialize(&*state).unwrap());
}
pub fn recommend_toplevel_state(&self, state: RecommendedState) {
let Some(node) = self.node.upgrade() else { return };
dbg!(&state);
let data = serialize(state).unwrap();
let _ = node.send_remote_signal("recommend_toplevel_state", &data);
}
pub fn set_cursor(&self, surface: Option<&WlSurface>, hotspot_x: i32, hotspot_y: i32) {
let Some(node) = self.node.upgrade() else { return };
let mut data = serialize(()).unwrap();