From 2d972fcf66105aa3a1df27765c009ae2ba3fd6f4 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Thu, 5 May 2011 20:43:56 +0200 Subject: [PATCH] Libedit: other fix in pin edition. --- eeschema/hotkeys.cpp | 2 +- eeschema/lib_pin.cpp | 27 ++++++++++++++++++++------- eeschema/libeditframe.cpp | 4 ++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/eeschema/hotkeys.cpp b/eeschema/hotkeys.cpp index 2dd98d9d48..d4541950d7 100644 --- a/eeschema/hotkeys.cpp +++ b/eeschema/hotkeys.cpp @@ -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 ) diff --git a/eeschema/lib_pin.cpp b/eeschema/lib_pin.cpp index 6cdf5c8363..5502ac1ca0 100644 --- a/eeschema/lib_pin.cpp +++ b/eeschema/lib_pin.cpp @@ -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 ); } diff --git a/eeschema/libeditframe.cpp b/eeschema/libeditframe.cpp index 0020341f8b..735fb8e92f 100644 --- a/eeschema/libeditframe.cpp +++ b/eeschema/libeditframe.cpp @@ -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 )