1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
use crate::utils::MergeWith;
use crate::FloatOrInt;
#[derive(Debug, Default, Clone, Copy, PartialEq)]
pub struct Gestures {
pub dnd_edge_view_scroll: DndEdgeViewScroll,
pub dnd_edge_workspace_switch: DndEdgeWorkspaceSwitch,
pub hot_corners: HotCorners,
}
#[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq)]
pub struct GesturesPart {
#[knuffel(child)]
pub dnd_edge_view_scroll: Option<DndEdgeViewScrollPart>,
#[knuffel(child)]
pub dnd_edge_workspace_switch: Option<DndEdgeWorkspaceSwitchPart>,
#[knuffel(child)]
pub hot_corners: Option<HotCorners>,
}
impl MergeWith<GesturesPart> for Gestures {
fn merge_with(&mut self, part: &GesturesPart) {
merge!(
(self, part),
dnd_edge_view_scroll,
dnd_edge_workspace_switch,
);
merge_clone!((self, part), hot_corners);
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct DndEdgeViewScroll {
pub trigger_width: f64,
pub delay_ms: u16,
pub max_speed: f64,
}
impl Default for DndEdgeViewScroll {
fn default() -> Self {
Self {
trigger_width: 30., // Taken from GTK 4.
delay_ms: 100,
max_speed: 1500.,
}
}
}
#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)]
pub struct DndEdgeViewScrollPart {
#[knuffel(child, unwrap(argument))]
pub trigger_width: Option<FloatOrInt<0, 65535>>,
#[knuffel(child, unwrap(argument))]
pub delay_ms: Option<u16>,
#[knuffel(child, unwrap(argument))]
pub max_speed: Option<FloatOrInt<0, 1_000_000>>,
}
impl MergeWith<DndEdgeViewScrollPart> for DndEdgeViewScroll {
fn merge_with(&mut self, part: &DndEdgeViewScrollPart) {
merge!((self, part), trigger_width, max_speed);
merge_clone!((self, part), delay_ms);
}
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct DndEdgeWorkspaceSwitch {
pub trigger_height: f64,
pub delay_ms: u16,
pub max_speed: f64,
}
impl Default for DndEdgeWorkspaceSwitch {
fn default() -> Self {
Self {
trigger_height: 50.,
delay_ms: 100,
max_speed: 1500.,
}
}
}
#[derive(knuffel::Decode, Debug, Clone, Copy, PartialEq)]
pub struct DndEdgeWorkspaceSwitchPart {
#[knuffel(child, unwrap(argument))]
pub trigger_height: Option<FloatOrInt<0, 65535>>,
#[knuffel(child, unwrap(argument))]
pub delay_ms: Option<u16>,
#[knuffel(child, unwrap(argument))]
pub max_speed: Option<FloatOrInt<0, 1_000_000>>,
}
impl MergeWith<DndEdgeWorkspaceSwitchPart> for DndEdgeWorkspaceSwitch {
fn merge_with(&mut self, part: &DndEdgeWorkspaceSwitchPart) {
merge!((self, part), trigger_height, max_speed);
merge_clone!((self, part), delay_ms);
}
}
#[derive(knuffel::Decode, Debug, Default, Clone, Copy, PartialEq)]
pub struct HotCorners {
#[knuffel(child)]
pub off: bool,
#[knuffel(child)]
pub top_left: bool,
#[knuffel(child)]
pub top_right: bool,
#[knuffel(child)]
pub bottom_left: bool,
#[knuffel(child)]
pub bottom_right: bool,
}
|