linux: Treat fullscreen as tiled on X11 and prevent resizing while maximized (#13990)
Two quick fixes for issues I noticed: 1. Fullscreening an unmaximized X11 window still showed rounded window corners and allowed resizing 2. Maximized windows still allowed for resizing on corners due to missing checks  Release Notes: - N/A
This commit is contained in:
parent
29226170f1
commit
23c84f8dc0
2 changed files with 10 additions and 7 deletions
|
@ -1240,7 +1240,9 @@ impl PlatformWindow for X11Window {
|
||||||
match state.decorations {
|
match state.decorations {
|
||||||
WindowDecorations::Server => Decorations::Server,
|
WindowDecorations::Server => Decorations::Server,
|
||||||
WindowDecorations::Client => {
|
WindowDecorations::Client => {
|
||||||
let tiling = if let Some(edge_constraints) = &state.edge_constraints {
|
let tiling = if state.fullscreen {
|
||||||
|
Tiling::tiled()
|
||||||
|
} else if let Some(edge_constraints) = &state.edge_constraints {
|
||||||
edge_constraints.to_tiling()
|
edge_constraints.to_tiling()
|
||||||
} else {
|
} else {
|
||||||
// https://source.chromium.org/chromium/chromium/src/+/main:ui/ozone/platform/x11/x11_window.cc;l=2519;drc=1f14cc876cc5bf899d13284a12c451498219bb2d
|
// https://source.chromium.org/chromium/chromium/src/+/main:ui/ozone/platform/x11/x11_window.cc;l=2519;drc=1f14cc876cc5bf899d13284a12c451498219bb2d
|
||||||
|
@ -1251,7 +1253,6 @@ impl PlatformWindow for X11Window {
|
||||||
right: state.maximized_horizontal,
|
right: state.maximized_horizontal,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Decorations::Client { tiling }
|
Decorations::Client { tiling }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1262,7 +1263,9 @@ impl PlatformWindow for X11Window {
|
||||||
|
|
||||||
let dp = (inset.0 * state.scale_factor) as u32;
|
let dp = (inset.0 * state.scale_factor) as u32;
|
||||||
|
|
||||||
let insets = if let Some(edge_constraints) = &state.edge_constraints {
|
let insets = if state.fullscreen {
|
||||||
|
[0, 0, 0, 0]
|
||||||
|
} else if let Some(edge_constraints) = &state.edge_constraints {
|
||||||
let left = if edge_constraints.left_tiled { 0 } else { dp };
|
let left = if edge_constraints.left_tiled { 0 } else { dp };
|
||||||
let top = if edge_constraints.top_tiled { 0 } else { dp };
|
let top = if edge_constraints.top_tiled { 0 } else { dp };
|
||||||
let right = if edge_constraints.right_tiled { 0 } else { dp };
|
let right = if edge_constraints.right_tiled { 0 } else { dp };
|
||||||
|
|
|
@ -6658,7 +6658,7 @@ fn resize_edge(
|
||||||
|
|
||||||
let corner_size = size(shadow_size * 1.5, shadow_size * 1.5);
|
let corner_size = size(shadow_size * 1.5, shadow_size * 1.5);
|
||||||
let top_left_bounds = Bounds::new(Point::new(px(0.), px(0.)), corner_size);
|
let top_left_bounds = Bounds::new(Point::new(px(0.), px(0.)), corner_size);
|
||||||
if top_left_bounds.contains(&pos) {
|
if !tiling.top && top_left_bounds.contains(&pos) {
|
||||||
return Some(ResizeEdge::TopLeft);
|
return Some(ResizeEdge::TopLeft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6666,7 +6666,7 @@ fn resize_edge(
|
||||||
Point::new(window_size.width - corner_size.width, px(0.)),
|
Point::new(window_size.width - corner_size.width, px(0.)),
|
||||||
corner_size,
|
corner_size,
|
||||||
);
|
);
|
||||||
if top_right_bounds.contains(&pos) {
|
if !tiling.top && top_right_bounds.contains(&pos) {
|
||||||
return Some(ResizeEdge::TopRight);
|
return Some(ResizeEdge::TopRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6674,7 +6674,7 @@ fn resize_edge(
|
||||||
Point::new(px(0.), window_size.height - corner_size.height),
|
Point::new(px(0.), window_size.height - corner_size.height),
|
||||||
corner_size,
|
corner_size,
|
||||||
);
|
);
|
||||||
if bottom_left_bounds.contains(&pos) {
|
if !tiling.bottom && bottom_left_bounds.contains(&pos) {
|
||||||
return Some(ResizeEdge::BottomLeft);
|
return Some(ResizeEdge::BottomLeft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6685,7 +6685,7 @@ fn resize_edge(
|
||||||
),
|
),
|
||||||
corner_size,
|
corner_size,
|
||||||
);
|
);
|
||||||
if bottom_right_bounds.contains(&pos) {
|
if !tiling.bottom && bottom_right_bounds.contains(&pos) {
|
||||||
return Some(ResizeEdge::BottomRight);
|
return Some(ResizeEdge::BottomRight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue