eeschema: Rotate bus wire entry components

These components were rotatable as a block but not individually.

Fixes: lp:1809448
* https://bugs.launchpad.net/kicad/+bug/1809448
This commit is contained in:
Seth Hillbrand 2019-01-27 21:55:12 -08:00
parent e2b3a1118d
commit 4901481e12
2 changed files with 23 additions and 3 deletions

View File

@ -157,6 +157,8 @@ const KICAD_T SCH_COLLECTOR::RotatableItems[] = {
SCH_COMPONENT_T,
SCH_SHEET_T,
SCH_BITMAP_T,
SCH_BUS_BUS_ENTRY_T,
SCH_BUS_WIRE_ENTRY_T,
EOT
};
@ -200,6 +202,8 @@ const KICAD_T SCH_COLLECTOR::SheetsAndSheetLabels[] = {
const KICAD_T SCH_COLLECTOR::OrientableItems[] = {
SCH_BUS_BUS_ENTRY_T,
SCH_BUS_WIRE_ENTRY_T,
SCH_COMPONENT_T,
SCH_BITMAP_T,
SCH_SHEET_T,

View File

@ -867,8 +867,6 @@ void SCH_EDIT_FRAME::OnRotate( wxCommandEvent& aEvent )
item = LocateAndShowItem( data->GetPosition(), SCH_COLLECTOR::RotatableItems,
aEvent.GetInt() );
DBG(printf("Rotate Item %p", item);)
// Exit if no item found at the current location or the item is already being edited.
if( (item == NULL) || (item->GetFlags() != 0) )
return;
@ -901,6 +899,13 @@ void SCH_EDIT_FRAME::OnRotate( wxCommandEvent& aEvent )
ChangeTextOrient( (SCH_TEXT*) item );
break;
case SCH_BUS_BUS_ENTRY_T:
case SCH_BUS_WIRE_ENTRY_T:
m_canvas->MoveCursorToCrossHair();
SaveCopyInUndoList( item, UR_CHANGED );
item->Rotate( m_canvas->GetParent()->GetCrossHairPosition() );
break;
case SCH_FIELD_T:
m_canvas->MoveCursorToCrossHair();
RotateField( (SCH_FIELD*) item );
@ -1290,7 +1295,6 @@ void SCH_EDIT_FRAME::OnOrient( wxCommandEvent& aEvent )
// The bitmap is cached in Opengl: clear the cache, because
// the cache data is invalid
GetCanvas()->GetGAL()->ClearCache();
break;
case SCH_SHEET_T:
@ -1301,6 +1305,18 @@ void SCH_EDIT_FRAME::OnOrient( wxCommandEvent& aEvent )
break;
case SCH_BUS_BUS_ENTRY_T:
case SCH_BUS_WIRE_ENTRY_T:
m_canvas->MoveCursorToCrossHair();
SaveCopyInUndoList( item, UR_CHANGED );
if( aEvent.GetId() == ID_SCH_MIRROR_X )
item->MirrorX( m_canvas->GetParent()->GetCrossHairPosition().y );
else if( aEvent.GetId() == ID_SCH_MIRROR_Y )
item->MirrorY( m_canvas->GetParent()->GetCrossHairPosition().x );
break;
default:
// This object cannot be oriented.
;