Bug Fix : `Response::is_pointer_button_down_on` is now false the frame the button is released (#3833)

* Closes #3809
* Closes #3669
* Closes #3791

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
rustbasic 2024-01-18 00:33:11 +09:00 committed by GitHub
parent f01d337fa8
commit 7733d1d87c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 6 additions and 2 deletions

View File

@ -1081,6 +1081,7 @@ impl Context {
clicked && click.is_triple();
}
}
response.is_pointer_button_down_on = false;
}
}
}

View File

@ -942,7 +942,8 @@ impl Widgets {
pub fn style(&self, response: &Response) -> &WidgetVisuals {
if !response.sense.interactive() {
&self.noninteractive
} else if response.is_pointer_button_down_on() || response.has_focus() {
} else if response.is_pointer_button_down_on() || response.has_focus() || response.clicked()
{
&self.active
} else if response.hovered() || response.highlighted() {
&self.hovered

View File

@ -105,7 +105,9 @@ fn title_bar_ui(ui: &mut egui::Ui, title_bar_rect: eframe::epaint::Rect, title:
let is_maximized = ui.input(|i| i.viewport().maximized.unwrap_or(false));
ui.ctx()
.send_viewport_cmd(ViewportCommand::Maximized(!is_maximized));
} else if title_bar_response.is_pointer_button_down_on() {
}
if title_bar_response.is_pointer_button_down_on() {
ui.ctx().send_viewport_cmd(ViewportCommand::StartDrag);
}