ui/conversations: fix padding left unpainted

memfd
Manos Pitsidianakis 2019-12-06 16:36:10 +02:00
parent d048d8566d
commit d376f83f48
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 42 additions and 29 deletions

View File

@ -208,6 +208,7 @@ impl ListingTrait for ConversationsListing {
return; return;
} }
let rows = (get_y(bottom_right) - get_y(upper_left) + 1) / 3; let rows = (get_y(bottom_right) - get_y(upper_left) + 1) / 3;
let pad = (get_y(bottom_right) - get_y(upper_left) + 1) % 3;
if let Some(mvm) = self.movement.take() { if let Some(mvm) = self.movement.take() {
match mvm { match mvm {
@ -306,7 +307,7 @@ impl ListingTrait for ConversationsListing {
); );
/* calculate how many entries are visible in this page */ /* calculate how many entries are visible in this page */
let rows = if top_idx + rows > self.length { let (pad, rows) = if top_idx + rows > self.length {
clear_area( clear_area(
grid, grid,
( (
@ -314,9 +315,9 @@ impl ListingTrait for ConversationsListing {
bottom_right, bottom_right,
), ),
); );
self.length - top_idx (0, self.length - top_idx)
} else { } else {
rows (pad, rows)
}; };
/* fill any remaining columns, if our view is wider than self.content */ /* fill any remaining columns, if our view is wider than self.content */
@ -341,7 +342,23 @@ impl ListingTrait for ConversationsListing {
grid[(x, y_offset + 3 * y + 2)].set_bg(bg_color); grid[(x, y_offset + 3 * y + 2)].set_bg(bg_color);
} }
} }
if pad > 0 {
let y = 3 * rows;
let bg_color = grid[(get_x(upper_left) + width - 1, y_offset + y)].bg();
for x in (get_x(upper_left) + width)..=get_x(bottom_right) {
grid[(x, y_offset + y)].set_bg(bg_color);
grid[(x, y_offset + y + 1)].set_ch('▁');
grid[(x, y_offset + y + 1)].set_bg(bg_color);
if pad == 2 {
grid[(x, y_offset + y + 2)].set_fg(Color::Default);
grid[(x, y_offset + y + 2)].set_ch('▓');
grid[(x, y_offset + y + 2)].set_fg(padding_fg);
grid[(x, y_offset + y + 2)].set_bg(bg_color);
}
}
}
} }
context.dirty_areas.push_back(area); context.dirty_areas.push_back(area);
} }
@ -757,7 +774,7 @@ impl ConversationsListing {
self.content[(x, 3 * idx)].set_bg(bg_color); self.content[(x, 3 * idx)].set_bg(bg_color);
} }
/* draw subject */ /* draw subject */
let (x, _) = write_string_to_grid( let (mut x, _) = write_string_to_grid(
&strings.subject, &strings.subject,
&mut self.content, &mut self.content,
fg_color, fg_color,
@ -766,32 +783,28 @@ impl ConversationsListing {
((x, 3 * idx), (width - 1, 3 * idx)), ((x, 3 * idx), (width - 1, 3 * idx)),
None, None,
); );
let x = { for (t, &color) in strings.tags.split_whitespace().zip(strings.tags.1.iter()) {
let mut x = x + 1; let (_x, _) = write_string_to_grid(
for (t, &color) in strings.tags.split_whitespace().zip(strings.tags.1.iter()) { t,
let (_x, _) = write_string_to_grid( &mut self.content,
t, Color::White,
&mut self.content, Color::Byte(color),
Color::White, Attr::Bold,
Color::Byte(color), ((x + 1, 3 * idx), (width - 1, 3 * idx)),
Attr::Bold, None,
((x + 1, 3 * idx), (width - 1, 3 * idx)), );
None, self.content[(x, 3 * idx)].set_bg(Color::Byte(color));
); if _x < width {
self.content[(x, 3 * idx)].set_bg(Color::Byte(color)); self.content[(_x, 3 * idx)].set_bg(Color::Byte(color));
if _x < width { self.content[(_x, 3 * idx)].set_keep_bg(true);
self.content[(_x, 3 * idx)].set_bg(Color::Byte(color));
self.content[(_x, 3 * idx)].set_keep_bg(true);
}
for x in (x + 1).._x {
self.content[(x, 3 * idx)].set_keep_fg(true);
self.content[(x, 3 * idx)].set_keep_bg(true);
}
self.content[(x, 3 * idx)].set_keep_bg(true);
x = _x + 1;
} }
x for x in (x + 1).._x {
}; self.content[(x, 3 * idx)].set_keep_fg(true);
self.content[(x, 3 * idx)].set_keep_bg(true);
}
self.content[(x, 3 * idx)].set_keep_bg(true);
x = _x + 1;
}
for x in x..width { for x in x..width {
self.content[(x, 3 * idx)].set_bg(bg_color); self.content[(x, 3 * idx)].set_bg(bg_color);
} }