editeng/source/editeng/impedit2.cxx |   19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

New commits:
commit ea933cc3b6d72b1d7ff09c9e85286f4d3343f335
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Thu Jan 20 17:11:32 2022 +0100
Commit:     Eike Rathke <er...@redhat.com>
CommitDate: Fri Jan 21 02:03:17 2022 +0100

    Related: tdf#139974 Keep HYPHEN-MINUS with a number to the right
    
    Force line break
    
    1234567890
    -1234567890
    
    instead of
    
    1234567890-
    1234567890
    
    but still
    
    abcdef-
    abcdef
    
    Change-Id: I0b427b33b05eea12d13aad148c604385ffe000d2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128691
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins

diff --git a/editeng/source/editeng/impedit2.cxx 
b/editeng/source/editeng/impedit2.cxx
index 171aa676f009..36747c1c8666 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -2756,11 +2756,24 @@ EditPaM ImpEditEngine::ImpInsertText(const 
EditSelection& aCurSel, const OUStrin
                             {
                                 const sal_Unicode c = aLine[nPos];
                                 // Ignore NO-BREAK spaces, NBSP, NNBSP, ZWNBSP.
-                                if (c != 0x00A0 && c != 0x202F && c != 0xFEFF)
+                                if (c == 0x00A0 || c == 0x202F || c == 0xFEFF)
+                                    break;
+                                if (c == '-' && nPos + 1 < nMaxNewChars)
                                 {
-                                    nMaxNewChars = nPos + 1;    // line break 
after
-                                    nPos = 0;   // will break loop
+                                    // Keep HYPHEN-MINUS with a number to the 
right.
+                                    const sal_Int16 t = 
unicode::getUnicodeType(aLine[nPos+1]);
+                                    if (    t == 
css::i18n::UnicodeType::DECIMAL_DIGIT_NUMBER ||
+                                            t == 
css::i18n::UnicodeType::LETTER_NUMBER ||
+                                            t == 
css::i18n::UnicodeType::OTHER_NUMBER)
+                                        nMaxNewChars = nPos;        // line 
break before
+                                    else
+                                        nMaxNewChars = nPos + 1;    // line 
break after
                                 }
+                                else
+                                {
+                                    nMaxNewChars = nPos + 1;        // line 
break after
+                                }
+                                nPos = 0;   // will break loop
                             }
                     }
                 }

Reply via email to