ui/themes: fix attr parsing not recognizing links
parent
fc4b9f8919
commit
eedb03dcd0
|
@ -232,8 +232,12 @@ impl<'de> Deserialize<'de> for ThemeValue<Attr> {
|
||||||
where
|
where
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
if let Ok(s) = <Attr>::deserialize(deserializer) {
|
if let Ok(s) = <String>::deserialize(deserializer) {
|
||||||
Ok(ThemeValue::Value(s))
|
if let Ok(c) = Attr::from_string_de::<'de, D>(s.clone()) {
|
||||||
|
Ok(ThemeValue::Value(c))
|
||||||
|
} else {
|
||||||
|
Ok(ThemeValue::Link(s.into()))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Err(de::Error::custom("invalid theme attribute value"))
|
Err(de::Error::custom("invalid theme attribute value"))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1397,17 +1397,7 @@ impl<'de> Deserialize<'de> for Attr {
|
||||||
D: Deserializer<'de>,
|
D: Deserializer<'de>,
|
||||||
{
|
{
|
||||||
if let Ok(s) = <String>::deserialize(deserializer) {
|
if let Ok(s) = <String>::deserialize(deserializer) {
|
||||||
match s.as_str() {
|
Attr::from_string_de::<'de, D>(s)
|
||||||
"Default" => Ok(Attr::Default),
|
|
||||||
"Bold" => Ok(Attr::Bold),
|
|
||||||
"Underline" => Ok(Attr::Underline),
|
|
||||||
"BoldUnderline" => Ok(Attr::BoldUnderline),
|
|
||||||
"Reverse" => Ok(Attr::Reverse),
|
|
||||||
"BoldReverse" => Ok(Attr::BoldReverse),
|
|
||||||
"UnderlineReverse" => Ok(Attr::UnderlineReverse),
|
|
||||||
"BoldReverseUnderline" => Ok(Attr::BoldReverseUnderline),
|
|
||||||
_ => Err(de::Error::custom("invalid attr value")),
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
Err(de::Error::custom("invalid attr value"))
|
Err(de::Error::custom("invalid attr value"))
|
||||||
}
|
}
|
||||||
|
@ -1432,6 +1422,25 @@ impl Serialize for Attr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Attr {
|
||||||
|
pub fn from_string_de<'de, D>(s: String) -> std::result::Result<Self, D::Error>
|
||||||
|
where
|
||||||
|
D: Deserializer<'de>,
|
||||||
|
{
|
||||||
|
match s.as_str() {
|
||||||
|
"Default" => Ok(Attr::Default),
|
||||||
|
"Bold" => Ok(Attr::Bold),
|
||||||
|
"Underline" => Ok(Attr::Underline),
|
||||||
|
"BoldUnderline" => Ok(Attr::BoldUnderline),
|
||||||
|
"Reverse" => Ok(Attr::Reverse),
|
||||||
|
"BoldReverse" => Ok(Attr::BoldReverse),
|
||||||
|
"UnderlineReverse" => Ok(Attr::UnderlineReverse),
|
||||||
|
"BoldReverseUnderline" => Ok(Attr::BoldReverseUnderline),
|
||||||
|
_ => Err(de::Error::custom("invalid attr value")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn copy_area_with_break(
|
pub fn copy_area_with_break(
|
||||||
grid_dest: &mut CellBuffer,
|
grid_dest: &mut CellBuffer,
|
||||||
grid_src: &CellBuffer,
|
grid_src: &CellBuffer,
|
||||||
|
|
Loading…
Reference in New Issue