Skip to content

Commit ed3bd97

Browse files
committed
fix another dead-lock
1 parent 7521a69 commit ed3bd97

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

‎Cargo.lock‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "malakal"
33
description = "a day-planning calendar app based on egui"
4-
version = "0.1.2"
4+
version = "0.1.3"
55
edition = "2021"
66
license-file = "LICENSE"
77
readme = "README.org"

‎src/widget/schedule_ui/interaction.rs‎

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -655,45 +655,57 @@ fn detect_interaction(response: &Response) -> Option<Interaction> {
655655

656656
let pointer = response.ctx.input().pointer.clone();
657657

658-
let mut memory = response.ctx.memory();
659-
let detection_finish_flag: &mut bool = &mut memory
660-
.data
661-
.get_temp_mut_or(response.id, DetectionFinishFlag(false))
662-
.0;
658+
let set_flag = |value| {
659+
response
660+
.ctx
661+
.memory()
662+
.data
663+
.get_temp_mut_or(response.id, DetectionFinishFlag(false))
664+
.0 = value;
665+
};
666+
667+
let get_flag = || {
668+
response
669+
.ctx
670+
.memory()
671+
.data
672+
.get_temp_mut_or(response.id, DetectionFinishFlag(false))
673+
.0
674+
};
663675

664676
if !pointer.any_down() {
665-
*detection_finish_flag = false;
677+
set_flag(false);
666678
}
667679

668-
if !*detection_finish_flag && response.clicked() {
669-
*detection_finish_flag = true;
680+
if !get_flag() && response.clicked() {
681+
set_flag(true);
670682
return Some(Clicked);
671683
}
672684

673685
if response.drag_released() {
674686
return Some(DragReleased);
675687
}
676688

677-
if !*detection_finish_flag && response.dragged() {
689+
if !get_flag() && response.dragged() {
678690
let origin = pointer.press_origin().unwrap();
679691
if let Some(pos) = pointer.hover_pos() {
680692
let dx = (pos - origin).length_sq();
681693
if dx > MAX_CLICK_DIST * MAX_CLICK_DIST {
682-
*detection_finish_flag = true;
694+
set_flag(true);
683695
return Some(DragStarted { origin });
684696
}
685697
}
686698

687699
let dt = response.ctx.input().time - pointer.press_start_time().unwrap();
688700
if dt > MAX_CLICK_DURATION {
689-
*detection_finish_flag = true;
701+
set_flag(true);
690702
return Some(DragStarted { origin });
691703
}
692704

693705
return None;
694706
}
695707

696-
if *detection_finish_flag && response.dragged() {
708+
if get_flag() && response.dragged() {
697709
return Some(Dragged);
698710
}
699711

0 commit comments

Comments
 (0)