summaryrefslogtreecommitdiff
path: root/DevTools/HackStudio/CursorTool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'DevTools/HackStudio/CursorTool.cpp')
-rw-r--r--DevTools/HackStudio/CursorTool.cpp29
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;
+ }
+ }
+}