1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-26 15:46:23 +00:00

Merge pull request #102317 from ryevdokimov/gizmo-commit-handle-spam-fix

Do not commit gizmo handles if no changes were made
This commit is contained in:
Thaddeus Crews
2025-07-09 11:33:15 -05:00
5 changed files with 15 additions and 1 deletions

View File

@@ -54,6 +54,10 @@ bool SoftBody3DGizmoPlugin::is_selectable_when_hidden() const {
return true;
}
bool SoftBody3DGizmoPlugin::can_commit_handle_on_click() const {
return true;
}
void SoftBody3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
SoftBody3D *soft_body = Object::cast_to<SoftBody3D>(p_gizmo->get_node_3d());

View File

@@ -40,6 +40,7 @@ public:
String get_gizmo_name() const override;
int get_priority() const override;
bool is_selectable_when_hidden() const override;
bool can_commit_handle_on_click() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id, bool p_secondary) const override;

View File

@@ -1138,6 +1138,10 @@ bool EditorNode3DGizmoPlugin::is_selectable_when_hidden() const {
return ret;
}
bool EditorNode3DGizmoPlugin::can_commit_handle_on_click() const {
return false;
}
void EditorNode3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
GDVIRTUAL_CALL(_redraw, p_gizmo);
}

View File

@@ -197,6 +197,7 @@ public:
virtual int get_priority() const;
virtual bool can_be_hidden() const;
virtual bool is_selectable_when_hidden() const;
virtual bool can_commit_handle_on_click() const;
virtual void redraw(EditorNode3DGizmo *p_gizmo);
virtual bool is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_id, bool p_secondary) const;

View File

@@ -2029,7 +2029,11 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
if (_edit.gizmo.is_valid()) {
// Certain gizmo plugins should be able to commit handles without dragging them.
if (_edit.original_mouse_pos != _edit.mouse_pos || _edit.gizmo->get_plugin()->can_commit_handle_on_click()) {
_edit.gizmo->commit_handle(_edit.gizmo_handle, _edit.gizmo_handle_secondary, _edit.gizmo_initial_value, false);
}
spatial_editor->get_single_selected_node()->update_gizmos();
_edit.gizmo = Ref<EditorNode3DGizmo>();
break;