From c0496f3a648d8dd06bcc240d2c8f8799c129105a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 6 Feb 2019 16:17:46 +0300 Subject: [PATCH] IDEA-206761 ui: fix Presentation copying A better fix for IDEA-85566, as `getTextWithMnemonic()` now properly escapes returned value. --- .../openapi/actionSystem/Presentation.java | 2 +- .../actionSystem/PresentationTest.java | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/Presentation.java b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/Presentation.java index 3aa9793e9eb4..1959a15bd1b0 100644 --- a/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/Presentation.java +++ b/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/Presentation.java @@ -354,7 +354,7 @@ public final class Presentation implements Cloneable { if (!Objects.equals(myText, presentation.myText) || myDisplayedMnemonicIndex != presentation.myDisplayedMnemonicIndex || myMnemonic != presentation.myMnemonic) { - setText(presentation.getTextWithMnemonic(), presentation.myDisplayedMnemonicIndex > -1); + setText(presentation.getTextWithMnemonic()); } setDescription(presentation.getDescription()); setIcon(presentation.getIcon()); diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/actionSystem/PresentationTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/actionSystem/PresentationTest.java index 573414b0b2ce..9f6e70b75f3e 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/actionSystem/PresentationTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/actionSystem/PresentationTest.java @@ -46,7 +46,7 @@ public class PresentationTest extends LightPlatformTestCase { } } - public void testPresentationSetText() { + public void testSetTextWithUnderscores() { for (Data testCase : data) { Presentation p = new Presentation(); p.setText(testCase.inputTextsUnderscore); @@ -55,7 +55,9 @@ public class PresentationTest extends LightPlatformTestCase { assertEquals(testCase.index, p.getDisplayedMnemonicIndex()); assertEquals(testCase.fullMenuText, p.getTextWithMnemonic()); } + } + public void testSetTextWithAmpersands() { for (Data testCase : data) { Presentation p = new Presentation(); p.setText(testCase.inputTextsAmpersand); @@ -66,7 +68,9 @@ public class PresentationTest extends LightPlatformTestCase { assertTrue(testCase.menuText.length() > p.getDisplayedMnemonicIndex()); } + } + public void testGetTextWithMnemonic() { for (Data testCase : data) { Presentation p1 = new Presentation(); p1.setText(testCase.inputTextsUnderscore); @@ -78,7 +82,9 @@ public class PresentationTest extends LightPlatformTestCase { assertEquals(p1.getMnemonic(), p2.getMnemonic()); assertEquals(p1.getDisplayedMnemonicIndex(), p2.getDisplayedMnemonicIndex()); } + } + public void testMnemonicCharacters() { for (Data testCase : data) { Presentation p1 = new Presentation(); p1.setText(testCase.inputTextsAmpersand); @@ -91,6 +97,20 @@ public class PresentationTest extends LightPlatformTestCase { } } + public void testPresentationCopying() { + for (Data testCase : data) { + Presentation p1 = new Presentation(); + p1.setText(testCase.inputTextsUnderscore); + + Presentation p2 = new Presentation(); + p2.copyFrom(p1); + + assertEquals(p1.getText(), p2.getText()); + assertEquals(p1.getMnemonic(), p2.getMnemonic()); + assertEquals(p1.getDisplayedMnemonicIndex(), p2.getDisplayedMnemonicIndex()); + } + } + @Override public void setUp() throws Exception { super.setUp();