From af63101fdcbbba6e5b6b763598ba17eb76cff712 Mon Sep 17 00:00:00 2001 From: MaximOsipenko <67688812+MaximOsipenko@users.noreply.github.com> Date: Sun, 28 Aug 2022 10:36:23 +0300 Subject: [PATCH] eliminate some possible deadlocks (#1968) --- crates/egui/src/containers/panel.rs | 14 ++++++-------- crates/egui/src/containers/window.rs | 6 ++++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/egui/src/containers/panel.rs b/crates/egui/src/containers/panel.rs index e9d249e1..b0fbe2ec 100644 --- a/crates/egui/src/containers/panel.rs +++ b/crates/egui/src/containers/panel.rs @@ -215,10 +215,8 @@ impl SidePanel { && (resize_x - pointer.x).abs() <= ui.style().interaction.resize_grab_radius_side; - if ui.input().pointer.any_pressed() - && ui.input().pointer.any_down() - && mouse_over_resize_line - { + let any_pressed = ui.input().pointer.any_pressed(); // avoid deadlocks + if any_pressed && ui.input().pointer.any_down() && mouse_over_resize_line { ui.memory().set_dragged_id(resize_id); } is_resizing = ui.memory().is_being_dragged(resize_id); @@ -229,8 +227,8 @@ impl SidePanel { side.set_rect_width(&mut panel_rect, width); } - let dragging_something_else = - ui.input().pointer.any_down() || ui.input().pointer.any_pressed(); + let any_down = ui.input().pointer.any_down(); // avoid deadlocks + let dragging_something_else = any_down || ui.input().pointer.any_pressed(); resize_hover = mouse_over_resize_line && !dragging_something_else; if resize_hover || is_resizing { @@ -516,8 +514,8 @@ impl TopBottomPanel { side.set_rect_height(&mut panel_rect, height); } - let dragging_something_else = - ui.input().pointer.any_down() || ui.input().pointer.any_pressed(); + let any_down = ui.input().pointer.any_down(); // avoid deadlocks + let dragging_something_else = any_down || ui.input().pointer.any_pressed(); resize_hover = mouse_over_resize_line && !dragging_something_else; if resize_hover || is_resizing { diff --git a/crates/egui/src/containers/window.rs b/crates/egui/src/containers/window.rs index 40aa0b0d..a490eb8e 100644 --- a/crates/egui/src/containers/window.rs +++ b/crates/egui/src/containers/window.rs @@ -584,7 +584,8 @@ fn window_interaction( if window_interaction.is_none() { if let Some(hover_window_interaction) = resize_hover(ctx, possible, area_layer_id, rect) { hover_window_interaction.set_cursor(ctx); - if ctx.input().pointer.any_pressed() && ctx.input().pointer.primary_down() { + let any_pressed = ctx.input().pointer.any_pressed(); // avoid deadlocks + if any_pressed && ctx.input().pointer.primary_down() { ctx.memory().interaction.drag_id = Some(id); ctx.memory().interaction.drag_is_window = true; window_interaction = Some(hover_window_interaction); @@ -612,7 +613,8 @@ fn resize_hover( ) -> Option { let pointer = ctx.input().pointer.interact_pos()?; - if ctx.input().pointer.any_down() && !ctx.input().pointer.any_pressed() { + let any_down = ctx.input().pointer.any_down(); // avoid deadlocks + if any_down && !ctx.input().pointer.any_pressed() { return None; // already dragging (something) }