diff --git a/egui_node_graph/src/editor_ui.rs b/egui_node_graph/src/editor_ui.rs index fe5751a..1ef32c8 100644 --- a/egui_node_graph/src/editor_ui.rs +++ b/egui_node_graph/src/editor_ui.rs @@ -144,6 +144,17 @@ where inconsistent self. It has either more or less values than the graph." ); + // Allocate rect before the nodes, otherwise this will block the interaction + // with the nodes. + let r = ui.allocate_rect(ui.min_rect(), Sense::click().union(Sense::drag())); + if r.clicked() { + click_on_background = true; + } else if r.drag_started() { + drag_started_on_background = true; + } else if r.drag_released() { + drag_released_on_background = true; + } + /* Draw nodes */ for node_id in self.node_order.iter().copied() { let responses = GraphNodeWidget { @@ -165,15 +176,6 @@ where delayed_responses.extend(responses); } - let r = ui.allocate_rect(ui.min_rect(), Sense::click().union(Sense::drag())); - if r.clicked() { - click_on_background = true; - } else if r.drag_started() { - drag_started_on_background = true; - } else if r.drag_released() { - drag_released_on_background = true; - } - /* Draw the node finder, if open */ let mut should_close_node_finder = false; if let Some(ref mut node_finder) = self.node_finder { @@ -510,6 +512,16 @@ where let background_shape = ui.painter().add(Shape::Noop); let outer_rect_bounds = ui.available_rect_before_wrap(); + + // Hack?: Call this before the content of the node + // to ensure interaction works after egui 0.19. Otherwise the layers block + // hover interaction + let window_response = ui.interact( + outer_rect_bounds, + Id::new((self.node_id, "window")), + Sense::click_and_drag(), + ); + let mut inner_rect = outer_rect_bounds.shrink2(margin); // Make sure we don't shrink to the negative: @@ -795,12 +807,6 @@ where responses.push(NodeResponse::DeleteNodeUi(self.node_id)); }; - let window_response = ui.interact( - outer_rect, - Id::new((self.node_id, "window")), - Sense::click_and_drag(), - ); - // Movement let drag_delta = window_response.drag_delta(); if drag_delta.length_sq() > 0.0 {