egui: consume the click when toggling Place Via mode

This commit is contained in:
Mikolaj Wielgus 2024-06-11 00:00:55 +02:00
parent 8c9a13e712
commit 3b4614b16b
1 changed files with 33 additions and 24 deletions

View File

@ -162,6 +162,8 @@ impl eframe::App for App {
/// Called each time the UI has to be repainted. /// Called each time the UI has to be repainted.
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
let mut has_acted = false;
if cfg!(target_arch = "wasm32") { if cfg!(target_arch = "wasm32") {
if let Ok(file_contents) = self.text_channel.1.try_recv() { if let Ok(file_contents) = self.text_channel.1.try_recv() {
let design = DsnDesign::load_from_string(file_contents).unwrap(); let design = DsnDesign::load_from_string(file_contents).unwrap();
@ -279,7 +281,7 @@ impl eframe::App for App {
}, },
) { ) {
Ok(status) => status, Ok(status) => status,
Err(err) => return, //Err(err), Err(err) => return,
}; };
if let Execute::Autoroute(ref mut autoroute) = execute { if let Execute::Autoroute(ref mut autoroute) = execute {
@ -295,7 +297,12 @@ impl eframe::App for App {
} }
} }
ui.toggle_value(&mut self.is_placing_via, "Place Via"); if ui
.toggle_value(&mut self.is_placing_via, "Place Via")
.clicked()
{
has_acted = true;
}
ui.separator(); ui.separator();
@ -364,6 +371,7 @@ impl eframe::App for App {
if let Some(invoker_arc_mutex) = &self.invoker { if let Some(invoker_arc_mutex) = &self.invoker {
if ctx.input(|i| i.pointer.any_click()) { if ctx.input(|i| i.pointer.any_click()) {
if !has_acted {
if self.is_placing_via { if self.is_placing_via {
let invoker_arc_mutex = invoker_arc_mutex.clone(); let invoker_arc_mutex = invoker_arc_mutex.clone();
@ -390,6 +398,7 @@ impl eframe::App for App {
); );
} }
} }
}
if let (invoker, shared_data, Some(overlay)) = ( if let (invoker, shared_data, Some(overlay)) = (
&invoker_arc_mutex.lock().unwrap(), &invoker_arc_mutex.lock().unwrap(),