From 95b5479b3b67b2ae21d6e47a5be1d1eab7a35e7b Mon Sep 17 00:00:00 2001
From: Alberto Nidasio <alberto.nidasio@skywarder.eu>
Date: Sun, 12 Jan 2025 15:17:04 +0100
Subject: [PATCH] Pointer now changes to grab icon when hovering PID elements
---
src/ui/panes/pid_drawing_tool.rs | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs
index b9113cc..6f93261 100644
--- a/src/ui/panes/pid_drawing_tool.rs
+++ b/src/ui/panes/pid_drawing_tool.rs
@@ -4,7 +4,9 @@ mod pos;
mod symbols;
use connections::Connection;
-use egui::{epaint::PathStroke, Color32, Context, PointerButton, Pos2, Sense, Theme, Ui, Vec2};
+use egui::{
+ epaint::PathStroke, Color32, Context, CursorIcon, PointerButton, Pos2, Sense, Theme, Ui, Vec2,
+};
use elements::Element;
use pos::Pos;
use serde::{Deserialize, Serialize};
@@ -49,9 +51,6 @@ impl Default for PidPane {
impl PaneBehavior for PidPane {
fn ui(&mut self, ui: &mut egui::Ui) -> PaneResponse {
- // Set cursor icon
- // ui.ctx().output_mut(|output| output.cursor_icon = CursorIcon::Grab);
-
let theme = PidPane::find_theme(ui.ctx());
self.draw_grid(theme, ui);
self.draw_connections(ui);
@@ -61,6 +60,14 @@ impl PaneBehavior for PidPane {
let (_, response) = ui.allocate_at_least(ui.max_rect().size(), Sense::click_and_drag());
let pointer_pos = response.hover_pos().map(|pos| self.screen_to_grid_pos(pos));
+ // Set grab icon when hovering an element
+ if let Some(pointer_pos) = &pointer_pos {
+ if self.is_hovering_element(pointer_pos) {
+ ui.ctx()
+ .output_mut(|output| output.cursor_icon = CursorIcon::Grab);
+ }
+ }
+
// Detect the action
if let Some(pointer_pos) = &pointer_pos {
if response.clicked_by(PointerButton::Secondary) {
--
GitLab