On X11, allow building window with parent

This commit is contained in:
Shinichi Tanaka 2022-10-10 05:12:23 +09:00 committed by GitHub
parent bb0f965c57
commit 71094e5703
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 104 additions and 1 deletions

View file

@ -95,6 +95,8 @@ pub struct PlatformSpecificWindowBuilderAttributes {
#[cfg(feature = "x11")]
pub screen_id: Option<i32>,
#[cfg(feature = "x11")]
pub parent_id: Option<WindowId>,
#[cfg(feature = "x11")]
pub base_size: Option<Size>,
#[cfg(feature = "x11")]
pub override_redirect: bool,
@ -115,6 +117,8 @@ impl Default for PlatformSpecificWindowBuilderAttributes {
#[cfg(feature = "x11")]
screen_id: None,
#[cfg(feature = "x11")]
parent_id: None,
#[cfg(feature = "x11")]
base_size: None,
#[cfg(feature = "x11")]
override_redirect: false,

View file

@ -119,7 +119,12 @@ impl UnownedWindow {
pl_attribs: PlatformSpecificWindowBuilderAttributes,
) -> Result<UnownedWindow, RootOsError> {
let xconn = &event_loop.xconn;
let root = event_loop.root;
let root = if let Some(id) = pl_attribs.parent_id {
// WindowId is XID under the hood which doesn't exceed u32, so this conversion is lossless
u64::from(id) as _
} else {
event_loop.root
};
let mut monitors = xconn.available_monitors();
let guessed_monitor = if monitors.is_empty() {