diff options
Diffstat (limited to 'src/layout/shadow.rs')
| -rw-r--r-- | src/layout/shadow.rs | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/src/layout/shadow.rs b/src/layout/shadow.rs index 1600e333..3e0605c4 100644 --- a/src/layout/shadow.rs +++ b/src/layout/shadow.rs @@ -157,26 +157,19 @@ impl Shadow { &self, renderer: &mut impl NiriRenderer, location: Point<f64, Logical>, - ) -> impl Iterator<Item = ShadowRenderElement> { - let mut rv = Vec::new(); - + ) -> impl Iterator<Item = ShadowRenderElement> + '_ { if !self.config.on { - return rv.into_iter(); + return None.into_iter().flatten(); } let has_shadow_shader = ShadowRenderElement::has_shader(renderer); if !has_shadow_shader { - return rv.into_iter(); + return None.into_iter().flatten(); } - let mut push = |shader: &ShadowRenderElement, location: Point<f64, Logical>| { - rv.push(shader.clone().with_location(location)); - }; - - for (shader, rect) in zip(&self.shaders, &self.shader_rects) { - push(shader, location + rect.loc); - } + let rv = zip(&self.shaders, &self.shader_rects) + .map(move |(shader, rect)| shader.clone().with_location(location + rect.loc)); - rv.into_iter() + Some(rv).into_iter().flatten() } } |
