view.rs: fix redrawing errors
parent
a3903ea2cb
commit
e034f4dd52
|
@ -1210,7 +1210,7 @@ impl Component for MailView {
|
||||||
if shortcut!(key == shortcuts[MailView::DESCRIPTION]["toggle_expand_headers"]) =>
|
if shortcut!(key == shortcuts[MailView::DESCRIPTION]["toggle_expand_headers"]) =>
|
||||||
{
|
{
|
||||||
self.expand_headers = !self.expand_headers;
|
self.expand_headers = !self.expand_headers;
|
||||||
self.dirty = true;
|
self.set_dirty(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
UIEvent::Input(ref key)
|
UIEvent::Input(ref key)
|
||||||
|
|
|
@ -62,7 +62,6 @@ pub struct ThreadView {
|
||||||
movement: Option<PageMovement>,
|
movement: Option<PageMovement>,
|
||||||
dirty: bool,
|
dirty: bool,
|
||||||
content: CellBuffer,
|
content: CellBuffer,
|
||||||
initiated: bool,
|
|
||||||
id: ComponentId,
|
id: ComponentId,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +81,6 @@ impl ThreadView {
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let mut view = ThreadView {
|
let mut view = ThreadView {
|
||||||
reversed: false,
|
reversed: false,
|
||||||
initiated: false,
|
|
||||||
coordinates,
|
coordinates,
|
||||||
thread_group,
|
thread_group,
|
||||||
mailview: MailView::default(),
|
mailview: MailView::default(),
|
||||||
|
@ -799,57 +797,53 @@ impl ThreadView {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if this is the first ever draw, there is nothing on the grid to update so populate it
|
clear_area(
|
||||||
* first */
|
grid,
|
||||||
if !self.initiated {
|
(set_y(upper_left, y), set_y(bottom_right, mid + 1)),
|
||||||
clear_area(
|
crate::conf::value(context, "theme_default"),
|
||||||
grid,
|
);
|
||||||
(set_y(upper_left, y), bottom_right),
|
let (width, height) = self.content.size();
|
||||||
crate::conf::value(context, "theme_default"),
|
|
||||||
);
|
|
||||||
let (width, height) = self.content.size();
|
|
||||||
|
|
||||||
match (self.show_mailview, self.show_thread) {
|
match (self.show_mailview, self.show_thread) {
|
||||||
(true, true) => {
|
(true, true) => {
|
||||||
let area = (set_y(upper_left, y), set_y(bottom_right, mid));
|
let area = (set_y(upper_left, y), set_y(bottom_right, mid));
|
||||||
let upper_left = upper_left!(area);
|
let upper_left = upper_left!(area);
|
||||||
let bottom_right = bottom_right!(area);
|
let bottom_right = bottom_right!(area);
|
||||||
|
|
||||||
let rows = (get_y(bottom_right).saturating_sub(get_y(upper_left) + 1)) / 2;
|
let rows = (get_y(bottom_right).saturating_sub(get_y(upper_left) + 1)) / 2;
|
||||||
if rows == 0 {
|
if rows == 0 {
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
let page_no = (self.new_cursor_pos).wrapping_div(rows);
|
|
||||||
let top_idx = page_no * rows;
|
|
||||||
|
|
||||||
copy_area(
|
|
||||||
grid,
|
|
||||||
&self.content,
|
|
||||||
area,
|
|
||||||
((0, 2 * top_idx), (width - 1, height - 1)),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
(false, true) => {
|
let page_no = (self.new_cursor_pos).wrapping_div(rows);
|
||||||
let area = (set_y(upper_left, y), bottom_right);
|
let top_idx = page_no * rows;
|
||||||
let upper_left = upper_left!(area);
|
|
||||||
|
|
||||||
let rows = (get_y(bottom_right).saturating_sub(get_y(upper_left) + 1)) / 2;
|
copy_area(
|
||||||
if rows == 0 {
|
grid,
|
||||||
return;
|
&self.content,
|
||||||
}
|
area,
|
||||||
let page_no = (self.new_cursor_pos).wrapping_div(rows);
|
((0, 2 * top_idx), (width - 1, height - 1)),
|
||||||
let top_idx = page_no * rows;
|
);
|
||||||
copy_area(
|
context.dirty_areas.push_back(area);
|
||||||
grid,
|
|
||||||
&self.content,
|
|
||||||
area,
|
|
||||||
((0, 2 * top_idx), (width - 1, height - 1)),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
(_, false) => { /* show only envelope */ }
|
|
||||||
}
|
}
|
||||||
context.dirty_areas.push_back(area);
|
(false, true) => {
|
||||||
self.initiated = true;
|
let area = (set_y(upper_left, y), bottom_right);
|
||||||
|
let upper_left = upper_left!(area);
|
||||||
|
|
||||||
|
let rows = (get_y(bottom_right).saturating_sub(get_y(upper_left) + 1)) / 2;
|
||||||
|
if rows == 0 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let page_no = (self.new_cursor_pos).wrapping_div(rows);
|
||||||
|
let top_idx = page_no * rows;
|
||||||
|
copy_area(
|
||||||
|
grid,
|
||||||
|
&self.content,
|
||||||
|
area,
|
||||||
|
((0, 2 * top_idx), (width - 1, height - 1)),
|
||||||
|
);
|
||||||
|
context.dirty_areas.push_back(area);
|
||||||
|
}
|
||||||
|
(_, false) => { /* show only envelope */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
match (self.show_mailview, self.show_thread) {
|
match (self.show_mailview, self.show_thread) {
|
||||||
|
@ -988,10 +982,7 @@ impl Component for ThreadView {
|
||||||
/* Handle this before self.mailview does */
|
/* Handle this before self.mailview does */
|
||||||
context
|
context
|
||||||
.replies
|
.replies
|
||||||
.push_back(UIEvent::Action(Tab(New(Some(Box::new(Self {
|
.push_back(UIEvent::Action(Tab(New(Some(Box::new(self.clone()))))));
|
||||||
initiated: false,
|
|
||||||
..self.clone()
|
|
||||||
}))))));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
@ -1048,7 +1039,6 @@ impl Component for ThreadView {
|
||||||
}
|
}
|
||||||
self.new_expanded_pos = self.current_pos();
|
self.new_expanded_pos = self.current_pos();
|
||||||
self.show_mailview = true;
|
self.show_mailview = true;
|
||||||
//self.initiated = false;
|
|
||||||
self.set_dirty(true);
|
self.set_dirty(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1056,7 +1046,6 @@ impl Component for ThreadView {
|
||||||
if shortcut!(key == shortcuts[ThreadView::DESCRIPTION]["toggle_mailview"]) =>
|
if shortcut!(key == shortcuts[ThreadView::DESCRIPTION]["toggle_mailview"]) =>
|
||||||
{
|
{
|
||||||
self.show_mailview = !self.show_mailview;
|
self.show_mailview = !self.show_mailview;
|
||||||
self.initiated = false;
|
|
||||||
self.set_dirty(true);
|
self.set_dirty(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1064,7 +1053,6 @@ impl Component for ThreadView {
|
||||||
if shortcut!(key == shortcuts[ThreadView::DESCRIPTION]["toggle_threadview"]) =>
|
if shortcut!(key == shortcuts[ThreadView::DESCRIPTION]["toggle_threadview"]) =>
|
||||||
{
|
{
|
||||||
self.show_thread = !self.show_thread;
|
self.show_thread = !self.show_thread;
|
||||||
self.initiated = false;
|
|
||||||
self.set_dirty(true);
|
self.set_dirty(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1074,7 +1062,6 @@ impl Component for ThreadView {
|
||||||
self.reversed = !self.reversed;
|
self.reversed = !self.reversed;
|
||||||
let expanded_hash = self.entries[self.expanded_pos].index.1;
|
let expanded_hash = self.entries[self.expanded_pos].index.1;
|
||||||
self.initiate(Some(expanded_hash), context);
|
self.initiate(Some(expanded_hash), context);
|
||||||
self.initiated = false;
|
|
||||||
self.dirty = true;
|
self.dirty = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue