aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/layout/tile.rs53
-rw-r--r--src/layout/workspace.rs1
2 files changed, 23 insertions, 31 deletions
diff --git a/src/layout/tile.rs b/src/layout/tile.rs
index 1c25fa4a..99c4876b 100644
--- a/src/layout/tile.rs
+++ b/src/layout/tile.rs
@@ -244,36 +244,30 @@ impl<W: LayoutElement> Tile<W> {
renderer: &mut R,
location: Point<i32, Logical>,
scale: Scale<f64>,
- ) -> Vec<TileRenderElement<R>>
+ ) -> impl Iterator<Item = TileRenderElement<R>>
where
<R as Renderer>::TextureId: 'static,
{
- let mut rv = Vec::new();
-
let window_pos = location + self.window_loc();
- rv.extend(
- self.window
- .render(renderer, window_pos, scale)
- .into_iter()
- .map(Into::into),
- );
-
- if self.effective_border_width().is_some() {
- rv.extend(
- self.border
- .render(scale)
- .map(|elem| {
- RelocateRenderElement::from_element(
- elem,
- location.to_physical_precise_round(scale),
- Relocate::Relative,
- )
- })
- .map(Into::into),
- );
- }
-
- if self.is_fullscreen {
+ let rv = self
+ .window
+ .render(renderer, window_pos, scale)
+ .into_iter()
+ .map(Into::into);
+
+ let elem = self.effective_border_width().map(|_| {
+ self.border.render(scale).map(move |elem| {
+ RelocateRenderElement::from_element(
+ elem,
+ location.to_physical_precise_round(scale),
+ Relocate::Relative,
+ )
+ .into()
+ })
+ });
+ let rv = rv.chain(elem.into_iter().flatten());
+
+ let elem = self.is_fullscreen.then(|| {
let elem = SolidColorRenderElement::from_buffer(
&self.fullscreen_backdrop,
location.to_physical_precise_round(scale),
@@ -281,9 +275,8 @@ impl<W: LayoutElement> Tile<W> {
1.,
Kind::Unspecified,
);
- rv.push(RelocateRenderElement::from_element(elem, (0, 0), Relocate::Relative).into());
- }
-
- rv
+ RelocateRenderElement::from_element(elem, (0, 0), Relocate::Relative).into()
+ });
+ rv.chain(elem)
}
}
diff --git a/src/layout/workspace.rs b/src/layout/workspace.rs
index f9f786a9..09c53ecf 100644
--- a/src/layout/workspace.rs
+++ b/src/layout/workspace.rs
@@ -1095,7 +1095,6 @@ impl<W: LayoutElement> Workspace<W> {
// Draw the window itself.
rv.extend(
tile.render(renderer, tile_pos, output_scale)
- .into_iter()
.map(Into::into),
);