Add keyboard shortcuts for grouping and locking nodes, change grid toggle
- Locking nodes can now be done by pressing Ctrl + L, and unlocking with Ctrl + Shift + L. - Grouping nodes is now done by pressing Ctrl + G, and ungrouping with Ctrl + Shift + G (similar to Inkscape). - Toggling the grid is now done by pressing the `#` key (also similar to Inkscape). This change was needed as Ctrl + G now groups selected nodes. Different shortcuts are used for the lock/unlock and group/ungroup actions, so that the shortcuts are idempotent.
This commit is contained in:
parent
3530cb639a
commit
b7bb84bf46
|
@ -5423,24 +5423,32 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
|
||||||
|
|
||||||
lock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(LOCK_SELECTED));
|
lock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(LOCK_SELECTED));
|
||||||
lock_button->set_tooltip(TTR("Lock the selected object in place (can't be moved)."));
|
lock_button->set_tooltip(TTR("Lock the selected object in place (can't be moved)."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
lock_button->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KEY_MASK_CMD | KEY_L));
|
||||||
|
|
||||||
unlock_button = memnew(Button);
|
unlock_button = memnew(Button);
|
||||||
unlock_button->set_flat(true);
|
unlock_button->set_flat(true);
|
||||||
hb->add_child(unlock_button);
|
hb->add_child(unlock_button);
|
||||||
unlock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(UNLOCK_SELECTED));
|
unlock_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(UNLOCK_SELECTED));
|
||||||
unlock_button->set_tooltip(TTR("Unlock the selected object (can be moved)."));
|
unlock_button->set_tooltip(TTR("Unlock the selected object (can be moved)."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
unlock_button->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_L));
|
||||||
|
|
||||||
group_button = memnew(Button);
|
group_button = memnew(Button);
|
||||||
group_button->set_flat(true);
|
group_button->set_flat(true);
|
||||||
hb->add_child(group_button);
|
hb->add_child(group_button);
|
||||||
group_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(GROUP_SELECTED));
|
group_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(GROUP_SELECTED));
|
||||||
group_button->set_tooltip(TTR("Makes sure the object's children are not selectable."));
|
group_button->set_tooltip(TTR("Makes sure the object's children are not selectable."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
group_button->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KEY_MASK_CMD | KEY_G));
|
||||||
|
|
||||||
ungroup_button = memnew(Button);
|
ungroup_button = memnew(Button);
|
||||||
ungroup_button->set_flat(true);
|
ungroup_button->set_flat(true);
|
||||||
hb->add_child(ungroup_button);
|
hb->add_child(ungroup_button);
|
||||||
ungroup_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(UNGROUP_SELECTED));
|
ungroup_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(UNGROUP_SELECTED));
|
||||||
ungroup_button->set_tooltip(TTR("Restores the object's children's ability to be selected."));
|
ungroup_button->set_tooltip(TTR("Restores the object's children's ability to be selected."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
ungroup_button->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_G));
|
||||||
|
|
||||||
hb->add_child(memnew(VSeparator));
|
hb->add_child(memnew(VSeparator));
|
||||||
|
|
||||||
|
@ -5478,7 +5486,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
|
||||||
|
|
||||||
p = view_menu->get_popup();
|
p = view_menu->get_popup();
|
||||||
p->set_hide_on_checkable_item_selection(false);
|
p->set_hide_on_checkable_item_selection(false);
|
||||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_grid", TTR("Always Show Grid"), KEY_MASK_CMD | KEY_G), SHOW_GRID);
|
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_grid", TTR("Always Show Grid"), KEY_NUMBERSIGN), SHOW_GRID);
|
||||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_helpers", TTR("Show Helpers"), KEY_H), SHOW_HELPERS);
|
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_helpers", TTR("Show Helpers"), KEY_H), SHOW_HELPERS);
|
||||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_rulers", TTR("Show Rulers")), SHOW_RULERS);
|
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_rulers", TTR("Show Rulers")), SHOW_RULERS);
|
||||||
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_guides", TTR("Show Guides"), KEY_Y), SHOW_GUIDES);
|
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_guides", TTR("Show Guides"), KEY_Y), SHOW_GUIDES);
|
||||||
|
|
|
@ -6778,6 +6778,8 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
|
||||||
button_binds.write[0] = MENU_LOCK_SELECTED;
|
button_binds.write[0] = MENU_LOCK_SELECTED;
|
||||||
tool_button[TOOL_LOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
tool_button[TOOL_LOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
||||||
tool_button[TOOL_LOCK_SELECTED]->set_tooltip(TTR("Lock the selected object in place (can't be moved)."));
|
tool_button[TOOL_LOCK_SELECTED]->set_tooltip(TTR("Lock the selected object in place (can't be moved)."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
tool_button[TOOL_LOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/lock_selected_nodes", TTR("Lock Selected Node(s)"), KEY_MASK_CMD | KEY_L));
|
||||||
|
|
||||||
tool_button[TOOL_UNLOCK_SELECTED] = memnew(Button);
|
tool_button[TOOL_UNLOCK_SELECTED] = memnew(Button);
|
||||||
hbc_menu->add_child(tool_button[TOOL_UNLOCK_SELECTED]);
|
hbc_menu->add_child(tool_button[TOOL_UNLOCK_SELECTED]);
|
||||||
|
@ -6785,6 +6787,8 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
|
||||||
button_binds.write[0] = MENU_UNLOCK_SELECTED;
|
button_binds.write[0] = MENU_UNLOCK_SELECTED;
|
||||||
tool_button[TOOL_UNLOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
tool_button[TOOL_UNLOCK_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
||||||
tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip(TTR("Unlock the selected object (can be moved)."));
|
tool_button[TOOL_UNLOCK_SELECTED]->set_tooltip(TTR("Unlock the selected object (can be moved)."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
tool_button[TOOL_UNLOCK_SELECTED]->set_shortcut(ED_SHORTCUT("editor/unlock_selected_nodes", TTR("Unlock Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_L));
|
||||||
|
|
||||||
tool_button[TOOL_GROUP_SELECTED] = memnew(Button);
|
tool_button[TOOL_GROUP_SELECTED] = memnew(Button);
|
||||||
hbc_menu->add_child(tool_button[TOOL_GROUP_SELECTED]);
|
hbc_menu->add_child(tool_button[TOOL_GROUP_SELECTED]);
|
||||||
|
@ -6792,6 +6796,8 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
|
||||||
button_binds.write[0] = MENU_GROUP_SELECTED;
|
button_binds.write[0] = MENU_GROUP_SELECTED;
|
||||||
tool_button[TOOL_GROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
tool_button[TOOL_GROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
||||||
tool_button[TOOL_GROUP_SELECTED]->set_tooltip(TTR("Makes sure the object's children are not selectable."));
|
tool_button[TOOL_GROUP_SELECTED]->set_tooltip(TTR("Makes sure the object's children are not selectable."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
tool_button[TOOL_GROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/group_selected_nodes", TTR("Group Selected Node(s)"), KEY_MASK_CMD | KEY_G));
|
||||||
|
|
||||||
tool_button[TOOL_UNGROUP_SELECTED] = memnew(Button);
|
tool_button[TOOL_UNGROUP_SELECTED] = memnew(Button);
|
||||||
hbc_menu->add_child(tool_button[TOOL_UNGROUP_SELECTED]);
|
hbc_menu->add_child(tool_button[TOOL_UNGROUP_SELECTED]);
|
||||||
|
@ -6799,6 +6805,8 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
|
||||||
button_binds.write[0] = MENU_UNGROUP_SELECTED;
|
button_binds.write[0] = MENU_UNGROUP_SELECTED;
|
||||||
tool_button[TOOL_UNGROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
tool_button[TOOL_UNGROUP_SELECTED]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
|
||||||
tool_button[TOOL_UNGROUP_SELECTED]->set_tooltip(TTR("Restores the object's children's ability to be selected."));
|
tool_button[TOOL_UNGROUP_SELECTED]->set_tooltip(TTR("Restores the object's children's ability to be selected."));
|
||||||
|
// Define the shortcut globally (without a context) so that it works if the Scene tree dock is currently focused.
|
||||||
|
tool_button[TOOL_UNGROUP_SELECTED]->set_shortcut(ED_SHORTCUT("editor/ungroup_selected_nodes", TTR("Ungroup Selected Node(s)"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_G));
|
||||||
|
|
||||||
hbc_menu->add_child(memnew(VSeparator));
|
hbc_menu->add_child(memnew(VSeparator));
|
||||||
|
|
||||||
|
@ -6917,7 +6925,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
|
||||||
|
|
||||||
p->add_separator();
|
p->add_separator();
|
||||||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_origin", TTR("View Origin")), MENU_VIEW_ORIGIN);
|
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_origin", TTR("View Origin")), MENU_VIEW_ORIGIN);
|
||||||
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_grid", TTR("View Grid"), KEY_MASK_CMD + KEY_G), MENU_VIEW_GRID);
|
p->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_grid", TTR("View Grid"), KEY_NUMBERSIGN), MENU_VIEW_GRID);
|
||||||
|
|
||||||
p->add_separator();
|
p->add_separator();
|
||||||
p->add_shortcut(ED_SHORTCUT("spatial_editor/settings", TTR("Settings...")), MENU_VIEW_CAMERA_SETTINGS);
|
p->add_shortcut(ED_SHORTCUT("spatial_editor/settings", TTR("Settings...")), MENU_VIEW_CAMERA_SETTINGS);
|
||||||
|
|
Loading…
Reference in New Issue