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; break;
case HK_ROTATE: case HK_ROTATE:
if( m_drawItem == NULL ) if( ! itemInEdit )
m_drawItem = LocateItemUsingCursor( aPosition ); m_drawItem = LocateItemUsingCursor( aPosition );
if( m_drawItem ) if( m_drawItem )

View File

@ -1878,16 +1878,29 @@ int LIB_PIN::GetOrientationCodeIndex( int code )
void LIB_PIN::Rotate() void LIB_PIN::Rotate()
{ {
// Get the actual pin orientation index int orient = PIN_RIGHT;
int i = GetOrientationCodeIndex( GetOrientation() );
// Compute the next orientation, swap lower two bits for the right order switch( GetOrientation() )
i = ( (i & 2) >> 1 ) | ( (i & 1) << 1 ); {
i = i + 1; case PIN_UP:
i = ( (i & 2) >> 1 ) | ( (i & 1) << 1 ); 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 // 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(); m_drawItem->Rotate();
OnModify(); OnModify();
if( !m_drawItem->InEditMode() )
m_drawItem->ClearFlags();
DrawPanel->Refresh(); DrawPanel->Refresh();
if( GetToolId() == ID_NO_TOOL_SELECTED ) if( GetToolId() == ID_NO_TOOL_SELECTED )