diff options
| -rw-r--r-- | niri-config/src/lib.rs | 12 | ||||
| -rw-r--r-- | src/layout/focus_ring.rs | 10 |
2 files changed, 14 insertions, 8 deletions
diff --git a/niri-config/src/lib.rs b/niri-config/src/lib.rs index cfa87a24..ddd3003d 100644 --- a/niri-config/src/lib.rs +++ b/niri-config/src/lib.rs @@ -530,6 +530,18 @@ pub struct Gradient { pub in_: GradientInterpolation, } +impl From<Color> for Gradient { + fn from(value: Color) -> Self { + Self { + from: value, + to: value, + angle: 0, + relative_to: GradientRelativeTo::Window, + in_: GradientInterpolation::default(), + } + } +} + #[derive(knuffel::DecodeScalar, Debug, Default, Clone, Copy, PartialEq, Eq)] pub enum GradientRelativeTo { #[default] diff --git a/src/layout/focus_ring.rs b/src/layout/focus_ring.rs index b6c65b3f..3d97cb02 100644 --- a/src/layout/focus_ring.rs +++ b/src/layout/focus_ring.rs @@ -1,7 +1,7 @@ use std::iter::zip; use arrayvec::ArrayVec; -use niri_config::{CornerRadius, Gradient, GradientInterpolation, GradientRelativeTo}; +use niri_config::{CornerRadius, Gradient, GradientRelativeTo}; use smithay::backend::renderer::element::Kind; use smithay::utils::{Logical, Point, Rectangle, Size}; @@ -86,13 +86,7 @@ impl FocusRing { self.use_border_shader = radius != CornerRadius::default() || gradient.is_some(); // Set the defaults for solid color + rounded corners. - let gradient = gradient.unwrap_or(Gradient { - from: color, - to: color, - angle: 0, - relative_to: GradientRelativeTo::Window, - in_: GradientInterpolation::default(), - }); + let gradient = gradient.unwrap_or_else(|| Gradient::from(color)); let full_rect = Rectangle::new(Point::from((-width, -width)), self.full_size); let gradient_area = match gradient.relative_to { |
