diff --git a/src/Autoload/Tools.gd b/src/Autoload/Tools.gd index 8efe91b73..b236f3d7a 100644 --- a/src/Autoload/Tools.gd +++ b/src/Autoload/Tools.gd @@ -397,8 +397,10 @@ func attempt_config_share(from_idx: int, config: Dictionary = {}) -> void: target_slot.tool_node.has_method("set_config") and target_slot.tool_node.has_method("update_config") ): + target_slot.tool_node.set("is_syncing", true) target_slot.tool_node.set_config(config) target_slot.tool_node.update_config() + target_slot.tool_node.set("is_syncing", false) func reset_options() -> void: diff --git a/src/Tools/BaseTool.gd b/src/Tools/BaseTool.gd index 471e71709..7d1d38fd3 100644 --- a/src/Tools/BaseTool.gd +++ b/src/Tools/BaseTool.gd @@ -2,6 +2,7 @@ class_name BaseTool extends VBoxContainer var is_moving := false +var is_syncing := false var kname: String var tool_slot: Tools.Slot = null var cursor_text := "" @@ -34,7 +35,8 @@ func _ready() -> void: func save_config() -> void: var config := get_config() Global.config_cache.set_value(tool_slot.kname, kname, config) - Tools.config_changed.emit(tool_slot.button, config) + if not is_syncing: # If the tool isn't busy syncing with another tool. + Tools.config_changed.emit(tool_slot.button, config) func load_config() -> void: