summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Oram <dev@mitmaro.ca>2020-08-04 23:54:05 -0230
committerTim Oram <dev@mitmaro.ca>2020-09-01 22:41:19 -0230
commitc28186e99730f82bac3ada8d729825e285752371 (patch)
treebd635cfde551b1915f0d66a279d216a7f5e793fa
parentb016af7ac5e3afedaaa646d3b785eed365918eff (diff)
Ensure rebuild of ViewData
There were a few places where the ViewData was not rebuilt, causing some renders to display stale data. This ensures that the view data is rebuilt in all cases.
-rw-r--r--src/confirm_abort/mod.rs5
-rw-r--r--src/confirm_rebase/mod.rs5
-rw-r--r--src/error/mod.rs2
-rw-r--r--src/external_editor/mod.rs7
-rw-r--r--src/show_commit/mod.rs8
-rw-r--r--src/window_size_error/mod.rs1
6 files changed, 23 insertions, 5 deletions
diff --git a/src/confirm_abort/mod.rs b/src/confirm_abort/mod.rs
index 10fe6d8..d9fe4a3 100644
--- a/src/confirm_abort/mod.rs
+++ b/src/confirm_abort/mod.rs
@@ -13,7 +13,10 @@ pub struct ConfirmAbort {
}
impl ProcessModule for ConfirmAbort {
- fn build_view_data(&mut self, _: &View<'_>, _: &GitInteractive) -> &ViewData {
+ fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData {
+ let (window_width, window_height) = view.get_view_size();
+ self.view_data.set_view_size(window_width, window_height);
+ self.view_data.rebuild();
&self.view_data
}
diff --git a/src/confirm_rebase/mod.rs b/src/confirm_rebase/mod.rs
index 9f0367d..1bd4d21 100644
--- a/src/confirm_rebase/mod.rs
+++ b/src/confirm_rebase/mod.rs
@@ -13,7 +13,10 @@ pub struct ConfirmRebase {
}
impl ProcessModule for ConfirmRebase {
- fn build_view_data(&mut self, _: &View<'_>, _: &GitInteractive) -> &ViewData {
+ fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData {
+ let (window_width, window_height) = view.get_view_size();
+ self.view_data.set_view_size(window_width, window_height);
+ self.view_data.rebuild();
&self.view_data
}
diff --git a/src/error/mod.rs b/src/error/mod.rs
index ff6910b..cab088a 100644
--- a/src/error/mod.rs
+++ b/src/error/mod.rs
@@ -32,10 +32,12 @@ impl ProcessModule for Error {
let (view_width, view_height) = view.get_view_size();
if let Some(ref mut view_data) = self.view_data {
view_data.set_view_size(view_width, view_height);
+ view_data.rebuild();
view_data
}
else {
self.view_data_no_error.set_view_size(view_width, view_height);
+ self.view_data_no_error.rebuild();
&self.view_data_no_error
}
}
diff --git a/src/external_editor/mod.rs b/src/external_editor/mod.rs
index bae64b6..dd17b62 100644
--- a/src/external_editor/mod.rs
+++ b/src/external_editor/mod.rs
@@ -39,11 +39,16 @@ impl<'e> ProcessModule for ExternalEditor<'e> {
}
}
- fn build_view_data(&mut self, _: &View<'_>, _: &GitInteractive) -> &ViewData {
+ fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData {
+ let (window_width, window_height) = view.get_view_size();
if let ExternalEditorState::Empty = self.state {
+ self.view_data_error.set_view_size(window_width, window_height);
+ self.view_data_error.rebuild();
&self.view_data_error
}
else {
+ self.view_data_external.set_view_size(window_width, window_height);
+ self.view_data_external.rebuild();
&self.view_data_external
}
}
diff --git a/src/show_commit/mod.rs b/src/show_commit/mod.rs
index 0978cd7..633b157 100644
--- a/src/show_commit/mod.rs
+++ b/src/show_commit/mod.rs
@@ -66,10 +66,10 @@ impl<'s> ProcessModule for ShowCommit<'s> {
}
fn build_view_data(&mut self, view: &View<'_>, _: &GitInteractive) -> &ViewData {
+ let (view_width, view_height) = view.get_view_size();
match &self.commit {
Some(commit) => {
if self.view_data.is_empty() {
- let (view_width, view_height) = view.get_view_size();
let is_full_width = view_width >= MINIMUM_FULL_WINDOW_WIDTH;
let commit = commit.as_ref().unwrap(); // if commit is error it will be caught in process
@@ -107,7 +107,11 @@ impl<'s> ProcessModule for ShowCommit<'s> {
}
&self.view_data
},
- None => &self.no_commit_view_data,
+ None => {
+ self.no_commit_view_data.set_view_size(view_width, view_height);
+ self.no_commit_view_data.rebuild();
+ &self.no_commit_view_data
+ },
}
}
diff --git a/src/window_size_error/mod.rs b/src/window_size_error/mod.rs
index 59f5875..183cb83 100644
--- a/src/window_size_error/mod.rs
+++ b/src/window_size_error/mod.rs
@@ -49,6 +49,7 @@ impl ProcessModule for WindowSizeError {
self.view_data.clear();
self.view_data.push_line(ViewLine::new(vec![LineSegment::new(message)]));
self.view_data.set_view_size(window_width, window_height);
+ self.view_data.rebuild();
&self.view_data
}