diff --git a/common/test/keyboards/baseline/baseline.kpj b/common/test/keyboards/baseline/baseline.kpj
index b98e7519fd..3371c33490 100644
--- a/common/test/keyboards/baseline/baseline.kpj
+++ b/common/test/keyboards/baseline/baseline.kpj
@@ -323,5 +323,12 @@
1.0
.kmn
+
+ id_k_049___context_and_invalidate
+ k_049___context_and_invalidate.kmn
+ k_049___context_and_invalidate.kmn
+ 1.0
+ .kmn
+
diff --git a/common/test/keyboards/baseline/k_049___context_and_invalidate.kmn b/common/test/keyboards/baseline/k_049___context_and_invalidate.kmn
new file mode 100644
index 0000000000..bb30514594
--- /dev/null
+++ b/common/test/keyboards/baseline/k_049___context_and_invalidate.kmn
@@ -0,0 +1,16 @@
+store(&NAME) '049 - context and invalidate'
+c Description: Tests that core context is cleared when invalidated See #10182.
+c keys: [K_A][K_B][K_ENTER][K_C]
+c expected: c
+c context:
+
+store(&version) '10.0'
+
+begin Unicode > use(Main)
+
+group(Main) using keys
+
+c Test if context was not invalidated by [K_ENTER] context will be 'abd'
+
+'a' 'b' + [K_C] > 'abd'
+
diff --git a/common/test/keyboards/baseline/k_049___context_and_invalidate.kmx b/common/test/keyboards/baseline/k_049___context_and_invalidate.kmx
new file mode 100644
index 0000000000..64efeb72f2
Binary files /dev/null and b/common/test/keyboards/baseline/k_049___context_and_invalidate.kmx differ
diff --git a/core/src/kmx/kmx_processor.cpp b/core/src/kmx/kmx_processor.cpp
index 6790d5b46d..1fa0734e07 100644
--- a/core/src/kmx/kmx_processor.cpp
+++ b/core/src/kmx/kmx_processor.cpp
@@ -247,6 +247,7 @@ kmx_processor::internal_process_queued_actions(km_core_state *state) {
}
break;
case QIT_INVALIDATECONTEXT:
+ state->context().clear();
state->actions().push_invalidate_context();
break;
default:
diff --git a/core/tests/unit/kmx/kmx.cpp b/core/tests/unit/kmx/kmx.cpp
index cf1105d3f3..e1c1845739 100644
--- a/core/tests/unit/kmx/kmx.cpp
+++ b/core/tests/unit/kmx/kmx.cpp
@@ -147,6 +147,8 @@ apply_action(
}
} break;
case KM_CORE_IT_INVALIDATE_CONTEXT:
+ context.clear();
+ text_store.clear();
std::cout << "action: context invalidated (markers cleared)" << std::endl;
break;
case KM_CORE_IT_EMIT_KEYSTROKE:
diff --git a/core/tests/unit/kmx/meson.build b/core/tests/unit/kmx/meson.build
index a2e43ff1d4..289b59b7b6 100644
--- a/core/tests/unit/kmx/meson.build
+++ b/core/tests/unit/kmx/meson.build
@@ -79,7 +79,8 @@ tests = [
'k_045___deadkey_and_context',
'k_046___deadkey_and_contextex',
'k_047___caps_always_off_initially_on',
- 'k_048___modifier_keys_keep_context'
+ 'k_048___modifier_keys_keep_context',
+ 'k_049___context_and_invalidate'
]
node = find_program('node', required: true)