Commit 83be1f8a authored by charras's avatar charras
Browse files

Rework on undo/redo and block functions: more efficient code to undo/redo...

Rework on undo/redo and block functions: more efficient code to undo/redo block move and mirror operations
parent daceb2e0
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -32,7 +32,7 @@


PICKED_ITEMS_LIST::PICKED_ITEMS_LIST()
PICKED_ITEMS_LIST::PICKED_ITEMS_LIST()
{
{
    m_UndoRedoType = 0;
    m_Status = UR_UNSPECIFIED;
};
};


PICKED_ITEMS_LIST::~PICKED_ITEMS_LIST()
PICKED_ITEMS_LIST::~PICKED_ITEMS_LIST()
@@ -102,12 +102,12 @@ EDA_BaseStruct* PICKED_ITEMS_LIST::GetImage( unsigned int aIdx )
}
}




int PICKED_ITEMS_LIST::GetItemStatus( unsigned int aIdx )
UndoRedoOpType PICKED_ITEMS_LIST::GetItemStatus( unsigned int aIdx )
{
{
    if( aIdx < m_ItemsList.size() )
    if( aIdx < m_ItemsList.size() )
        return m_ItemsList[aIdx].m_UndoRedoStatus;
        return m_ItemsList[aIdx].m_UndoRedoStatus;
    else
    else
        return 0;
        return UR_UNSPECIFIED;
}
}




@@ -135,7 +135,7 @@ bool PICKED_ITEMS_LIST::SetLink( EDA_BaseStruct* aItem, unsigned aIdx )
}
}




bool PICKED_ITEMS_LIST::SetItem( EDA_BaseStruct* aItem, int aStatus, unsigned aIdx )
bool PICKED_ITEMS_LIST::SetItem( EDA_BaseStruct* aItem, UndoRedoOpType aStatus, unsigned aIdx )
{
{
    if( aIdx < m_ItemsList.size() )
    if( aIdx < m_ItemsList.size() )
    {
    {
@@ -148,7 +148,7 @@ bool PICKED_ITEMS_LIST::SetItem( EDA_BaseStruct* aItem, int aStatus, unsigned aI
}
}




bool PICKED_ITEMS_LIST::SetItemStatus( int aStatus, unsigned aIdx )
bool PICKED_ITEMS_LIST::SetItemStatus( UndoRedoOpType aStatus, unsigned aIdx )
{
{
    if( aIdx < m_ItemsList.size() )
    if( aIdx < m_ItemsList.size() )
    {
    {
+1 −1
Original line number Original line Diff line number Diff line
@@ -45,7 +45,7 @@ void SCH_ITEM::Place( WinEDA_SchematicFrame* frame, wxDC* DC )
        if( !screen->CheckIfOnDrawList( this ) )  //don't want a loop!
        if( !screen->CheckIfOnDrawList( this ) )  //don't want a loop!
            screen->AddToDrawList( this );
            screen->AddToDrawList( this );
        g_ItemToRepeat = this;
        g_ItemToRepeat = this;
        frame->SaveCopyInUndoList( this, IS_NEW );
        frame->SaveCopyInUndoList( this, UR_NEW );
    }
    }


    m_Flags = 0;
    m_Flags = 0;
+1 −0
Original line number Original line Diff line number Diff line
@@ -73,6 +73,7 @@ set(EESCHEMA_SRCS
    erc.cpp
    erc.cpp
    files-io.cpp
    files-io.cpp
    find.cpp
    find.cpp
    geometric_transforms.cpp
    getpart.cpp
    getpart.cpp
    hierarch.cpp
    hierarch.cpp
    hotkeys.cpp
    hotkeys.cpp
+32 −362

File changed.

Preview size limit exceeded, changes collapsed.

+4 −4
Original line number Original line Diff line number Diff line
@@ -357,7 +357,7 @@ void WinEDA_SchematicFrame::EndSegment( wxDC* DC )


    DrawPanel->CursorOn( DC );    // Display schematic cursor
    DrawPanel->CursorOn( DC );    // Display schematic cursor


    SaveCopyInUndoList( s_OldWiresList, IS_WIRE_IMAGE );
    SaveCopyInUndoList( s_OldWiresList, UR_WIRE_IMAGE );
    s_OldWiresList = NULL;
    s_OldWiresList = NULL;


    GetScreen()->SetModify();
    GetScreen()->SetModify();
@@ -548,7 +548,7 @@ DrawJunctionStruct* WinEDA_SchematicFrame::CreateNewJunctionStruct(
    GetScreen()->EEDrawList = NewJunction;
    GetScreen()->EEDrawList = NewJunction;
    GetScreen()->SetModify();
    GetScreen()->SetModify();
    if( PutInUndoList )
    if( PutInUndoList )
        SaveCopyInUndoList( NewJunction, IS_NEW );
        SaveCopyInUndoList( NewJunction, UR_NEW );
    return NewJunction;
    return NewJunction;
}
}


@@ -572,7 +572,7 @@ DrawNoConnectStruct* WinEDA_SchematicFrame::CreateNewNoConnectStruct( wxDC* DC )
    NewNoConnect->SetNext( GetScreen()->EEDrawList );
    NewNoConnect->SetNext( GetScreen()->EEDrawList );
    GetScreen()->EEDrawList = NewNoConnect;
    GetScreen()->EEDrawList = NewNoConnect;
    GetScreen()->SetModify();
    GetScreen()->SetModify();
    SaveCopyInUndoList( NewNoConnect, IS_NEW );
    SaveCopyInUndoList( NewNoConnect, UR_NEW );
    return NewNoConnect;
    return NewNoConnect;
}
}


@@ -734,7 +734,7 @@ void WinEDA_SchematicFrame::RepeatDrawItem( wxDC* DC )
        GetScreen()->EEDrawList = g_ItemToRepeat;
        GetScreen()->EEDrawList = g_ItemToRepeat;
        TestDanglingEnds( GetScreen()->EEDrawList, NULL );
        TestDanglingEnds( GetScreen()->EEDrawList, NULL );
        RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, GR_DEFAULT_DRAWMODE );
        RedrawOneStruct( DrawPanel, DC, g_ItemToRepeat, GR_DEFAULT_DRAWMODE );
        SaveCopyInUndoList( g_ItemToRepeat, IS_NEW );
        SaveCopyInUndoList( g_ItemToRepeat, UR_NEW );
        g_ItemToRepeat->m_Flags = 0;
        g_ItemToRepeat->m_Flags = 0;


//		GetScreen()->Curseur = new_pos;
//		GetScreen()->Curseur = new_pos;
Loading