Skip to content

Commit

Permalink
fix(wayland): fix issue with tiled and maximized window
Browse files Browse the repository at this point in the history
Potential fix for #6262
  • Loading branch information
aliaksandr-trush committed Jan 3, 2025
1 parent d8f4cb3 commit 86e4ce3
Showing 1 changed file with 1 addition and 28 deletions.
29 changes: 1 addition & 28 deletions window/src/os/wayland/window.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -915,7 +915,6 @@ impl WaylandWindowInner {
}
}
}
self.refresh_frame();
self.do_paint().unwrap();
}
}
Expand Down Expand Up @@ -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();

Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 86e4ce3

Please sign in to comment.