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 <hugo.locurcio@hugo.pro>

Use suffixes in snapping fields

Use meters suffix for translation snap setting

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
Vojtěch Struhár 2025-05-21 17:16:36 +02:00
parent d705613db3
commit 59b1836b85
2 changed files with 31 additions and 24 deletions

View file

@ -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 */