From 93837110aace817f1cbb2a4de7a7facd3cde4a7b Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Fri, 28 Sep 2018 19:53:57 +0000 Subject: Fix deserialization of old decorations values The deprecated `window.decoration` values `true` and `false` were using the `visit_bool` visitor for serde. However, only the `str` visitor was ever called. To print the correct deprecation notice, the bool visitor has been removed and the warning has been added for the `"true"` and `"false"` str visitor. --- src/config.rs | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/config.rs b/src/config.rs index 66cf1a6f..0f250522 100644 --- a/src/config.rs +++ b/src/config.rs @@ -279,29 +279,27 @@ impl<'de> Deserialize<'de> for Decorations { f.write_str("Some subset of full|transparent|buttonless|none") } - fn visit_bool(self, value: bool) -> ::std::result::Result - where E: de::Error - { - if value { - eprintln!("deprecated decorations boolean value, use one of \ - default|transparent|buttonless|none instead; Falling back to \"full\""); - Ok(Decorations::Full) - } else { - eprintln!("deprecated decorations boolean value, use one of \ - default|transparent|buttonless|none instead; Falling back to \"none\""); - Ok(Decorations::None) - } - } - #[cfg(target_os = "macos")] fn visit_str(self, value: &str) -> ::std::result::Result where E: de::Error { - match value { + match value.to_lowercase().as_str() { "transparent" => Ok(Decorations::Transparent), "buttonless" => Ok(Decorations::Buttonless), "none" => Ok(Decorations::None), "full" => Ok(Decorations::Full), + "true" => { + eprintln!("deprecated decorations boolean value, \ + use one of transparent|buttonless|none|full instead; \ + Falling back to \"full\""); + Ok(Decorations::Full) + }, + "false" => { + eprintln!("deprecated decorations boolean value, \ + use one of transparent|buttonless|none|full instead; \ + Falling back to \"none\""); + Ok(Decorations::None) + }, _ => { eprintln!("invalid decorations value: {}; Using default value", value); Ok(Decorations::Full) @@ -316,14 +314,22 @@ impl<'de> Deserialize<'de> for Decorations { match value.to_lowercase().as_str() { "none" => Ok(Decorations::None), "full" => Ok(Decorations::Full), - "transparent" => { - eprintln!("macos-only decorations value: {}; Using default value", value); + "true" => { + eprintln!("deprecated decorations boolean value, \ + use one of none|full instead; \ + Falling back to \"full\""); Ok(Decorations::Full) }, - "buttonless" => { + "false" => { + eprintln!("deprecated decorations boolean value, \ + use one of none|full instead; \ + Falling back to \"none\""); + Ok(Decorations::None) + }, + "transparent" | "buttonless" => { eprintln!("macos-only decorations value: {}; Using default value", value); Ok(Decorations::Full) - } + }, _ => { eprintln!("invalid decorations value: {}; Using default value", value); Ok(Decorations::Full) -- cgit