diff --git a/NEWS b/NEWS index 8205093..0e491f1 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ ==== - Fix fractional scaling beeing blury by setting GDK_DEBUG=gl-no-fractional as default +- Fix exposure times above 0.5 seconds not being displayed correctly in properties 46.1 ==== diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 40ec44f..8e48f54 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -254,10 +254,21 @@ impl Metadata { if let Some(exif) = &self.exif { let field = exif.get_field(exif::Tag::ExposureTime, exif::In::PRIMARY)?; if let exif::Value::Rational(rational) = &field.value { - let exposure = format!("{:.0}", 1. / rational.first()?.to_f32()); + let speed = rational.first()?.to_f32(); - // Translators: Unit for exposure time in seconds - return Some(gettext_f("1\u{2215}{}\u{202F}s", [exposure])); + if speed <= 0.5 { + let exposure = format!("{:.0}", 1. / speed); + // Translators: Fractional exposure time (photography) in seconds + return Some(gettext_f("1\u{2215}{}\u{202F}s", [exposure])); + } else { + let exposure = if speed < 5. { + format!("{:.1}", speed) + } else { + format!("{:.0}", speed) + }; + // Translators: Exposure time (photography) in seconds + return Some(gettext_f("{}\u{202F}s", [exposure])); + } } } diff --git a/src/widgets/drag_overlay.rs b/src/widgets/drag_overlay.rs index acdfa90..30dd57b 100644 --- a/src/widgets/drag_overlay.rs +++ b/src/widgets/drag_overlay.rs @@ -25,9 +25,10 @@ use adw::prelude::*; use crate::deps::*; mod imp { + use std::cell::OnceCell; + use adw::subclass::prelude::*; use glib::{ParamSpec, Properties, Value}; - use std::cell::OnceCell; use super::*;