feat(wayland): receives_input
This commit is contained in:
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -2357,7 +2357,7 @@ checksum = "2f2b15926089e5526bb2dd738a2eb0e59034356e06eb71e1cd912358c0e62c4d"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr"
|
name = "stardust-xr"
|
||||||
version = "0.45.0"
|
version = "0.45.0"
|
||||||
source = "git+https://github.com/StardustXR/core.git?branch=dev#52f75945be534b42006455395d89c91babbb1029"
|
source = "git+https://github.com/StardustXR/core.git?branch=dev#1b82b6c9fa43e080a03f103924fd282c21815176"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cluFlock",
|
"cluFlock",
|
||||||
"dirs",
|
"dirs",
|
||||||
@@ -2377,7 +2377,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "stardust-xr-schemas"
|
name = "stardust-xr-schemas"
|
||||||
version = "1.5.3"
|
version = "1.5.3"
|
||||||
source = "git+https://github.com/StardustXR/core.git?branch=dev#52f75945be534b42006455395d89c91babbb1029"
|
source = "git+https://github.com/StardustXR/core.git?branch=dev#1b82b6c9fa43e080a03f103924fd282c21815176"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"flatbuffers",
|
"flatbuffers",
|
||||||
"flexbuffers",
|
"flexbuffers",
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ impl CompositorHandler for WaylandState {
|
|||||||
size: [256; 2].into(),
|
size: [256; 2].into(),
|
||||||
},
|
},
|
||||||
z_order: 1,
|
z_order: 1,
|
||||||
|
receives_input: false,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let Some(panel_item) = surface_panel_item(parent) else {
|
let Some(panel_item) = surface_panel_item(parent) else {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use crate::nodes::{
|
|||||||
Backend, ChildInfo, Geometry, PanelItem, PanelItemInitData, SurfaceId, ToplevelInfo,
|
Backend, ChildInfo, Geometry, PanelItem, PanelItemInitData, SurfaceId, ToplevelInfo,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
use color_eyre::eyre::Result;
|
use color_eyre::eyre::{eyre, Result};
|
||||||
use mint::Vector2;
|
use mint::Vector2;
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
@@ -239,6 +239,7 @@ impl XdgShellHandler for WaylandState {
|
|||||||
})
|
})
|
||||||
.into(),
|
.into(),
|
||||||
z_order: 1,
|
z_order: 1,
|
||||||
|
receives_input: true,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let Some(panel_item) = surface_panel_item(&parent) else {
|
let Some(panel_item) = surface_panel_item(&parent) else {
|
||||||
@@ -421,31 +422,31 @@ impl Backend for XdgBackend {
|
|||||||
size,
|
size,
|
||||||
});
|
});
|
||||||
|
|
||||||
let toplevel = self.toplevel.lock().clone().unwrap();
|
let toplevel = self
|
||||||
let app_id = compositor::with_states(toplevel.wl_surface(), |states| {
|
.toplevel
|
||||||
states
|
.lock()
|
||||||
|
.clone()
|
||||||
|
.ok_or(eyre!("Internal: no toplevel"))?;
|
||||||
|
let (app_id, title) = compositor::with_states(toplevel.wl_surface(), |states| {
|
||||||
|
let xdg_toplevel_data = states
|
||||||
.data_map
|
.data_map
|
||||||
.get::<XdgToplevelSurfaceData>()
|
.get::<XdgToplevelSurfaceData>()
|
||||||
.unwrap()
|
.ok_or(eyre!("Internal: XdgToplevelSurfaceData not found"))?;
|
||||||
|
|
||||||
|
let locked_data = xdg_toplevel_data
|
||||||
.lock()
|
.lock()
|
||||||
.unwrap()
|
.map_err(|_| eyre!("Internal: Failed to lock XdgToplevelSurfaceData"))?;
|
||||||
.title
|
|
||||||
.clone()
|
Ok::<_, color_eyre::eyre::Report>((
|
||||||
});
|
locked_data.app_id.clone(),
|
||||||
let title = compositor::with_states(toplevel.wl_surface(), |states| {
|
locked_data.title.clone(),
|
||||||
states
|
))
|
||||||
.data_map
|
})?;
|
||||||
.get::<XdgToplevelSurfaceData>()
|
|
||||||
.unwrap()
|
|
||||||
.lock()
|
|
||||||
.unwrap()
|
|
||||||
.app_id
|
|
||||||
.clone()
|
|
||||||
});
|
|
||||||
let toplevel_cached_state = compositor::with_states(toplevel.wl_surface(), |states| {
|
let toplevel_cached_state = compositor::with_states(toplevel.wl_surface(), |states| {
|
||||||
*states.cached_state.get::<SurfaceCachedState>().current()
|
*states.cached_state.get::<SurfaceCachedState>().current()
|
||||||
});
|
});
|
||||||
let toplevel_core_surface = CoreSurface::from_wl_surface(toplevel.wl_surface()).unwrap();
|
let toplevel_core_surface = CoreSurface::from_wl_surface(toplevel.wl_surface())
|
||||||
|
.ok_or(eyre!("Internal: Failed to get CoreSurface from WlSurface"))?;
|
||||||
|
|
||||||
let size = toplevel
|
let size = toplevel
|
||||||
.current_state()
|
.current_state()
|
||||||
|
|||||||
Reference in New Issue
Block a user