Libedit: other fix in pin edition.

This commit is contained in:
jean-pierre charras 2011-05-05 20:43:56 +02:00
parent 70de08f397
commit 2d972fcf66
3 changed files with 25 additions and 8 deletions

View File

@ -957,7 +957,7 @@ void LIB_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition,
break;
case HK_ROTATE:
if( m_drawItem == NULL )
if( ! itemInEdit )
m_drawItem = LocateItemUsingCursor( aPosition );
if( m_drawItem )

View File

@ -1878,16 +1878,29 @@ int LIB_PIN::GetOrientationCodeIndex( int code )
void LIB_PIN::Rotate()
{
// Get the actual pin orientation index
int i = GetOrientationCodeIndex( GetOrientation() );
int orient = PIN_RIGHT;
// Compute the next orientation, swap lower two bits for the right order
i = ( (i & 2) >> 1 ) | ( (i & 1) << 1 );
i = i + 1;
i = ( (i & 2) >> 1 ) | ( (i & 1) << 1 );
switch( GetOrientation() )
{
case PIN_UP:
orient = PIN_LEFT;
break;
case PIN_DOWN:
orient = PIN_RIGHT;
break;
case PIN_LEFT:
orient = PIN_DOWN;
break;
case PIN_RIGHT:
orient = PIN_UP;
break;
}
// Set the new orientation
SetOrientation( GetOrientationCode( i ) );
SetOrientation( orient );
}

View File

@ -1071,6 +1071,10 @@ void LIB_EDIT_FRAME::OnRotateItem( wxCommandEvent& aEvent )
m_drawItem->Rotate();
OnModify();
if( !m_drawItem->InEditMode() )
m_drawItem->ClearFlags();
DrawPanel->Refresh();
if( GetToolId() == ID_NO_TOOL_SELECTED )