From 5fe1d122845eb858e2f89d347a16f241001f99b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tur=C3=A1nszki=20J=C3=A1nos?= Date: Mon, 4 Aug 2025 09:38:30 +0200 Subject: [PATCH] metadata window fix: lambda reference got stale while erasing items, causing incorrect property removals --- Editor/MetadataWindow.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Editor/MetadataWindow.cpp b/Editor/MetadataWindow.cpp index b000f94f2..bd0974b34 100644 --- a/Editor/MetadataWindow.cpp +++ b/Editor/MetadataWindow.cpp @@ -172,7 +172,7 @@ void MetadataWindow::RefreshEntries() Entry& entry = entries.emplace_back(); entry.name.Create(""); entry.name.SetText(name); - entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->bool_values.has(name)) return; auto value = metadata->bool_values.get(name); @@ -185,7 +185,7 @@ void MetadataWindow::RefreshEntries() entry.check.Create(""); entry.check.SetText(" = (bool) "); entry.check.SetCheck(metadata->bool_values.get(name)); - entry.check.OnClick(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.check.OnClick(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->bool_values.has(name)) return; metadata->bool_values.set(name, args.bValue); @@ -195,7 +195,7 @@ void MetadataWindow::RefreshEntries() entry.remove.Create(""); entry.remove.SetText("X"); entry.remove.SetSize(XMFLOAT2(entry.remove.GetSize().y, entry.remove.GetSize().y)); - entry.remove.OnClick(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.remove.OnClick(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->bool_values.has(name)) return; metadata->bool_values.erase(name); @@ -245,7 +245,7 @@ void MetadataWindow::RefreshEntries() Entry& entry = entries.emplace_back(); entry.name.Create(""); entry.name.SetText(name); - entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->float_values.has(name)) return; auto value = metadata->float_values.get(name); @@ -259,7 +259,7 @@ void MetadataWindow::RefreshEntries() entry.value.SetDescription(" = (float) "); entry.value.SetSize(XMFLOAT2(60, entry.value.GetSize().y)); entry.value.SetValue(metadata->float_values.get(name)); - entry.value.OnInputAccepted(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.value.OnInputAccepted(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->float_values.has(name)) return; metadata->float_values.set(name, args.fValue); @@ -269,7 +269,7 @@ void MetadataWindow::RefreshEntries() entry.remove.Create(""); entry.remove.SetText("X"); entry.remove.SetSize(XMFLOAT2(entry.remove.GetSize().y, entry.remove.GetSize().y)); - entry.remove.OnClick(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.remove.OnClick(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->float_values.has(name)) return; metadata->float_values.erase(name); @@ -282,7 +282,7 @@ void MetadataWindow::RefreshEntries() Entry& entry = entries.emplace_back(); entry.name.Create(""); entry.name.SetText(name); - entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.name.OnInputAccepted(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->string_values.has(name)) return; auto value = metadata->string_values.get(name); @@ -296,7 +296,7 @@ void MetadataWindow::RefreshEntries() entry.value.SetDescription(" = (string) "); entry.value.SetSize(XMFLOAT2(120, entry.value.GetSize().y)); entry.value.SetValue(metadata->string_values.get(name)); - entry.value.OnInputAccepted(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.value.OnInputAccepted(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->string_values.has(name)) return; metadata->string_values.set(name, args.sValue); @@ -306,7 +306,7 @@ void MetadataWindow::RefreshEntries() entry.remove.Create(""); entry.remove.SetText("X"); entry.remove.SetSize(XMFLOAT2(entry.remove.GetSize().y, entry.remove.GetSize().y)); - entry.remove.OnClick(forEachSelectedWithRefresh(name, [&name] (auto metadata, auto args) { + entry.remove.OnClick(forEachSelectedWithRefresh(name, [=] (auto metadata, auto args) { if (!metadata->string_values.has(name)) return; metadata->string_values.erase(name);