Loading pcbnew/tools/point_editor.cpp +34 −5 Original line number Diff line number Diff line Loading @@ -47,9 +47,9 @@ class EDIT_POINTS_FACTORY public: static boost::shared_ptr<EDIT_POINTS> Make( EDA_ITEM* aItem ) { // TODO generate list of points basing on the type boost::shared_ptr<EDIT_POINTS> points = boost::make_shared<EDIT_POINTS>( aItem ); // Generate list of edit points basing on the item type switch( aItem->Type() ) { case PCB_LINE_T: Loading Loading @@ -140,20 +140,22 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) { const SELECTION_TOOL::SELECTION& selection = m_selectionTool->GetSelection(); KIGFX::VIEW_CONTROLS* controls = getViewControls(); m_dragPoint = NULL; if( selection.Size() == 1 ) { Activate(); PCB_EDIT_FRAME* editFrame = getEditFrame<PCB_EDIT_FRAME>(); EDA_ITEM* item = selection.items.GetPickedItem( 0 ); m_editPoints = EDIT_POINTS_FACTORY::Make( item ); m_toolMgr->GetView()->Add( m_editPoints.get() ); m_dragPoint = NULL; bool modified = false; Activate(); // Main loop: keep receiving events while( OPT_TOOL_EVENT evt = Wait() ) { if( !m_editPoints || evt->IsCancel() || if( !m_editPoints || evt->Matches( m_selectionTool->ClearedEvent ) || evt->Matches( m_selectionTool->DeselectedEvent ) || evt->Matches( m_selectionTool->SelectedEvent ) ) Loading Loading @@ -186,6 +188,14 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) else if( evt->IsDrag( BUT_LEFT ) && m_dragPoint ) { if( !modified ) { // Save items, so changes can be undone editFrame->OnModify(); editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED ); modified = true; } m_dragPoint->SetPosition( controls->GetCursorPosition() ); m_dragPoint->ApplyConstraint(); updateItem(); Loading @@ -199,6 +209,25 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) updatePoints(); } else if( evt->IsMouseUp( BUT_LEFT ) ) { modified = false; } else if( evt->IsCancel() ) { if( modified ) // Restore the last change { wxCommandEvent dummy; editFrame->GetBoardFromUndoList( dummy ); updatePoints(); modified = false; } break; } else { m_toolMgr->PassEvent(); Loading Loading
pcbnew/tools/point_editor.cpp +34 −5 Original line number Diff line number Diff line Loading @@ -47,9 +47,9 @@ class EDIT_POINTS_FACTORY public: static boost::shared_ptr<EDIT_POINTS> Make( EDA_ITEM* aItem ) { // TODO generate list of points basing on the type boost::shared_ptr<EDIT_POINTS> points = boost::make_shared<EDIT_POINTS>( aItem ); // Generate list of edit points basing on the item type switch( aItem->Type() ) { case PCB_LINE_T: Loading Loading @@ -140,20 +140,22 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) { const SELECTION_TOOL::SELECTION& selection = m_selectionTool->GetSelection(); KIGFX::VIEW_CONTROLS* controls = getViewControls(); m_dragPoint = NULL; if( selection.Size() == 1 ) { Activate(); PCB_EDIT_FRAME* editFrame = getEditFrame<PCB_EDIT_FRAME>(); EDA_ITEM* item = selection.items.GetPickedItem( 0 ); m_editPoints = EDIT_POINTS_FACTORY::Make( item ); m_toolMgr->GetView()->Add( m_editPoints.get() ); m_dragPoint = NULL; bool modified = false; Activate(); // Main loop: keep receiving events while( OPT_TOOL_EVENT evt = Wait() ) { if( !m_editPoints || evt->IsCancel() || if( !m_editPoints || evt->Matches( m_selectionTool->ClearedEvent ) || evt->Matches( m_selectionTool->DeselectedEvent ) || evt->Matches( m_selectionTool->SelectedEvent ) ) Loading Loading @@ -186,6 +188,14 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) else if( evt->IsDrag( BUT_LEFT ) && m_dragPoint ) { if( !modified ) { // Save items, so changes can be undone editFrame->OnModify(); editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED ); modified = true; } m_dragPoint->SetPosition( controls->GetCursorPosition() ); m_dragPoint->ApplyConstraint(); updateItem(); Loading @@ -199,6 +209,25 @@ int POINT_EDITOR::OnSelectionChange( TOOL_EVENT& aEvent ) updatePoints(); } else if( evt->IsMouseUp( BUT_LEFT ) ) { modified = false; } else if( evt->IsCancel() ) { if( modified ) // Restore the last change { wxCommandEvent dummy; editFrame->GetBoardFromUndoList( dummy ); updatePoints(); modified = false; } break; } else { m_toolMgr->PassEvent(); Loading