diff --git a/egui_node_graph/src/editor_ui.rs b/egui_node_graph/src/editor_ui.rs index 1f1fd26..d7f90c5 100644 --- a/egui_node_graph/src/editor_ui.rs +++ b/egui_node_graph/src/editor_ui.rs @@ -195,7 +195,7 @@ where should_close_node_finder = true; delayed_responses.push(NodeResponse::CreatedNode(new_node)); } - let finder_rect = ui.max_rect(); + let finder_rect = ui.min_rect(); // If the cursor is not in the main editor, check if the cursor is in the finder // if the cursor is in the finder, then we can consider that also in the editor. if finder_rect.contains(cursor_pos) { @@ -401,7 +401,7 @@ where self.connection_in_progress = None; } - if mouse.secondary_clicked() && cursor_in_editor && !cursor_in_finder { + if mouse.secondary_released() && cursor_in_editor && !cursor_in_finder { self.node_finder = Some(NodeFinder::new_at(cursor_pos)); } if ui.ctx().input().key_pressed(Key::Escape) { diff --git a/egui_node_graph/src/node_finder.rs b/egui_node_graph/src/node_finder.rs index 6b6f9e5..87a9596 100644 --- a/egui_node_graph/src/node_finder.rs +++ b/egui_node_graph/src/node_finder.rs @@ -10,7 +10,7 @@ pub struct NodeFinder { pub query: String, /// Reset every frame. When set, the node finder will be moved at that position pub position: Option, - pub frames_since_spawned: u32, + pub just_spawned: bool, _phantom: PhantomData, } @@ -22,7 +22,7 @@ where NodeFinder { query: "".into(), position: Some(pos), - frames_since_spawned: 0, + just_spawned: true, _phantom: Default::default(), } } @@ -58,13 +58,9 @@ where frame.show(ui, |ui| { ui.vertical(|ui| { let resp = ui.text_edit_singleline(&mut self.query); - // HACK: The request_focus call doesn't succeed if we do it - // right after spawning the node finder, so we do it for a few - // frames until it works. This is could be a bug inside egui. - // The value 3 is the smallest number of frames that works. - if self.frames_since_spawned <= 3 { + if self.just_spawned { resp.request_focus(); - self.frames_since_spawned += 1; + self.just_spawned = false; } let mut query_submit = resp.lost_focus() && ui.input().key_down(Key::Enter);