From 6a843087973eeb42b4e1955dbf936bd64ee24443 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Tue, 18 Feb 2025 15:49:26 +0100
Subject: [PATCH] [keyboard] Preserve original settings for cancel()

---
 src/modules/keyboard/Config.cpp | 15 +++++++++++++++
 src/modules/keyboard/Config.h   |  1 +
 2 files changed, 16 insertions(+)

diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp
index 66b0c36e81..47c81a347b 100644
--- a/src/modules/keyboard/Config.cpp
+++ b/src/modules/keyboard/Config.cpp
@@ -571,11 +571,26 @@ Config::detectCurrentKeyboardLayout()
             break;
         }
     }
+    // The models have updated the m_current settings, copy them
+    m_original = m_current;
 }
 
 void
 Config::cancel()
 {
+    const auto extra = getAdditionalLayoutInfo( m_original.selectedLayout );
+    if ( m_configureXkb )
+    {
+        applyXkb( m_original, m_additionalLayoutInfo );
+    }
+    if ( m_configureLocale1 )
+    {
+        applyLocale1( m_original, m_additionalLayoutInfo );
+    }
+    if ( m_configureKWin )
+    {
+        applyKWin( m_original, m_additionalLayoutInfo );
+    }
 }
 
 QString
diff --git a/src/modules/keyboard/Config.h b/src/modules/keyboard/Config.h
index dd7e5adb92..d48c734bea 100644
--- a/src/modules/keyboard/Config.h
+++ b/src/modules/keyboard/Config.h
@@ -107,6 +107,7 @@ private:
     KeyboardGroupsSwitchersModel* m_KeyboardGroupSwitcherModel;
 
     BasicLayoutInfo m_current;
+    BasicLayoutInfo m_original;
 
     // Layout (and corresponding info) added if current one doesn't support ASCII (e.g. Russian or Japanese)
     AdditionalLayoutInfo m_additionalLayoutInfo;
-- 
GitLab