Skip to content

Commit bd774e7

Browse files
authored
Use struct initializer syntax fror click tracker (#3226)
1 parent b88bb2a commit bd774e7

File tree

1 file changed

+26
-35
lines changed

1 file changed

+26
-35
lines changed

desktop/src/cef/input.rs

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ impl InputState {
151151

152152
fn mouse_input(&mut self, button: &MouseButton, state: &ElementState) -> ClickCount {
153153
self.mouse_state.update(button, state);
154-
self.mouse_click_tracker.input(button, state, &self.mouse_position)
154+
self.mouse_click_tracker.input(button, state, self.mouse_position)
155155
}
156156

157157
fn cef_modifiers(&self, location: &winit::keyboard::KeyLocation, is_repeat: bool) -> CefModifiers {
@@ -187,7 +187,7 @@ impl From<&mut InputState> for MouseEvent {
187187
}
188188
}
189189

190-
#[derive(Default, Clone)]
190+
#[derive(Default, Clone, Copy)]
191191
pub(crate) struct MousePosition {
192192
x: usize,
193193
y: usize,
@@ -233,42 +233,35 @@ struct ClickTracker {
233233
right: Option<ClickRecord>,
234234
}
235235
impl ClickTracker {
236-
fn input(&mut self, button: &MouseButton, state: &ElementState, position: &MousePosition) -> ClickCount {
236+
fn input(&mut self, button: &MouseButton, state: &ElementState, position: MousePosition) -> ClickCount {
237237
let record = match button {
238238
MouseButton::Left => &mut self.left,
239239
MouseButton::Right => &mut self.right,
240240
MouseButton::Middle => &mut self.middle,
241241
_ => return ClickCount::Single,
242242
};
243243

244-
let now = Instant::now();
245-
246244
let Some(record) = record else {
247-
*record = Some(ClickRecord {
248-
time: now,
249-
position: position.clone(),
250-
down_count: ClickCount::Single,
251-
up_count: ClickCount::Single,
252-
});
245+
*record = Some(ClickRecord { position, ..Default::default() });
253246
return ClickCount::Single;
254247
};
255248

249+
let now = Instant::now();
250+
record.time = now;
251+
record.position = position;
252+
256253
match state {
257254
ElementState::Pressed if record.down_count == ClickCount::Double => {
258255
*record = ClickRecord {
259-
time: now,
260-
position: position.clone(),
261256
down_count: ClickCount::Single,
262-
up_count: record.up_count,
257+
..*record
263258
};
264259
return ClickCount::Single;
265260
}
266261
ElementState::Released if record.up_count == ClickCount::Double => {
267262
*record = ClickRecord {
268-
time: now,
269-
position: position.clone(),
270-
down_count: record.down_count,
271263
up_count: ClickCount::Single,
264+
..*record
272265
};
273266
return ClickCount::Single;
274267
}
@@ -283,33 +276,19 @@ impl ClickTracker {
283276
let count = if within_time && within_dist { ClickCount::Double } else { ClickCount::Single };
284277

285278
*record = match state {
286-
ElementState::Pressed => ClickRecord {
287-
time: now,
288-
position: position.clone(),
289-
down_count: count,
290-
up_count: record.up_count,
291-
},
292-
ElementState::Released => ClickRecord {
293-
time: now,
294-
position: position.clone(),
295-
down_count: record.down_count,
296-
up_count: count,
297-
},
279+
ElementState::Pressed => ClickRecord { down_count: count, ..*record },
280+
ElementState::Released => ClickRecord { up_count: count, ..*record },
298281
};
299282
count
300283
}
301284
}
302285

303-
#[derive(Clone, Copy, PartialEq)]
286+
#[derive(Clone, Copy, PartialEq, Default)]
304287
enum ClickCount {
288+
#[default]
305289
Single,
306290
Double,
307291
}
308-
impl Default for ClickCount {
309-
fn default() -> Self {
310-
Self::Single
311-
}
312-
}
313292
impl From<ClickCount> for i32 {
314293
fn from(count: ClickCount) -> i32 {
315294
match count {
@@ -319,13 +298,25 @@ impl From<ClickCount> for i32 {
319298
}
320299
}
321300

301+
#[derive(Clone, Copy)]
322302
struct ClickRecord {
323303
time: Instant,
324304
position: MousePosition,
325305
down_count: ClickCount,
326306
up_count: ClickCount,
327307
}
328308

309+
impl Default for ClickRecord {
310+
fn default() -> Self {
311+
Self {
312+
time: Instant::now(),
313+
position: Default::default(),
314+
down_count: Default::default(),
315+
up_count: Default::default(),
316+
}
317+
}
318+
}
319+
329320
struct CefModifiers(u32);
330321
impl CefModifiers {
331322
fn new(input_state: &InputState, location: &winit::keyboard::KeyLocation, is_repeat: bool) -> Self {

0 commit comments

Comments
 (0)