diff options
Diffstat (limited to 'DevTools/HackStudio/CursorTool.cpp')
-rw-r--r-- | DevTools/HackStudio/CursorTool.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/DevTools/HackStudio/CursorTool.cpp b/DevTools/HackStudio/CursorTool.cpp index e95f632282..643f9ef701 100644 --- a/DevTools/HackStudio/CursorTool.cpp +++ b/DevTools/HackStudio/CursorTool.cpp @@ -81,3 +81,32 @@ void CursorTool::on_mousemove(GMouseEvent& event) return; } } + +void CursorTool::on_keydown(GKeyEvent& event) +{ + dbg() << "CursorTool::on_keydown"; + + auto move_selected_widgets_by = [this](int x, int y) { + m_editor.selection().for_each([&](auto& widget) { + widget.move_by(x, y); + return IterationDecision::Continue; + }); + }; + + if (event.modifiers() == 0) { + switch (event.key()) { + case Key_Down: + move_selected_widgets_by(0, m_editor.form_widget().grid_size()); + break; + case Key_Up: + move_selected_widgets_by(0, -m_editor.form_widget().grid_size()); + break; + case Key_Left: + move_selected_widgets_by(-m_editor.form_widget().grid_size(), 0); + break; + case Key_Right: + move_selected_widgets_by(m_editor.form_widget().grid_size(), 0); + break; + } + } +} |