1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-18 13:55:23 -05:00

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.
This commit is contained in:
Christian Duerr 2018-09-28 19:53:57 +00:00 committed by GitHub
parent 5e97fcbea4
commit 93837110aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -279,29 +279,27 @@ impl<'de> Deserialize<'de> for Decorations {
f.write_str("Some subset of full|transparent|buttonless|none") f.write_str("Some subset of full|transparent|buttonless|none")
} }
fn visit_bool<E>(self, value: bool) -> ::std::result::Result<Decorations, E>
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")] #[cfg(target_os = "macos")]
fn visit_str<E>(self, value: &str) -> ::std::result::Result<Decorations, E> fn visit_str<E>(self, value: &str) -> ::std::result::Result<Decorations, E>
where E: de::Error where E: de::Error
{ {
match value { match value.to_lowercase().as_str() {
"transparent" => Ok(Decorations::Transparent), "transparent" => Ok(Decorations::Transparent),
"buttonless" => Ok(Decorations::Buttonless), "buttonless" => Ok(Decorations::Buttonless),
"none" => Ok(Decorations::None), "none" => Ok(Decorations::None),
"full" => Ok(Decorations::Full), "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); eprintln!("invalid decorations value: {}; Using default value", value);
Ok(Decorations::Full) Ok(Decorations::Full)
@ -316,14 +314,22 @@ impl<'de> Deserialize<'de> for Decorations {
match value.to_lowercase().as_str() { match value.to_lowercase().as_str() {
"none" => Ok(Decorations::None), "none" => Ok(Decorations::None),
"full" => Ok(Decorations::Full), "full" => Ok(Decorations::Full),
"transparent" => { "true" => {
eprintln!("deprecated decorations boolean value, \
use one of none|full instead; \
Falling back to \"full\"");
Ok(Decorations::Full)
},
"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); eprintln!("macos-only decorations value: {}; Using default value", value);
Ok(Decorations::Full) Ok(Decorations::Full)
}, },
"buttonless" => {
eprintln!("macos-only decorations value: {}; Using default value", value);
Ok(Decorations::Full)
}
_ => { _ => {
eprintln!("invalid decorations value: {}; Using default value", value); eprintln!("invalid decorations value: {}; Using default value", value);
Ok(Decorations::Full) Ok(Decorations::Full)