From ac4eaec777bc1b0c06688523b848d31efdd115a8 Mon Sep 17 00:00:00 2001 From: Max Chateau Date: Sat, 18 Oct 2025 22:57:26 +0200 Subject: [PATCH] Notify mapping window when changes occurs Co-Authored-By: iTrooz Co-Authored-By: Max Chateau Co-Authored-By: Damien R. --- Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp | 3 +++ Source/Core/DolphinQt/Config/Mapping/IOWindow.h | 1 + Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp | 6 ++++++ Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp | 1 + Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp | 5 +++++ Source/Core/DolphinQt/Config/Mapping/MappingWindow.h | 1 + 6 files changed, 17 insertions(+) diff --git a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp index 53da173bba..4d1634bc15 100644 --- a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp @@ -770,6 +770,9 @@ void IOWindow::UpdateExpression(std::string new_expression, UpdateMode mode) const auto status = m_reference->GetParseStatus(); m_controller->UpdateSingleControlReference(g_controller_interface, m_reference); + // Emit signal that this IOWindow's expression changed. + emit ExpressionChanged(QString::fromStdString(m_reference->GetExpression())); + // This is the only place where we need to update the user variables. Keep the first 4 items. while (m_variables_combo->count() > 4) { diff --git a/Source/Core/DolphinQt/Config/Mapping/IOWindow.h b/Source/Core/DolphinQt/Config/Mapping/IOWindow.h index 8888843447..c9feb83c65 100644 --- a/Source/Core/DolphinQt/Config/Mapping/IOWindow.h +++ b/Source/Core/DolphinQt/Config/Mapping/IOWindow.h @@ -71,6 +71,7 @@ public: signals: void DetectInputComplete(); void TestOutputComplete(); + void ExpressionChanged(const QString& expression); private: std::shared_ptr GetSelectedDevice() const; diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp index 24e7be9bf8..2a721dc222 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingButton.cpp @@ -92,6 +92,12 @@ void MappingButton::AdvancedPressed() IOWindow io(m_mapping_window, m_mapping_window->GetController(), m_reference, m_reference->IsInput() ? IOWindow::Type::Input : IOWindow::Type::Output); + + // Connect to IOWindow's ExpressionChanged signal + connect(&io, &IOWindow::ExpressionChanged, m_mapping_window, [this](const QString& expr) { + m_mapping_window->ExpressionChanged(1); + }); + io.exec(); ConfigChanged(); diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp index 7e7d2b9f42..dc615718b5 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingCommon.cpp @@ -133,6 +133,7 @@ public: m_parent->GetController()->UpdateSingleControlReference(g_controller_interface, control_reference); m_parent->GetController()->GetConfig()->GenerateControllerTextures(); + m_parent->ExpressionChanged(0); } void UpdateInputDetectionStartTimer() diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp index a82ae8f67e..49d957f33c 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp @@ -616,3 +616,8 @@ void MappingWindow::ActivateExtensionTab() { m_tab_widget->setCurrentIndex(3); } + +void MappingWindow::ExpressionChanged(int source) +{ + printf("ExpressionChanged(%d)\n", source); +} \ No newline at end of file diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h index cfd1474782..559b922241 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.h @@ -56,6 +56,7 @@ public: bool IsIterativeMappingEnabled() const; void ShowExtensionMotionTabs(bool show); void ActivateExtensionTab(); + void ExpressionChanged(int source); signals: // Emitted when config has changed so widgets can update to reflect the change.