diff options
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r-- | Project/Workspace.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index da01c8d..6ac326f 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -575,12 +575,24 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Element* parent = element->GetParentList()[i]; if(parent) { // Check if parent is not null if(parent->IsSelected()) { - element->RotateNode(parent); + if(event.GetModifiers() == wxMOD_SHIFT) { + element->RotateNode(parent, false); + } + else + { + element->RotateNode(parent); + } } } } if(element->IsSelected()) { - element->Rotate(); + if(event.GetModifiers() == wxMOD_SHIFT) { + element->Rotate(false); + } + else + { + element->Rotate(); + } } } Redraw(); @@ -760,7 +772,7 @@ void Workspace::OnPopupClick(wxCommandEvent& event) Redraw(); } break; - case ID_ROTATE: + case ID_ROTATE_CLOCK: { element->Rotate(); for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { @@ -776,6 +788,22 @@ void Workspace::OnPopupClick(wxCommandEvent& event) Redraw(); } break; + case ID_ROTATE_COUNTERCLOCK: + { + element->Rotate(false); + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* iElement = *it; + // Parent's element rotating... + for(int i = 0; i < (int)iElement->GetParentList().size(); i++) { + Element* parent = iElement->GetParentList()[i]; + if(parent == element) { + iElement->RotateNode(parent, false); + } + } + } + Redraw(); + } + break; case ID_DELETE: { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { |