Add Window::is_minimized
Co-authored-by: Kirill Chibisov <contact@kchibisov.com> Co-authored-by: Markus Siglreithmaier <m.siglreith@gmail.com>
This commit is contained in:
parent
de782504ab
commit
809162fbd0
12 changed files with 83 additions and 11 deletions
|
|
@ -464,6 +464,11 @@ impl Window {
|
|||
x11_or_wayland!(match self; Window(w) => w.set_minimized(minimized))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_minimized(&self) -> Option<bool> {
|
||||
x11_or_wayland!(match self; Window(w) => w.is_minimized())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub(crate) fn fullscreen(&self) -> Option<Fullscreen> {
|
||||
x11_or_wayland!(match self; Window(w) => w.fullscreen())
|
||||
|
|
|
|||
|
|
@ -483,6 +483,11 @@ impl Window {
|
|||
self.decorated.load(Ordering::Relaxed)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_minimized(&self) -> Option<bool> {
|
||||
None
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn set_minimized(&self, minimized: bool) {
|
||||
// You can't unminimize the window on Wayland.
|
||||
|
|
|
|||
|
|
@ -802,6 +802,20 @@ impl UnownedWindow {
|
|||
self.xconn.primary_monitor()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_minimized(&self) -> Option<bool> {
|
||||
let state_atom = unsafe { self.xconn.get_atom_unchecked(b"_NET_WM_STATE\0") };
|
||||
let state = self
|
||||
.xconn
|
||||
.get_property(self.xwindow, state_atom, ffi::XA_ATOM);
|
||||
let hidden_atom = unsafe { self.xconn.get_atom_unchecked(b"_NET_WM_STATE_HIDDEN\0") };
|
||||
|
||||
Some(match state {
|
||||
Ok(atoms) => atoms.iter().any(|atom: &ffi::Atom| *atom == hidden_atom),
|
||||
_ => false,
|
||||
})
|
||||
}
|
||||
|
||||
fn set_minimized_inner(&self, minimized: bool) -> util::Flusher<'_> {
|
||||
unsafe {
|
||||
if minimized {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue