From 828e596dead04c2044393b04cc37b4e4bf6a1de9 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Mon, 7 Sep 2026 13:42:44 +0200 Subject: [PATCH] screen: Keep GNSS status on normal display clear --- src/screen.rs | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/screen.rs b/src/screen.rs index 5b291bf..d5a0c45 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -220,7 +220,28 @@ where Ok(()) } + /// Clears the screen, but keeps the GNSS status row fn clear(&mut self) -> Result<(), D::Error> + where + D: DrawTarget, + { + // this only differes from clear_all on big screens + if self.is_big_height() { + #[allow(clippy::cast_sign_loss)] + let max_y = (250 + self.size.offset_top) as u32; + + primitives::Rectangle::new( + geometry::Point::new(0, 0), + geometry::Size::new(self.size.width.into(), max_y), + ) + .into_styled(Self::BK_STYLE) + .draw(&mut self.target) + } else { + self.clear_all() + } + } + + fn clear_all(&mut self) -> Result<(), D::Error> where D: DrawTarget, { @@ -302,7 +323,7 @@ where // uses full screen width and height // - from 0 to 105+67 = 172 pixels for small screens // - from 0 to 105+67+20 = 192 pixels for big screens - #[allow(unused)] + #[allow(unused, clippy::too_many_lines)] fn draw_glosa( &mut self, data: &applogic::GlosaSignalInfo, @@ -397,7 +418,7 @@ where text::Alignment::Center, ) .draw(&mut self.target)?; - }; + } // draw maneuver text::Text::with_alignment( @@ -453,7 +474,7 @@ where fn draw_slash_screen(&mut self) -> Result<(), D::Error> { let text_style = mono_font::MonoTextStyle::new(&profont::PROFONT_18_POINT, Self::COLOR_FG); - self.clear()?; + self.clear_all()?; let sig_width = i32::from(self.size.width) / 3; let circle_dia = 50;