tiling: Properly center windows with gaps
This commit is contained in:
parent
15fe9af342
commit
77858d3628
1 changed files with 26 additions and 22 deletions
|
|
@ -1087,34 +1087,36 @@ impl TilingLayout {
|
||||||
.into_iter()
|
.into_iter()
|
||||||
{
|
{
|
||||||
let node = tree.get_mut(&node_id).unwrap();
|
let node = tree.get_mut(&node_id).unwrap();
|
||||||
if let Some(geo) = stack.pop() {
|
if let Some(mut geo) = stack.pop() {
|
||||||
let data = node.data_mut();
|
let data = node.data_mut();
|
||||||
data.update_geometry(geo);
|
|
||||||
match data {
|
match data {
|
||||||
Data::Group {
|
Data::Group {
|
||||||
orientation, sizes, ..
|
orientation, sizes, ..
|
||||||
} => match orientation {
|
} => {
|
||||||
Orientation::Horizontal => {
|
match orientation {
|
||||||
let mut previous: i32 = sizes.iter().sum();
|
Orientation::Horizontal => {
|
||||||
for size in sizes.iter().rev() {
|
let mut previous: i32 = sizes.iter().sum();
|
||||||
previous -= *size;
|
for size in sizes.iter().rev() {
|
||||||
stack.push(Rectangle::from_loc_and_size(
|
previous -= *size;
|
||||||
(geo.loc.x, geo.loc.y + previous),
|
stack.push(Rectangle::from_loc_and_size(
|
||||||
(geo.size.w, *size),
|
(geo.loc.x, geo.loc.y + previous),
|
||||||
));
|
(geo.size.w, *size),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Orientation::Vertical => {
|
||||||
|
let mut previous: i32 = sizes.iter().sum();
|
||||||
|
for size in sizes.iter().rev() {
|
||||||
|
previous -= *size;
|
||||||
|
stack.push(Rectangle::from_loc_and_size(
|
||||||
|
(geo.loc.x + previous, geo.loc.y),
|
||||||
|
(*size, geo.size.h),
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Orientation::Vertical => {
|
data.update_geometry(geo);
|
||||||
let mut previous: i32 = sizes.iter().sum();
|
}
|
||||||
for size in sizes.iter().rev() {
|
|
||||||
previous -= *size;
|
|
||||||
stack.push(Rectangle::from_loc_and_size(
|
|
||||||
(geo.loc.x + previous, geo.loc.y),
|
|
||||||
(*size, geo.size.h),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
Data::Mapped { mapped, .. } => {
|
Data::Mapped { mapped, .. } => {
|
||||||
if !(mapped.is_fullscreen() || mapped.is_maximized()) {
|
if !(mapped.is_fullscreen() || mapped.is_maximized()) {
|
||||||
mapped.set_tiled(true);
|
mapped.set_tiled(true);
|
||||||
|
|
@ -1123,6 +1125,8 @@ impl TilingLayout {
|
||||||
);
|
);
|
||||||
mapped.configure();
|
mapped.configure();
|
||||||
}
|
}
|
||||||
|
geo.loc += (inner, inner).into();
|
||||||
|
data.update_geometry(geo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue