ソースを参照

Editor: Resolve being able to move control nodes in containers using arrow keys

Fixes #55260

(cherry picked from commit b5407f802fbcd3cf78a62075cb5a4af5f173fa08)
LlamaLad7 3 年 前
コミット
a0cc90a908
1 ファイル変更10 行追加2 行削除
  1. 10 2
      editor/plugins/canvas_item_editor_plugin.cpp

+ 10 - 2
editor/plugins/canvas_item_editor_plugin.cpp

@@ -2287,8 +2287,16 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
 	if (k.is_valid() && k->is_pressed() && (tool == TOOL_SELECT || tool == TOOL_MOVE) &&
 			(k->get_scancode() == KEY_UP || k->get_scancode() == KEY_DOWN || k->get_scancode() == KEY_LEFT || k->get_scancode() == KEY_RIGHT)) {
 		if (!k->is_echo()) {
-			// Start moving the canvas items with the keyboard
-			drag_selection = _get_edited_canvas_items();
+			// Start moving the canvas items with the keyboard, if they are movable
+			List<CanvasItem *> selection = _get_edited_canvas_items();
+
+			drag_selection.clear();
+			for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
+				if (_is_node_movable(E->get(), true)) {
+					drag_selection.push_back(E->get());
+				}
+			}
+
 			drag_type = DRAG_KEY_MOVE;
 			drag_from = Vector2();
 			drag_to = Vector2();