Make DnD edge view scroll configurable

This commit is contained in:
Ivan Molodetskikh
2025-02-16 08:46:38 +03:00
parent 22302bf224
commit f2b1fc66f2
4 changed files with 71 additions and 9 deletions
+46
View File
@@ -59,6 +59,8 @@ pub struct Config {
#[knuffel(child, default)]
pub animations: Animations,
#[knuffel(child, default)]
pub gestures: Gestures,
#[knuffel(child, default)]
pub environment: Environment,
#[knuffel(children(name = "window-rule"))]
pub window_rules: Vec<WindowRule>,
@@ -1115,6 +1117,32 @@ pub struct SpringParams {
pub epsilon: f64,
}
#[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq)]
pub struct Gestures {
#[knuffel(child, default)]
pub dnd_edge_view_scroll: DndEdgeViewScroll,
}
#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)]
pub struct DndEdgeViewScroll {
#[knuffel(child, unwrap(argument), default = Self::default().trigger_width)]
pub trigger_width: FloatOrInt<0, 65535>,
#[knuffel(child, unwrap(argument), default = Self::default().delay_ms)]
pub delay_ms: u16,
#[knuffel(child, unwrap(argument), default = Self::default().max_speed)]
pub max_speed: FloatOrInt<0, 1_000_000>,
}
impl Default for DndEdgeViewScroll {
fn default() -> Self {
Self {
trigger_width: FloatOrInt(30.), // Taken from GTK 4.
delay_ms: 50,
max_speed: FloatOrInt(1500.),
}
}
}
#[derive(knuffel::Decode, Debug, Default, Clone, PartialEq, Eq)]
pub struct Environment(#[knuffel(children)] pub Vec<EnvironmentVariable>);
@@ -3679,6 +3707,13 @@ mod tests {
window-open { off; }
}
gestures {
dnd-edge-view-scroll {
trigger-width 10
max-speed 50
}
}
environment {
QT_QPA_PLATFORM "wayland"
DISPLAY null
@@ -4252,6 +4287,17 @@ mod tests {
},
),
},
gestures: Gestures {
dnd_edge_view_scroll: DndEdgeViewScroll {
trigger_width: FloatOrInt(
10.0,
),
delay_ms: 50,
max_speed: FloatOrInt(
50.0,
),
},
},
environment: Environment(
[
EnvironmentVariable {