vcl/source/text/mnemonic.cxx |   23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

New commits:
commit cde2bf606960b7bf0945b394a70e0e5c1a947ec0
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Fri Mar 1 14:46:21 2024 +0600
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sat Mar 2 04:39:06 2024 +0100

    Simplify removeMnemonicFromString
    
    Change-Id: I38ed29cb9c6296c364330c667fccf573d3d5cd5f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164181
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/vcl/source/text/mnemonic.cxx b/vcl/source/text/mnemonic.cxx
index 7336032b8d12..9a63c2e7d785 100644
--- a/vcl/source/text/mnemonic.cxx
+++ b/vcl/source/text/mnemonic.cxx
@@ -18,33 +18,22 @@ OUString removeMnemonicFromString(OUString const& rStr)
 OUString removeMnemonicFromString(OUString const& rStr, sal_Int32& 
rMnemonicPos)
 {
     OUString aStr = rStr;
-    sal_Int32 nLen = aStr.getLength();
-    sal_Int32 i = 0;
+    sal_Int32 nLen = aStr.getLength() - 1; // Don't remove trailing ~
 
     rMnemonicPos = -1;
-    while (i < nLen)
+    for (sal_Int32 i = 0; i < nLen; ++i)
     {
         if (aStr[i] == '~')
         {
-            if (nLen <= i + 1)
-                break;
-
-            if (aStr[i + 1] != '~')
+            aStr = aStr.replaceAt(i, 1, u"");
+            nLen--;
+            if (aStr[i] != '~')
             {
                 if (rMnemonicPos == -1)
                     rMnemonicPos = i;
-                aStr = aStr.replaceAt(i, 1, u"");
-                nLen--;
-            }
-            else
-            {
-                aStr = aStr.replaceAt(i, 1, u"");
-                nLen--;
-                i++;
             }
+            // else skip the escaped second ~
         }
-        else
-            i++;
     }
 
     return aStr;

Reply via email to