More undo cleanup.
The symbol editor has few enough items that it will still be performant if we always send a selected-item-modifed event. (As it turns out we were doing that anyway as the check for child-modified flags didn't also check for selected.)
This commit is contained in:
parent
cf0b719a4a
commit
a09a5cb641
|
@ -69,8 +69,6 @@ COMMIT& SCH_COMMIT::Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN
|
||||||
{
|
{
|
||||||
wxCHECK( aItem, *this );
|
wxCHECK( aItem, *this );
|
||||||
|
|
||||||
aItem->ClearFlags( IS_MODIFIED_CHILD );
|
|
||||||
|
|
||||||
// If aItem belongs a symbol, sheet or label, the full parent will be saved because undo/redo
|
// If aItem belongs a symbol, sheet or label, the full parent will be saved because undo/redo
|
||||||
// does not handle "sub items" modifications.
|
// does not handle "sub items" modifications.
|
||||||
if( aItem->Type() != SCH_SHEET_T
|
if( aItem->Type() != SCH_SHEET_T
|
||||||
|
@ -78,7 +76,6 @@ COMMIT& SCH_COMMIT::Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN
|
||||||
SCH_SHEET_T,
|
SCH_SHEET_T,
|
||||||
SCH_LABEL_LOCATE_ANY_T } ) )
|
SCH_LABEL_LOCATE_ANY_T } ) )
|
||||||
{
|
{
|
||||||
aItem->SetFlags( IS_MODIFIED_CHILD );
|
|
||||||
aItem = aItem->GetParent();
|
aItem = aItem->GetParent();
|
||||||
aChangeType = CHT_MODIFY;
|
aChangeType = CHT_MODIFY;
|
||||||
}
|
}
|
||||||
|
@ -121,7 +118,6 @@ void SCH_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
{
|
{
|
||||||
KIGFX::VIEW* view = m_toolMgr->GetView();
|
KIGFX::VIEW* view = m_toolMgr->GetView();
|
||||||
SYMBOL_EDIT_FRAME* frame = static_cast<SYMBOL_EDIT_FRAME*>( m_toolMgr->GetToolHolder() );
|
SYMBOL_EDIT_FRAME* frame = static_cast<SYMBOL_EDIT_FRAME*>( m_toolMgr->GetToolHolder() );
|
||||||
bool selectedModified = false;
|
|
||||||
|
|
||||||
if( Empty() )
|
if( Empty() )
|
||||||
return;
|
return;
|
||||||
|
@ -132,16 +128,6 @@ void SCH_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
|
|
||||||
if( symbol )
|
if( symbol )
|
||||||
{
|
{
|
||||||
if( symbol->IsSelected() )
|
|
||||||
selectedModified = true;
|
|
||||||
|
|
||||||
symbol->RunOnChildren(
|
|
||||||
[&selectedModified]( LIB_ITEM* aItem )
|
|
||||||
{
|
|
||||||
if( aItem->HasFlag( IS_MODIFIED_CHILD ) )
|
|
||||||
selectedModified = true;
|
|
||||||
} );
|
|
||||||
|
|
||||||
if( view )
|
if( view )
|
||||||
{
|
{
|
||||||
view->Update( symbol );
|
view->Update( symbol );
|
||||||
|
@ -171,8 +157,6 @@ void SCH_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
}
|
}
|
||||||
|
|
||||||
m_toolMgr->PostEvent( { TC_MESSAGE, TA_MODEL_CHANGE, AS_GLOBAL } );
|
m_toolMgr->PostEvent( { TC_MESSAGE, TA_MODEL_CHANGE, AS_GLOBAL } );
|
||||||
|
|
||||||
if( selectedModified )
|
|
||||||
m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
|
m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
|
||||||
|
|
||||||
if( !( aCommitFlags & SKIP_SET_DIRTY ) )
|
if( !( aCommitFlags & SKIP_SET_DIRTY ) )
|
||||||
|
|
|
@ -67,8 +67,8 @@
|
||||||
#define SHOW_ELEC_TYPE (1 << 25) ///< Show pin electrical type. Shared with IS_ROLLOVER.
|
#define SHOW_ELEC_TYPE (1 << 25) ///< Show pin electrical type. Shared with IS_ROLLOVER.
|
||||||
#define BRIGHTENED (1 << 26) ///< item is drawn with a bright contour
|
#define BRIGHTENED (1 << 26) ///< item is drawn with a bright contour
|
||||||
|
|
||||||
#define IS_MODIFIED_CHILD (1 << 27)///< when a child is promoted to its parent for a COMMIT, this
|
// 27 is unused
|
||||||
///< flag indicates the modified child
|
|
||||||
#define UR_TRANSIENT (1 << 28) ///< indicates the item is owned by the undo/redo stack
|
#define UR_TRANSIENT (1 << 28) ///< indicates the item is owned by the undo/redo stack
|
||||||
|
|
||||||
#define IS_DANGLING (1 << 29) ///< indicates a pin is dangling
|
#define IS_DANGLING (1 << 29) ///< indicates a pin is dangling
|
||||||
|
|
|
@ -224,14 +224,6 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
for( PCB_VIA* via : connectedVias )
|
for( PCB_VIA* via : connectedVias )
|
||||||
staleTeardropPadsAndVias.push_back( via );
|
staleTeardropPadsAndVias.push_back( via );
|
||||||
}
|
}
|
||||||
else if( boardItem->Type() == PCB_FOOTPRINT_T )
|
|
||||||
{
|
|
||||||
for( PAD* pad : static_cast<FOOTPRINT*>( boardItem )->Pads() )
|
|
||||||
{
|
|
||||||
if( pad->GetFlags() & IS_MODIFIED_CHILD )
|
|
||||||
staleTeardropPadsAndVias.push_back( pad );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue