Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions druid-shell/src/platform/x11/window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ use x11rb::wrapper::ConnectionExt as _;
use x11rb::xcb_ffi::XCBConnection;

#[cfg(feature = "raw-win-handle")]
use raw_window_handle::{HasRawWindowHandle, RawWindowHandle};
use raw_window_handle::{unix::XcbHandle, HasRawWindowHandle, RawWindowHandle};

use crate::common_util::IdleCallback;
use crate::dialog::FileDialogOptions;
Expand Down Expand Up @@ -1589,7 +1589,19 @@ impl WindowHandle {
#[cfg(feature = "raw-win-handle")]
unsafe impl HasRawWindowHandle for WindowHandle {
fn raw_window_handle(&self) -> RawWindowHandle {
error!("HasRawWindowHandle trait not implemented for x11.");
RawWindowHandle::Xcb(XcbHandle::empty())
let mut handle = XcbHandle {
window: self.id,
..XcbHandle::empty()
};

if let Some(window) = self.window.upgrade() {
handle.connection = window.app.connection().get_raw_xcb_connection();
} else {
// Documentation for HasRawWindowHandle encourages filling in all fields possible,
// leaving those empty that cannot be derived.
error!("Failed to get XCBConnection, returning incomplete handle");
}

RawWindowHandle::Xcb(handle)
}
}