From 4ddb942ec0e3edaa995a3397e267e96d0654baa8 Mon Sep 17 00:00:00 2001 From: Jon Evans Date: Thu, 4 Mar 2021 19:01:17 -0500 Subject: [PATCH] Do not allow drag selection or drag move when already moving something Fixes https://gitlab.com/kicad/code/kicad/-/issues/7800 --- eeschema/tools/ee_selection_tool.cpp | 7 +++++++ eeschema/tools/sch_drawing_tools.cpp | 1 + pcbnew/tools/pcb_selection_tool.cpp | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/eeschema/tools/ee_selection_tool.cpp b/eeschema/tools/ee_selection_tool.cpp index 0f462a898c..26c14552c5 100644 --- a/eeschema/tools/ee_selection_tool.cpp +++ b/eeschema/tools/ee_selection_tool.cpp @@ -536,6 +536,13 @@ int EE_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent ) } else if( evt->IsDrag( BUT_LEFT ) ) { + // Is another tool already moving a new object? Don't allow a drag start + if( !m_selection.Empty() && m_selection[0]->HasFlag( IS_NEW | IS_MOVED ) ) + { + evt->SetPassEvent(); + continue; + } + // drag with LMB? Select multiple objects (or at least draw a selection box) or // drag them if( SCH_EDIT_FRAME* schframe = dynamic_cast( m_frame ) ) diff --git a/eeschema/tools/sch_drawing_tools.cpp b/eeschema/tools/sch_drawing_tools.cpp index 633c918850..7518045c41 100644 --- a/eeschema/tools/sch_drawing_tools.cpp +++ b/eeschema/tools/sch_drawing_tools.cpp @@ -905,6 +905,7 @@ int SCH_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent ) SCH_ITEM* item = nullptr; KIGFX::VIEW_CONTROLS* controls = getViewControls(); EE_GRID_HELPER grid( m_toolMgr ); + if( m_inTwoClickPlace ) return 0; else diff --git a/pcbnew/tools/pcb_selection_tool.cpp b/pcbnew/tools/pcb_selection_tool.cpp index d3df6d9efe..57f61e83d5 100644 --- a/pcbnew/tools/pcb_selection_tool.cpp +++ b/pcbnew/tools/pcb_selection_tool.cpp @@ -345,6 +345,13 @@ int PCB_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent ) } else if( evt->IsDrag( BUT_LEFT ) ) { + // Is another tool already moving a new object? Don't allow a drag start + if( !m_selection.Empty() && m_selection[0]->HasFlag( IS_NEW | IS_MOVED ) ) + { + evt->SetPassEvent(); + continue; + } + // Drag with LMB? Select multiple objects (or at least draw a selection box) // or drag them m_frame->FocusOnItem( nullptr );