[PATCH] fix fdo#60533, Set TEXT_LAYOUT_BIDI_STRONG flag.

navin patidar (via Code Review) gerrit at gerrit.libreoffice.org
Sat Feb 9 22:44:33 PST 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2076

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/76/2076/1

fix fdo#60533, Set TEXT_LAYOUT_BIDI_STRONG flag.

Stop ImplLayoutArgs::ImplLayoutArgs() to perform
ubidi algo on text by setting TEXT_LAYOUT_BIDI_STRONG flag.

Change-Id: I7222517c1db6649eef0c0d9c11cbbbed1fc6bb04
---
M drawinglayer/source/processor2d/vclprocessor2d.cxx
M editeng/source/editeng/impedit3.cxx
2 files changed, 7 insertions(+), 15 deletions(-)



diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx
index aeb83c2..adde6aa 100644
--- a/drawinglayer/source/processor2d/vclprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx
@@ -268,8 +268,8 @@
 
                     if(rTextCandidate.getFontAttribute().getRTL())
                     {
-                        sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED|TEXT_LAYOUT_BIDI_STRONG));
-                        nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT;
+                        sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED));
+                        nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_BIDI_STRONG | TEXT_LAYOUT_TEXTORIGIN_LEFT;
                         mpOutputDevice->SetLayoutMode(nRTLLayoutMode);
                     }
 
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 8108770..4b2155c 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -4274,18 +4274,13 @@
 
 void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, sal_uInt16 nIndex )
 {
-    sal_Bool bCTL = sal_False;
     sal_Bool bR2L = sal_False;
     if ( nIndex == 0xFFFF )
     {
-        bCTL = HasScriptType( nPara, i18n::ScriptType::COMPLEX );
         bR2L = IsRightToLeft( nPara );
     }
     else
     {
-        ContentNode* pNode = GetEditDoc().GetObject( nPara );
-        short nScriptType = GetScriptType( EditPaM( pNode, nIndex+1 ) );
-        bCTL = nScriptType == i18n::ScriptType::COMPLEX;
         // this change was discussed in issue 37190
         bR2L = GetRightToLeft( nPara, nIndex + 1) % 2 ? sal_True : sal_False;
         // it also works for issue 55927
@@ -4294,21 +4289,18 @@
     sal_uLong nLayoutMode = pOutDev->GetLayoutMode();
 
     // We always use the left postion for DrawText()
-    nLayoutMode &= ~(TEXT_LAYOUT_BIDI_RTL);
+    // Let VCL do CTL checking
+    nLayoutMode &= ~(TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_COMPLEX_DISABLED);
 
-    if ( !bCTL && !bR2L)
+    if ( !bR2L )
     {
         // No CTL/Bidi checking neccessary
         nLayoutMode |= ( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG );
     }
     else
     {
-        // CTL/Bidi checking neccessary
-        // Don't use BIDI_STRONG, VCL must do some checks.
-        nLayoutMode &= ~( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG );
-
-        if ( bR2L )
-            nLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT;
+        //Use BIDI_STRONG, Stop VCL to perform ubidi algo on text.
+        nLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_TEXTORIGIN_LEFT | TEXT_LAYOUT_BIDI_STRONG;
     }
 
     pOutDev->SetLayoutMode( nLayoutMode );

-- 
To view, visit https://gerrit.libreoffice.org/2076
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7222517c1db6649eef0c0d9c11cbbbed1fc6bb04
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: navin patidar <patidar at kacst.edu.sa>


More information about the LibreOffice mailing list