parent
f99220f015
commit
de3437bcd6
|
@ -277,12 +277,24 @@ impl Default for Cursor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn deserialize_cursor_thickness<'a, D>(deserializer: D) -> Result<Percentage, D::Error>
|
fn deserialize_cursor_thickness<'a, D>(deserializer: D) -> Result<Percentage, D::Error>
|
||||||
where
|
where
|
||||||
D: Deserializer<'a>,
|
D: Deserializer<'a>,
|
||||||
{
|
{
|
||||||
Ok(Percentage::deserialize(Value::deserialize(deserializer)?)
|
let value = Value::deserialize(deserializer)?;
|
||||||
.unwrap_or_else(|_| Percentage::new(DEFAULT_CURSOR_THICKNESS)))
|
match Percentage::deserialize(value) {
|
||||||
|
Ok(value) => Ok(value),
|
||||||
|
Err(err) => {
|
||||||
|
error!(
|
||||||
|
target: LOG_TARGET_CONFIG,
|
||||||
|
"Problem with config: {}, using default thickness value {}",
|
||||||
|
err,
|
||||||
|
DEFAULT_CURSOR_THICKNESS
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(Percentage::new(DEFAULT_CURSOR_THICKNESS))
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
|
|
|
@ -42,7 +42,7 @@ pub struct WindowConfig {
|
||||||
pub title: String,
|
pub title: String,
|
||||||
|
|
||||||
/// Window class.
|
/// Window class.
|
||||||
#[serde(deserialize_with = "failure_default")]
|
#[serde(deserialize_with = "deserialize_class")]
|
||||||
pub class: Class,
|
pub class: Class,
|
||||||
|
|
||||||
/// XEmbed parent.
|
/// XEmbed parent.
|
||||||
|
@ -158,9 +158,13 @@ impl Dimensions {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Window class hint.
|
/// Window class hint.
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[serde(default)]
|
||||||
|
#[derive(Deserialize, Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct Class {
|
pub struct Class {
|
||||||
|
#[serde(deserialize_with = "deserialize_class_resource")]
|
||||||
pub instance: String,
|
pub instance: String,
|
||||||
|
|
||||||
|
#[serde(deserialize_with = "deserialize_class_resource")]
|
||||||
pub general: String,
|
pub general: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,26 +174,42 @@ impl Default for Class {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Deserialize<'a> for Class {
|
fn deserialize_class_resource<'a, D>(deserializer: D) -> Result<String, D::Error>
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
where
|
||||||
where
|
D: Deserializer<'a>,
|
||||||
D: Deserializer<'a>,
|
{
|
||||||
{
|
let value = Value::deserialize(deserializer)?;
|
||||||
let value = Value::deserialize(deserializer)?;
|
match String::deserialize(value) {
|
||||||
|
Ok(value) => Ok(value),
|
||||||
|
Err(err) => {
|
||||||
|
error!(
|
||||||
|
target: LOG_TARGET_CONFIG,
|
||||||
|
"Problem with config: {}, using default value {}", err, DEFAULT_NAME,
|
||||||
|
);
|
||||||
|
|
||||||
if let Value::String(instance) = value {
|
Ok(DEFAULT_NAME.into())
|
||||||
return Ok(Class { instance, general: DEFAULT_NAME.into() });
|
},
|
||||||
}
|
}
|
||||||
|
}
|
||||||
match Self::deserialize(value) {
|
|
||||||
Ok(value) => Ok(value),
|
fn deserialize_class<'a, D>(deserializer: D) -> Result<Class, D::Error>
|
||||||
Err(err) => {
|
where
|
||||||
error!(
|
D: Deserializer<'a>,
|
||||||
target: LOG_TARGET_CONFIG,
|
{
|
||||||
"Problem with config: {}; using class Alacritty", err
|
let value = Value::deserialize(deserializer)?;
|
||||||
);
|
|
||||||
Ok(Self::default())
|
if let Value::String(instance) = value {
|
||||||
},
|
return Ok(Class { instance, general: DEFAULT_NAME.into() });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
match Class::deserialize(value) {
|
||||||
|
Ok(value) => Ok(value),
|
||||||
|
Err(err) => {
|
||||||
|
error!(
|
||||||
|
target: LOG_TARGET_CONFIG,
|
||||||
|
"Problem with config: {}; using class {}", err, DEFAULT_NAME
|
||||||
|
);
|
||||||
|
Ok(Class::default())
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue