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]) {