diff --git a/source/gui/scripting/ScriptFunctions.cpp b/source/gui/scripting/ScriptFunctions.cpp index 739e31e83a..b417e95c1a 100644 --- a/source/gui/scripting/ScriptFunctions.cpp +++ b/source/gui/scripting/ScriptFunctions.cpp @@ -86,10 +86,12 @@ namespace { // Note that the initData argument may only contain clonable data. // Functions aren't supported for example! // TODO: Use LOGERROR to print a friendly error message when the requirements aren't met instead of failing with debug_warn when cloning. -void PushGuiPage(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), std::wstring name, CScriptVal initData) +void PushGuiPage(ScriptInterface::CxPrivate* pCxPrivate, std::wstring name, CScriptVal initData) { - // TODO: we currently use the ScriptInterface of g_GUI. Check the comment in CGUIManager::SwitchPage for a detailed explanation. - g_GUI->PushPage(name, g_GUI->GetScriptInterface()->WriteStructuredClone(initData.get())); + // TODO: Check the comment in CGUIManager::SwitchPage for a detailed explanation of this hack. + CScriptVal cloneSaveInitData; + cloneSaveInitData = g_GUI->GetScriptInterface()->CloneValueFromOtherContext(*(pCxPrivate->pScriptInterface), initData.get()); + g_GUI->PushPage(name, g_GUI->GetScriptInterface()->WriteStructuredClone(cloneSaveInitData.get())); } void SwitchGuiPage(ScriptInterface::CxPrivate* pCxPrivate, std::wstring name, CScriptVal initData)