From 64391dd98c6446a7f6aeae406e85fe50072994c4 Mon Sep 17 00:00:00 2001 From: rabite Date: Sun, 26 Jan 2020 15:39:02 +0100 Subject: fix media preview config loading --- src/config.rs | 26 +++++++++++++++----------- src/file_browser.rs | 1 - src/preview.rs | 26 +++++++++++++++++++------- 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::(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 { .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(()) } -- cgit v1.2.3