From bfae4a99a4dd0af9e0136d8c596ca315fa7f52b4 Mon Sep 17 00:00:00 2001 From: Mike Williams <mike@mikebwilliams.com> Date: Mon, 7 Oct 2024 10:49:47 -0400 Subject: [PATCH] editors: block paste while in tool in schematic/sym/page layout PCB and footprint editors were already blocking this. Otherwise we would get weird issues when pasting while drawing things like sheets or textboxes that aren't selected while drawing. --- eeschema/sch_edit_frame.cpp | 6 +++--- eeschema/symbol_editor/symbol_edit_frame.cpp | 3 ++- pagelayout_editor/pl_editor_frame.cpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index 865ce7936b..0bde0859b0 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -645,12 +645,12 @@ void SCH_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::cut, ENABLE( hasElements ) ); mgr->SetConditions( ACTIONS::copy, ENABLE( hasElements ) ); - mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle ) ); - mgr->SetConditions( ACTIONS::pasteSpecial, ENABLE( SELECTION_CONDITIONS::Idle ) ); + mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); + mgr->SetConditions( ACTIONS::pasteSpecial, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::doDelete, ENABLE( hasElements ) ); mgr->SetConditions( ACTIONS::duplicate, ENABLE( hasElements ) ); mgr->SetConditions( ACTIONS::selectAll, ENABLE( hasElements ) ); - mgr->SetConditions( ACTIONS::unselectAll, ENABLE( hasElements ) ); + mgr->SetConditions( ACTIONS::unselectAll, ENABLE( hasElements ) ); mgr->SetConditions( EE_ACTIONS::rotateCW, ENABLE( hasElements ) ); mgr->SetConditions( EE_ACTIONS::rotateCCW, ENABLE( hasElements ) ); diff --git a/eeschema/symbol_editor/symbol_edit_frame.cpp b/eeschema/symbol_editor/symbol_edit_frame.cpp index ff8290b09a..755f4eced8 100644 --- a/eeschema/symbol_editor/symbol_edit_frame.cpp +++ b/eeschema/symbol_editor/symbol_edit_frame.cpp @@ -487,7 +487,8 @@ void SYMBOL_EDIT_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::cut, ENABLE( isEditableCond ) ); mgr->SetConditions( ACTIONS::copy, ENABLE( haveSymbolCond ) ); - mgr->SetConditions( ACTIONS::paste, ENABLE( isEditableCond && SELECTION_CONDITIONS::Idle ) ); + mgr->SetConditions( ACTIONS::paste, ENABLE( isEditableCond && + SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::doDelete, ENABLE( isEditableCond ) ); mgr->SetConditions( ACTIONS::duplicate, ENABLE( isEditableCond ) ); mgr->SetConditions( ACTIONS::selectAll, ENABLE( haveSymbolCond ) ); diff --git a/pagelayout_editor/pl_editor_frame.cpp b/pagelayout_editor/pl_editor_frame.cpp index 6c8edea117..22e13299fe 100644 --- a/pagelayout_editor/pl_editor_frame.cpp +++ b/pagelayout_editor/pl_editor_frame.cpp @@ -307,7 +307,7 @@ void PL_EDITOR_FRAME::setupUIConditions() mgr->SetConditions( ACTIONS::cut, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); mgr->SetConditions( ACTIONS::copy, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); - mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle ) ); + mgr->SetConditions( ACTIONS::paste, ENABLE( SELECTION_CONDITIONS::Idle && cond.NoActiveTool() ) ); mgr->SetConditions( ACTIONS::doDelete, ENABLE( SELECTION_CONDITIONS::NotEmpty ) ); mgr->SetConditions( ACTIONS::zoomTool,