summaryrefslogtreecommitdiffstats
path: root/src/preview.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-19 01:08:22 +0100
committerrabite <rabite@posteo.de>2019-03-19 14:38:15 +0100
commit161ba5ac3f38733b45c0167cb1e29f0be6059775 (patch)
tree794ec2517c71f6e6e3b9c572ebcc0e2fca66c3f4 /src/preview.rs
parentc719ec7a3cb6ca3d2346f48dc11d2e0d5ee10d36 (diff)
handle terminal resizing
Diffstat (limited to 'src/preview.rs')
-rw-r--r--src/preview.rs28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/preview.rs b/src/preview.rs
index 17663b2..9965229 100644
--- a/src/preview.rs
+++ b/src/preview.rs
@@ -6,6 +6,7 @@ use crate::files::{File, Files, Kind};
use crate::listview::ListView;
use crate::textview::TextView;
use crate::widget::{Widget, WidgetCore};
+use crate::coordinates::Coordinates;
use crate::fail::{HResult, HError, ErrorLog};
@@ -189,12 +190,29 @@ impl<T: Widget + Send + 'static> Widget for WillBeWidget<T> {
fn get_core_mut(&mut self) -> HResult<&mut WidgetCore> {
Ok(&mut self.core)
}
+
+ fn set_coordinates(&mut self, coordinates: &Coordinates) -> HResult<()> {
+ self.core.coordinates = coordinates.clone();
+ if let Ok(widget) = self.widget() {
+ let mut widget = widget.lock()?;
+ let widget = widget.as_mut()?;
+ widget.set_coordinates(&coordinates)?;
+ }
+ Ok(())
+ }
+
fn refresh(&mut self) -> HResult<()> {
+ let coords = self.get_coordinates()?;
if let Ok(widget) = self.widget() {
let mut widget = widget.lock()?;
let widget = widget.as_mut()?;
- widget.set_coordinates(self.get_coordinates()?).log();
- widget.refresh().log();
+
+ if widget.get_coordinates()? != coords {
+ widget.set_coordinates(self.get_coordinates()?)?;
+ widget.refresh()?;
+ } else {
+ widget.refresh()?;
+ }
}
Ok(())
}
@@ -427,6 +445,12 @@ impl Widget for Previewer {
fn get_core_mut(&mut self) -> HResult<&mut WidgetCore> {
Ok(&mut self.core)
}
+
+ fn set_coordinates(&mut self, coordinates: &Coordinates) -> HResult<()> {
+ self.core.coordinates = coordinates.clone();
+ self.widget.set_coordinates(&coordinates)
+ }
+
fn refresh(&mut self) -> HResult<()> {
self.widget.refresh()
}