From 0dc2462358e1b1bdcf4e6a20eadf50722118da10 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Fri, 12 Jul 2024 14:59:46 +0300 Subject: [PATCH] mail/listing: fix one by off error on menu unread count Last digit of unread counts when showing scroll bar was overwritten by scroll bar. If scroll bar is visible, shift the unread count one column to the left. Signed-off-by: Manos Pitsidianakis --- meli/src/mail/listing.rs | 47 +++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/meli/src/mail/listing.rs b/meli/src/mail/listing.rs index 06760e23..0a1a516c 100644 --- a/meli/src/mail/listing.rs +++ b/meli/src/mail/listing.rs @@ -3265,28 +3265,35 @@ impl Listing { (None, Some(coll)) => format!(" ({}) v", coll), }; - let x = self + let skip_cols = { + let val = area.width().saturating_sub(count_string.len()); + let skip_cols = x.min(val); + if skip_cols == val && matches!(self.show_menu_scrollbar, ShowMenuScrollbar::True) { + skip_cols.saturating_sub(1) + } else { + skip_cols + } + }; + let (x, _) = self.menu.grid_mut().write_string( + &count_string, + unread_count_att.fg, + unread_count_att.bg, + unread_count_att.attrs + | if l.count.unwrap_or(0) > 0 { + Attr::BOLD + } else { + Attr::DEFAULT + }, + area.nth_row(y + 1).skip_cols(skip_cols), + None, + None, + ); + area = self.menu.area().skip_rows(account_y); + for c in self .menu .grid_mut() - .write_string( - &count_string, - unread_count_att.fg, - unread_count_att.bg, - unread_count_att.attrs - | if l.count.unwrap_or(0) > 0 { - Attr::BOLD - } else { - Attr::DEFAULT - }, - area.nth_row(y + 1) - .skip_cols(x.min(area.width().saturating_sub(count_string.len()))), - None, - None, - ) - .0 - + x.min(area.width().saturating_sub(count_string.len())); - area = self.menu.area().skip_rows(account_y); - for c in self.menu.grid_mut().row_iter(area, x..area.width(), y + 1) { + .row_iter(area, (x + skip_cols)..area.width(), y + 1) + { self.menu.grid_mut()[c] .set_fg(att.fg) .set_bg(att.bg)