aboutsummaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/focus_ring.rs11
-rw-r--r--src/layout/tile.rs8
2 files changed, 12 insertions, 7 deletions
diff --git a/src/layout/focus_ring.rs b/src/layout/focus_ring.rs
index 757b2085..a0d0acfe 100644
--- a/src/layout/focus_ring.rs
+++ b/src/layout/focus_ring.rs
@@ -194,6 +194,9 @@ impl FocusRing {
border: &mut BorderRenderElement,
location: Point<i32, Logical>,
size: Size<i32, Logical>| {
+ let full_rect = Rectangle::from_loc_and_size(full_rect.loc - location, full_rect.size);
+ let view_rect = Rectangle::from_loc_and_size(view_rect.loc - location, view_rect.size);
+
let elem = if has_border_shader {
if let Some(gradient) = gradient {
let gradient_area = match gradient.relative_to {
@@ -201,7 +204,7 @@ impl FocusRing {
GradientRelativeTo::WorkspaceView => view_rect,
};
border.update(
- Rectangle::from_loc_and_size(location, size),
+ size,
gradient_area,
gradient.from.into(),
gradient.to.into(),
@@ -210,10 +213,10 @@ impl FocusRing {
border_width,
self.radius,
);
- Some(border.clone().into())
+ Some(border.clone().with_location(location).into())
} else if self.radius != CornerRadius::default() {
border.update(
- Rectangle::from_loc_and_size(location, size),
+ size,
full_rect,
color.into(),
color.into(),
@@ -222,7 +225,7 @@ impl FocusRing {
border_width,
self.radius,
);
- Some(border.clone().into())
+ Some(border.clone().with_location(location).into())
} else {
None
}
diff --git a/src/layout/tile.rs b/src/layout/tile.rs
index d5237ae7..b5b40df0 100644
--- a/src/layout/tile.rs
+++ b/src/layout/tile.rs
@@ -720,16 +720,18 @@ impl<W: LayoutElement> Tile<W> {
// user-provided radius, so our blocked-out rendering should match that
// radius.
if radius != CornerRadius::default() && has_border_shader {
+ let elem_geo = elem.geometry(Scale::from(1.)).to_logical(1);
return BorderRenderElement::new(
- elem.geometry(Scale::from(1.)).to_logical(1),
- Rectangle::from_loc_and_size(Point::from((0, 0)), geo.size),
+ elem_geo.size,
+ Rectangle::from_loc_and_size((0, 0), elem_geo.size),
elem.color(),
elem.color(),
0.,
- elem.geometry(Scale::from(1.)).to_logical(1),
+ Rectangle::from_loc_and_size(geo.loc - elem_geo.loc, geo.size),
0.,
radius,
)
+ .with_location(elem_geo.loc)
.into();
}