From 86e4ce3d97514ed28e1d4b99c915dbc35a954c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aliaksandr=20Tru=C5=A1?= Date: Fri, 3 Jan 2025 13:08:29 +0100 Subject: [PATCH] fix(wayland): fix issue with tiled and maximized window Potential fix for #6262 --- window/src/os/wayland/window.rs | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/window/src/os/wayland/window.rs b/window/src/os/wayland/window.rs index 79960b3e4a4..36aa5545c0a 100644 --- a/window/src/os/wayland/window.rs +++ b/window/src/os/wayland/window.rs @@ -592,7 +592,6 @@ impl WaylandWindowInner { if self.window_frame.is_dirty() && !self.window_frame.is_hidden() { self.window_frame.draw(); } - window.wl_surface().commit(); } } @@ -854,6 +853,7 @@ impl WaylandWindowInner { let height = NonZeroU32::new(pixel_height as u32).unwrap_or(NonZeroU32::new(1).unwrap()); self.window_frame.resize(width, height); + pending.refresh_decorations = true } let (x, y) = self.window_frame.location(); self.window @@ -915,7 +915,6 @@ impl WaylandWindowInner { } } } - self.refresh_frame(); self.do_paint().unwrap(); } } @@ -1243,7 +1242,6 @@ impl WaylandState { .window_by_id(window_id) .expect("Inner Window should exist"); - let is_frame_hidden = window_inner.borrow().window_frame.is_hidden(); let p = window_inner.borrow().pending_event.clone(); let mut pending_event = p.lock().unwrap(); @@ -1280,31 +1278,6 @@ impl WaylandState { state |= WindowState::MAXIMIZED; } - // For MAXIMIZED and FULL_SCREEN window configure contains Windowed size. - // Replacing it with Wayland suggested bounds. - if state.intersects(WindowState::MAXIMIZED | WindowState::FULL_SCREEN) { - if let Some((w, h)) = configure.suggested_bounds { - pending_event.configure.replace((w, h)); - } - } else if configure - .state - .contains(SCTKWindowState::TILED_TOP | SCTKWindowState::TILED_BOTTOM) - && is_frame_hidden - { - // Tiled window without borders will take exactly half of the screen. - if let Some((w, h)) = configure.suggested_bounds { - pending_event.configure.replace((w / 2, h)); - } - } else if configure - .state - .contains(SCTKWindowState::TILED_LEFT | SCTKWindowState::TILED_RIGHT) - && is_frame_hidden - { - // Tiled window without borders will take exactly half of the screen. - if let Some((w, h)) = configure.suggested_bounds { - pending_event.configure.replace((w, h / 2)); - } - } log::debug!( "Config: self.window_state={:?}, states: {:?} {:?}", pending_event.window_state,