From afc90daa86af5ef7ac8bc257c59beeaa68ad7f71 Mon Sep 17 00:00:00 2001 From: rmbh-odoo Date: Mon, 24 Nov 2025 13:03:26 +0000 Subject: [PATCH] [FIX] composer: keep edition mode inactive on cursor selection change Before this commit: - Changing the composer cursor selection triggered a switch to edition mode, even when the composer was inactive. - This caused unwanted activation of editing while simply moving the selection. After this commit: - Selection changes no longer modify the edition mode when the composer is inactive, ensuring the edition state remains stable. Task: 5354541 X-original-commit: 0da6c8d85e66386512d26d2c987116849c47cd9a --- .../composer/composer/abstract_composer_store.ts | 2 +- tests/composer/composer_integration_component.test.ts | 10 ++++++++++ tests/composer/composer_store.test.ts | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/composer/composer/abstract_composer_store.ts b/src/components/composer/composer/abstract_composer_store.ts index da390f6541..fef7dc4e97 100644 --- a/src/components/composer/composer/abstract_composer_store.ts +++ b/src/components/composer/composer/abstract_composer_store.ts @@ -154,7 +154,7 @@ export abstract class AbstractComposerStore extends SpreadsheetStore { } this.selectionStart = start; this.selectionEnd = end; - this.editionMode = "editing"; + this.stopComposerRangeSelection(); this.computeFormulaCursorContext(); this.computeParenthesisRelatedToCursor(); this.updateAutoCompleteProvider(); diff --git a/tests/composer/composer_integration_component.test.ts b/tests/composer/composer_integration_component.test.ts index 63717f9ab7..9d98409b7a 100644 --- a/tests/composer/composer_integration_component.test.ts +++ b/tests/composer/composer_integration_component.test.ts @@ -33,6 +33,7 @@ import { getElComputedStyle, gridMouseEvent, keyDown, + keyUp, rightClickCell, selectColumnByClicking, simulateClick, @@ -361,6 +362,15 @@ describe("Composer interactions", () => { expect(composerStore.editionMode).toBe("inactive"); }); + test("should switch topbar composer from editing to inactive when pressing Escape on cell A1 containing '=A2'", async () => { + setCellContent(model, "A1", "=A2"); + await click(fixture, ".o-spreadsheet-topbar .o-composer"); + expect(composerStore.editionMode).toBe("editing"); + keyDown({ key: "Escape" }); + keyUp({ key: "Escape" }); + expect(composerStore.editionMode).toBe("inactive"); + }); + test("ArrowKeys will move to neighbour cell, if not in contentFocus mode (left/right)", async () => { let composerEl: Element; composerEl = await startComposition("a"); diff --git a/tests/composer/composer_store.test.ts b/tests/composer/composer_store.test.ts index 33f07ad869..6b71af94ac 100644 --- a/tests/composer/composer_store.test.ts +++ b/tests/composer/composer_store.test.ts @@ -125,6 +125,12 @@ describe("edition", () => { expect(composerStore.editionMode).toBe("inactive"); }); + test("should keep edition mode inactive when selection changes while composer is inactive", () => { + expect(composerStore.editionMode).toBe("inactive"); + composerStore.changeComposerCursorSelection(0, 0); + expect(composerStore.editionMode).toBe("inactive"); + }); + test("should switch to editing mode when composer cursor selection changes", () => { composerStore.startEdition("=sum("); expect(composerStore.editionMode).toBe("selecting");