Add is_resizable and is_decorated on Wayland

This commit brings `is_resizable` and `is_decorated`. Since the client
is responsible for both of them, they could be tracked without deep
syncing with server.
This commit is contained in:
Kirill Chibisov 2022-04-07 03:05:11 +03:00 committed by GitHub
parent ab1f636960
commit e8d910ffd3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 4 deletions

View file

@ -58,6 +58,12 @@ pub struct Window {
/// Requests that SCTK window should perform.
window_requests: Arc<Mutex<Vec<WindowRequest>>>,
/// Whether the window is resizeable.
resizeable: AtomicBool,
/// Whether the window is decorated.
decorated: AtomicBool,
}
impl Window {
@ -248,6 +254,8 @@ impl Window {
fullscreen,
maximized,
windowing_features,
resizeable: AtomicBool::new(attributes.resizable),
decorated: AtomicBool::new(attributes.decorations),
};
Ok(window)
@ -338,12 +346,13 @@ impl Window {
#[inline]
pub fn set_resizable(&self, resizable: bool) {
self.resizeable.store(resizable, Ordering::Relaxed);
self.send_request(WindowRequest::Resizeable(resizable));
}
#[inline]
pub fn is_resizable(&self) -> bool {
true
self.resizeable.load(Ordering::Relaxed)
}
#[inline]
@ -355,12 +364,13 @@ impl Window {
#[inline]
pub fn set_decorations(&self, decorate: bool) {
self.decorated.store(decorate, Ordering::Relaxed);
self.send_request(WindowRequest::Decorate(decorate));
}
#[inline]
pub fn is_decorated(&self) -> bool {
true
self.decorated.load(Ordering::Relaxed)
}
#[inline]

View file

@ -686,7 +686,7 @@ impl Window {
///
/// ## Platform-specific
///
/// - **Wayland / X11:** Not implemented.
/// - **X11:** Not implemented.
/// - **iOS / Android / Web:** Unsupported.
#[inline]
pub fn is_resizable(&self) -> bool {
@ -777,7 +777,7 @@ impl Window {
///
/// ## Platform-specific
///
/// - **Wayland / X11:** Not implemented.
/// - **X11:** Not implemented.
/// - **iOS / Android / Web:** Unsupported.
#[inline]
pub fn is_decorated(&self) -> bool {