int PCB_EDITOR_CONTROL::modifyLockSelected( MODIFY_MODE aMode ) { SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>(); const SELECTION& selection = selTool->GetSelection(); if( selection.Empty() ) m_toolMgr->RunAction( COMMON_ACTIONS::selectionCursor, true ); bool modified = false; for( int i = 0; i < selection.Size(); ++i ) { BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i ); bool prevState = item->IsLocked(); switch( aMode ) { case ON: item->SetLocked( true ); break; case OFF: item->SetLocked( false ); break; case TOGGLE: item->SetLocked( !prevState ); break; } // Check if we really modified an item if( !modified && prevState != item->IsLocked() ) modified = true; } if( modified ) m_frame->OnModify(); return 0; }