From 59b1836b856bc1d1fbc435d4382949c6bb4085e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojte=CC=8Cch=20Struha=CC=81r?= Date: Wed, 21 May 2025 17:16:36 +0200 Subject: [PATCH] Change snap settings to not use LineEdits Change snap settings to use SpinBox Change snap settings to use EditorSpinSlider Update editor/scene/3d/node_3d_editor_plugin.cpp Co-authored-by: Hugo Locurcio Use suffixes in snapping fields Use meters suffix for translation snap setting Co-authored-by: Hugo Locurcio --- editor/scene/3d/node_3d_editor_plugin.cpp | 49 +++++++++++++---------- editor/scene/3d/node_3d_editor_plugin.h | 6 +-- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/editor/scene/3d/node_3d_editor_plugin.cpp b/editor/scene/3d/node_3d_editor_plugin.cpp index 959add1db26..36bb7d3ed5b 100644 --- a/editor/scene/3d/node_3d_editor_plugin.cpp +++ b/editor/scene/3d/node_3d_editor_plugin.cpp @@ -7050,9 +7050,9 @@ void Node3DEditor::edit(Node3D *p_spatial) { } void Node3DEditor::_snap_changed() { - snap_translate_value = snap_translate->get_text().to_float(); - snap_rotate_value = snap_rotate->get_text().to_float(); - snap_scale_value = snap_scale->get_text().to_float(); + snap_translate_value = snap_translate->get_value(); + snap_rotate_value = snap_rotate->get_value(); + snap_scale_value = snap_scale->get_value(); EditorSettings::get_singleton()->set_project_metadata("3d_editor", "snap_translate_value", snap_translate_value); EditorSettings::get_singleton()->set_project_metadata("3d_editor", "snap_rotate_value", snap_rotate_value); @@ -7060,12 +7060,9 @@ void Node3DEditor::_snap_changed() { } void Node3DEditor::_snap_update() { - double snap = EDITOR_GET("interface/inspector/default_float_step"); - int snap_step_decimals = Math::range_step_decimals(snap); - - snap_translate->set_text(String::num(snap_translate_value, snap_step_decimals)); - snap_rotate->set_text(String::num(snap_rotate_value, snap_step_decimals)); - snap_scale->set_text(String::num(snap_scale_value, snap_step_decimals)); + snap_translate->set_value(snap_translate_value); + snap_rotate->set_value(snap_rotate_value); + snap_scale->set_value(snap_scale_value); } void Node3DEditor::_xform_dialog_action() { @@ -9773,20 +9770,30 @@ Node3DEditor::Node3DEditor() { VBoxContainer *snap_dialog_vbc = memnew(VBoxContainer); snap_dialog->add_child(snap_dialog_vbc); - snap_translate = memnew(LineEdit); - snap_translate->set_select_all_on_focus(true); - snap_translate->set_accessibility_name(TTRC("Translate Snap:")); - snap_dialog_vbc->add_margin_child(TTRC("Translate Snap:"), snap_translate); + snap_translate = memnew(EditorSpinSlider); + snap_translate->set_min(0.0); + snap_translate->set_step(0.001); + snap_translate->set_max(10.0); + snap_translate->set_suffix("m"); + snap_translate->set_allow_greater(true); + snap_translate->set_accessibility_name(TTRC("Translate Snap")); + snap_dialog_vbc->add_margin_child(TTR("Translate Snap:"), snap_translate); - snap_rotate = memnew(LineEdit); - snap_rotate->set_select_all_on_focus(true); - snap_rotate->set_accessibility_name(TTRC("Rotate Snap (deg.):")); - snap_dialog_vbc->add_margin_child(TTRC("Rotate Snap (deg.):"), snap_rotate); + snap_rotate = memnew(EditorSpinSlider); + snap_rotate->set_min(0.0); + snap_rotate->set_step(0.1); + snap_rotate->set_max(360); + snap_rotate->set_suffix(U"°"); + snap_rotate->set_accessibility_name(TTRC("Rotate Snap")); + snap_dialog_vbc->add_margin_child(TTR("Rotate Snap:"), snap_rotate); - snap_scale = memnew(LineEdit); - snap_scale->set_select_all_on_focus(true); - snap_scale->set_accessibility_name(TTRC("Scale Snap (%):")); - snap_dialog_vbc->add_margin_child(TTRC("Scale Snap (%):"), snap_scale); + snap_scale = memnew(EditorSpinSlider); + snap_scale->set_min(0.0); + snap_scale->set_step(1.0); + snap_scale->set_max(100); + snap_scale->set_suffix("%"); + snap_scale->set_accessibility_name(TTRC("Scale Snap")); + snap_dialog_vbc->add_margin_child(TTR("Scale Snap:"), snap_scale); /* SETTINGS DIALOG */ diff --git a/editor/scene/3d/node_3d_editor_plugin.h b/editor/scene/3d/node_3d_editor_plugin.h index 22322a12bff..7baa35b8687 100644 --- a/editor/scene/3d/node_3d_editor_plugin.h +++ b/editor/scene/3d/node_3d_editor_plugin.h @@ -788,9 +788,9 @@ private: bool snap_enabled; bool snap_key_enabled; - LineEdit *snap_translate = nullptr; - LineEdit *snap_rotate = nullptr; - LineEdit *snap_scale = nullptr; + EditorSpinSlider *snap_translate = nullptr; + EditorSpinSlider *snap_rotate = nullptr; + EditorSpinSlider *snap_scale = nullptr; LineEdit *xform_translate[3]; LineEdit *xform_rotate[3];