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 <manos@pitsidianak.is>
pull/437/head
Manos Pitsidianakis 2 months ago
parent a8e82a302b
commit 0dc2462358
No known key found for this signature in database
GPG Key ID: 7729C7707F7E09D0

@ -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)

Loading…
Cancel
Save