Fix: `Response.interact_pointer_pos` is `Some` on click and drag released (#4014)

* Closes https://github.com/emilk/egui/issues/3999

In 0.26.0 is was accidentally set to `None` on the frame we got a click
or drag release
This commit is contained in:
Emil Ernerfeldt 2024-02-10 11:21:57 +01:00 committed by GitHub
parent 5bf44f8850
commit 0bf3056bd7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 1 deletions

View File

@ -1217,7 +1217,11 @@ impl Context {
}
}
if res.is_pointer_button_down_on {
// is_pointer_button_down_on is false when released, but we want interact_pointer_pos
// to still work.
let clicked = res.clicked.iter().any(|c| *c);
let is_interacted_with = res.is_pointer_button_down_on || clicked || res.drag_released;
if is_interacted_with {
res.interact_pointer_pos = input.pointer.interact_pos();
}

View File

@ -444,6 +444,9 @@ fn response_summary(response: &egui::Response, show_hovers: bool) -> String {
if response.is_pointer_button_down_on() {
writeln!(new_info, "pointer_down_on").ok();
}
if let Some(pos) = response.interact_pointer_pos() {
writeln!(new_info, "response.interact_pointer_pos: {pos:?}").ok();
}
}
for &button in &[