From c3dd08ac6fdb11d787a66876f85fa62af24c62f8 Mon Sep 17 00:00:00 2001 From: Dmitrii Samsonov Date: Sat, 24 Feb 2024 15:10:33 +0200 Subject: [PATCH] Updated dragg and click triggers --- examples/configurable/src/main.rs | 2 +- src/graph_view.rs | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/configurable/src/main.rs b/examples/configurable/src/main.rs index 6f42ca4..f32d011 100644 --- a/examples/configurable/src/main.rs +++ b/examples/configurable/src/main.rs @@ -407,7 +407,7 @@ impl ConfigurableApp { ui.add_enabled_ui(!self.settings_navigation.fit_to_screen_enabled, |ui| { ui.vertical(|ui| { ui.checkbox(&mut self.settings_navigation.zoom_and_pan_enabled, "zoom_and_pan"); - ui.label("Zoom with ctrl + mouse wheel, pan with mouse drag."); + ui.label("Zoom with ctrl + mouse wheel, pan with middle mouse drag."); }).response.on_disabled_hover_text("disable fit_to_screen to enable zoom_and_pan"); }); }); diff --git a/src/graph_view.rs b/src/graph_view.rs index 1cfa543..511da9a 100644 --- a/src/graph_view.rs +++ b/src/graph_view.rs @@ -19,7 +19,7 @@ use crate::{ }; #[cfg(feature = "events")] use crossbeam::channel::Sender; -use egui::{Pos2, Rect, Response, Sense, Ui, Vec2, Widget}; +use egui::{PointerButton, Pos2, Rect, Response, Sense, Ui, Vec2, Widget}; use petgraph::{graph::EdgeIndex, stable_graph::DefaultIx}; use petgraph::{graph::IndexType, Directed}; use petgraph::{stable_graph::NodeIndex, EdgeType}; @@ -329,6 +329,13 @@ where return; } + if !resp.dragged_by(PointerButton::Primary) + && !resp.drag_started_by(PointerButton::Primary) + && !resp.drag_released_by(PointerButton::Primary) + { + return; + } + if resp.drag_started() { if let Some(idx) = self.g.node_by_screen_pos(meta, resp.hover_pos().unwrap()) { self.set_drag_start(idx); @@ -417,7 +424,7 @@ where return; } - if resp.dragged() + if resp.dragged_by(PointerButton::Middle) && self.g.dragged_node().is_none() && (resp.drag_delta().x.abs() > 0. || resp.drag_delta().y.abs() > 0.) {