diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index f4e980e4182d1418efbe1ca2fbf104a10ed3f4d7..57c49cab71c6ad5e3a89c9b3e1fea908a55ea3b3 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -53,6 +53,8 @@ pub struct PidPane { editable: bool, #[serde(skip)] is_subs_window_visible: bool, + #[serde(skip)] + contains_pointer: bool, } impl Default for PidPane { @@ -66,6 +68,7 @@ impl Default for PidPane { action: None, editable: false, is_subs_window_visible: false, + contains_pointer: false, } } } @@ -81,6 +84,8 @@ impl PartialEq for PidPane { impl PaneBehavior for PidPane { fn ui(&mut self, ui: &mut egui::Ui, _: TileId) -> PaneResponse { + let mut pane_response = PaneResponse::default(); + let theme = PidPane::find_theme(ui.ctx()); if self.center_content && !self.editable { @@ -132,11 +137,18 @@ impl PaneBehavior for PidPane { self.reset_subscriptions(); } - PaneResponse::default() + // Check if the user is draqging the pane + self.contains_pointer = response.contains_pointer(); + let ctrl_pressed = ui.input(|i| i.modifiers.ctrl); + if response.dragged() && (ctrl_pressed || !self.editable) { + pane_response.set_drag_started(); + } + + pane_response } fn contains_pointer(&self) -> bool { - false + self.contains_pointer } fn update(&mut self, messages: &[TimedMessage]) {