From ea3f47fa449a75fa1c0b1b234b762206a4751858 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Mon, 7 Oct 2019 16:47:05 +0300 Subject: [PATCH] ui: clear all state in Listing::set_coordinates If a listing lists search results, ie when "filtering" with a filter term, it sets up its state in filtered_selection, filtered_order etc. set_coordinates() should reset that state. --- ui/src/components/mail/listing/compact.rs | 6 ++++++ ui/src/components/mail/listing/conversations.rs | 4 ++++ ui/src/components/mail/listing/plain.rs | 2 ++ ui/src/components/mail/listing/thread.rs | 3 +++ 4 files changed, 15 insertions(+) diff --git a/ui/src/components/mail/listing/compact.rs b/ui/src/components/mail/listing/compact.rs index 82bf07868..6c9706b54 100644 --- a/ui/src/components/mail/listing/compact.rs +++ b/ui/src/components/mail/listing/compact.rs @@ -77,10 +77,16 @@ impl ListingTrait for CompactListing { fn coordinates(&self) -> (usize, usize, Option) { (self.new_cursor_pos.0, self.new_cursor_pos.1, None) } + fn set_coordinates(&mut self, coordinates: (usize, usize, Option)) { self.new_cursor_pos = (coordinates.0, coordinates.1, 0); self.unfocused = false; + self.filtered_selection.clear(); + self.filtered_order.clear(); + self.filter_term.clear(); + self.row_updates.clear(); } + fn highlight_line(&mut self, grid: &mut CellBuffer, area: Area, idx: usize, context: &Context) { if self.length == 0 { return; diff --git a/ui/src/components/mail/listing/conversations.rs b/ui/src/components/mail/listing/conversations.rs index 4010907ae..d628cce69 100644 --- a/ui/src/components/mail/listing/conversations.rs +++ b/ui/src/components/mail/listing/conversations.rs @@ -111,6 +111,10 @@ impl ListingTrait for ConversationsListing { fn set_coordinates(&mut self, coordinates: (usize, usize, Option)) { self.new_cursor_pos = (coordinates.0, coordinates.1, 0); self.unfocused = false; + self.filtered_selection.clear(); + self.filtered_order.clear(); + self.filter_term.clear(); + self.row_updates.clear(); } fn highlight_line(&mut self, grid: &mut CellBuffer, area: Area, idx: usize, context: &Context) { diff --git a/ui/src/components/mail/listing/plain.rs b/ui/src/components/mail/listing/plain.rs index be31814e0..e419bde91 100644 --- a/ui/src/components/mail/listing/plain.rs +++ b/ui/src/components/mail/listing/plain.rs @@ -92,6 +92,8 @@ impl ListingTrait for PlainListing { } fn set_coordinates(&mut self, coordinates: (usize, usize, Option)) { self.new_cursor_pos = (coordinates.0, coordinates.1, 0); + self.unfocused = false; + self.local_collection.clear(); } fn highlight_line(&mut self, grid: &mut CellBuffer, area: Area, idx: usize, context: &Context) { let account = &context.accounts[self.cursor_pos.0]; diff --git a/ui/src/components/mail/listing/thread.rs b/ui/src/components/mail/listing/thread.rs index d29bccb09..9a8dfc65e 100644 --- a/ui/src/components/mail/listing/thread.rs +++ b/ui/src/components/mail/listing/thread.rs @@ -58,6 +58,9 @@ impl ListingTrait for ThreadListing { } fn set_coordinates(&mut self, coordinates: (usize, usize, Option)) { self.new_cursor_pos = (coordinates.0, coordinates.1, 0); + self.unfocused = false; + self.locations.clear(); + self.initialised = false; } fn draw_list(&mut self, grid: &mut CellBuffer, area: Area, context: &mut Context) { if self.cursor_pos.1 != self.new_cursor_pos.1 || self.cursor_pos.0 != self.new_cursor_pos.0