From 6b49f55a96ac47d0e645a04c7e4fabe4dd063196 Mon Sep 17 00:00:00 2001 From: Tony <68118705+Legend-Master@users.noreply.github.com> Date: Tue, 19 Nov 2024 01:40:13 +0800 Subject: [PATCH] feat: expose raw gdk monitor (#1016) --- .changes/gdk-monitor.md | 5 +++++ src/platform/unix.rs | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 .changes/gdk-monitor.md diff --git a/.changes/gdk-monitor.md b/.changes/gdk-monitor.md new file mode 100644 index 000000000..ebf5a4579 --- /dev/null +++ b/.changes/gdk-monitor.md @@ -0,0 +1,5 @@ +--- +"tao": "patch" +--- + +Expose raw gdk monitor through `MonitorHandleExtUnix::gdk_monitor` diff --git a/src/platform/unix.rs b/src/platform/unix.rs index eb784a92b..2113220ac 100644 --- a/src/platform/unix.rs +++ b/src/platform/unix.rs @@ -20,6 +20,7 @@ pub use crate::platform_impl::EventLoop as UnixEventLoop; use crate::{ error::{ExternalError, OsError}, event_loop::{EventLoopBuilder, EventLoopWindowTarget}, + monitor::MonitorHandle, platform_impl::{x11::xdisplay::XError, Parent, Window as UnixWindow}, window::{Window, WindowBuilder}, }; @@ -282,3 +283,16 @@ unsafe extern "C" fn x_error_callback( // Fun fact: this return value is completely ignored. 0 } + +/// Additional methods on `MonitorHandle` that are specific to Unix. +pub trait MonitorHandleExtUnix { + /// Returns the gdk handle of the monitor. + fn gdk_monitor(&self) -> >k::gdk::Monitor; +} + +impl MonitorHandleExtUnix for MonitorHandle { + #[inline] + fn gdk_monitor(&self) -> >k::gdk::Monitor { + &self.inner.monitor + } +}