From 7733d1d87c31849d4ac8a3039131c8ad3e71b547 Mon Sep 17 00:00:00 2001 From: rustbasic <127506429+rustbasic@users.noreply.github.com> Date: Thu, 18 Jan 2024 00:33:11 +0900 Subject: [PATCH] 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 --- crates/egui/src/context.rs | 1 + crates/egui/src/style.rs | 3 ++- examples/custom_window_frame/src/main.rs | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index f2f9614200c..07a6ec38f49 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -1081,6 +1081,7 @@ impl Context { clicked && click.is_triple(); } } + response.is_pointer_button_down_on = false; } } } diff --git a/crates/egui/src/style.rs b/crates/egui/src/style.rs index ebadb286d17..6422e654723 100644 --- a/crates/egui/src/style.rs +++ b/crates/egui/src/style.rs @@ -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 diff --git a/examples/custom_window_frame/src/main.rs b/examples/custom_window_frame/src/main.rs index 6008788bd0f..87daf82e06a 100644 --- a/examples/custom_window_frame/src/main.rs +++ b/examples/custom_window_frame/src/main.rs @@ -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); }