summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2020-01-26 15:39:02 +0100
committerrabite <rabite@posteo.de>2020-01-26 16:08:19 +0100
commit64391dd98c6446a7f6aeae406e85fe50072994c4 (patch)
treefacb3cabdb77a09ad8c5ba672e8936ee217eec5d
parentabc35e0e7dc41f931b3d149d15dbe0d438f92f4a (diff)
fix media preview config loading
-rw-r--r--src/config.rs26
-rw-r--r--src/file_browser.rs1
-rw-r--r--src/preview.rs26
3 files changed, 34 insertions, 19 deletions
diff --git a/src/config.rs b/src/config.rs
index cbe6d1e..ddcb068 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -159,19 +159,8 @@ impl Config {
Ok(("media_mute", "on")) => config.media_mute = true,
Ok(("media_mute", "off")) => config.media_mute = false,
Ok(("media_previewer", cmd)) => {
- use crate::minibuffer::find_bins;
-
let cmd = cmd.to_string();
config.media_previewer = cmd;
-
- let previewer = std::path::Path::new(&config.media_previewer);
- let exists = match previewer.is_absolute() {
- true => previewer.exists(),
- false => find_bins(&config.media_previewer).is_ok()
- };
-
- config.media_previewer_exists = exists;
-
},
Ok(("ratios", ratios)) => {
let ratios_str = ratios.to_string();
@@ -200,6 +189,12 @@ impl Config {
"auto")) => config.graphics = detect_g_mode(),
_ => { HError::config_error::<Config>(line.to_string()).log(); }
}
+
+ #[cfg(feature = "img")]
+ match has_media_previewer(&config.media_previewer) {
+ t @ _ => config.media_previewer_exists = t
+ }
+
config
});
@@ -245,3 +240,12 @@ fn detect_g_mode() -> String {
_ => "unicode"
}.to_string()
}
+
+fn has_media_previewer(name: &str) -> bool {
+ use crate::minibuffer::find_bins;
+ let previewer = std::path::Path::new(name);
+ match previewer.is_absolute() {
+ true => previewer.exists(),
+ false => find_bins(name).is_ok()
+ }
+}
diff --git a/src/file_browser.rs b/src/file_browser.rs
index 40189cd..da1e9be 100644
--- a/src/file_browser.rs
+++ b/src/file_browser.rs
@@ -212,7 +212,6 @@ impl Tabbable for TabView<FileBrowser> {
.map(|mut w| {
w.content.show_hidden = show_hidden;
w.content.dirty_meta.set_dirty();
- w.content.sort();
w.refresh().log();
}).ok();
Ok(())
diff --git a/src/preview.rs b/src/preview.rs
index ec245ed..7546dfc 100644
--- a/src/preview.rs
+++ b/src/preview.rs
@@ -11,7 +11,6 @@ use crate::textview::TextView;
use crate::widget::{Widget, WidgetCore};
use crate::coordinates::Coordinates;
use crate::fail::{HResult, HError, ErrorLog};
-use crate::dirty::Dirtyable;
use crate::imgview::ImgView;
use crate::mediaview::MediaView;
@@ -354,7 +353,6 @@ impl Previewer {
let core = self.core.clone();
let cache = self.cache.clone();
let animator = self.animator.clone();
- let has_media = self.core.config().media_available();
if same_dir {
self.animator.set_fresh().ok();
@@ -386,6 +384,7 @@ impl Previewer {
if let Some(mime) = file.get_mime() {
let mime_type = mime.type_().as_str();
let is_gif = mime.subtype() == "gif";
+ let has_media = core.config().media_available();
match mime_type {
_ if mime_type == "video" || is_gif && has_media => {
@@ -436,7 +435,6 @@ impl Previewer {
pub fn reload(&mut self) {
if let Some(file) = self.file.take() {
- self.file = None;
self.set_file(&file).log();
}
}
@@ -583,11 +581,25 @@ impl Widget for Previewer {
}
fn config_loaded(&mut self) -> HResult<()> {
- let show_hidden = self.core.config().show_hidden();
- if let PreviewWidget::FileList(filelist) = self.widget.widget_mut()? {
- filelist.content.show_hidden = show_hidden;
- filelist.content.dirty_meta.set_dirty();
+ use PreviewWidget::*;
+
+ let show_hidden = self.core
+ .config()
+ .show_hidden();
+
+ match self.widget.widget_mut() {
+ Ok(FileList(filelist)) => {
+ let setting = filelist.content.show_hidden;
+
+ if setting != show_hidden {
+ self.reload();
+ }
+
+ }
+ Ok(_) => {},
+ Err(_) => self.reload(),
}
+
Ok(())
}