Kaydet (Commit) 6708ad7f authored tarafından navin patidar's avatar navin patidar Kaydeden (comit) Ahmad Harthi

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
Reviewed-on: https://gerrit.libreoffice.org/2076Reviewed-by: 's avatarAhmad Harthi <aalharthi@kacst.edu.sa>
Tested-by: 's avatarAhmad Harthi <aalharthi@kacst.edu.sa>
üst 69800aa0
...@@ -268,8 +268,8 @@ namespace drawinglayer ...@@ -268,8 +268,8 @@ namespace drawinglayer
if(rTextCandidate.getFontAttribute().getRTL()) if(rTextCandidate.getFontAttribute().getRTL())
{ {
sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED|TEXT_LAYOUT_BIDI_STRONG)); sal_uInt32 nRTLLayoutMode(nOldLayoutMode & ~(TEXT_LAYOUT_COMPLEX_DISABLED));
nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT; nRTLLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_BIDI_STRONG | TEXT_LAYOUT_TEXTORIGIN_LEFT;
mpOutputDevice->SetLayoutMode(nRTLLayoutMode); mpOutputDevice->SetLayoutMode(nRTLLayoutMode);
} }
......
...@@ -4274,18 +4274,13 @@ void ImpEditEngine::ImplInitDigitMode(OutputDevice* pOutDev, LanguageType eCurLa ...@@ -4274,18 +4274,13 @@ void ImpEditEngine::ImplInitDigitMode(OutputDevice* pOutDev, LanguageType eCurLa
void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, sal_uInt16 nIndex ) void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, sal_uInt16 nIndex )
{ {
sal_Bool bCTL = sal_False;
sal_Bool bR2L = sal_False; sal_Bool bR2L = sal_False;
if ( nIndex == 0xFFFF ) if ( nIndex == 0xFFFF )
{ {
bCTL = HasScriptType( nPara, i18n::ScriptType::COMPLEX );
bR2L = IsRightToLeft( nPara ); bR2L = IsRightToLeft( nPara );
} }
else 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 // this change was discussed in issue 37190
bR2L = GetRightToLeft( nPara, nIndex + 1) % 2 ? sal_True : sal_False; bR2L = GetRightToLeft( nPara, nIndex + 1) % 2 ? sal_True : sal_False;
// it also works for issue 55927 // it also works for issue 55927
...@@ -4294,21 +4289,18 @@ void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara, ...@@ -4294,21 +4289,18 @@ void ImpEditEngine::ImplInitLayoutMode( OutputDevice* pOutDev, sal_uInt16 nPara,
sal_uLong nLayoutMode = pOutDev->GetLayoutMode(); sal_uLong nLayoutMode = pOutDev->GetLayoutMode();
// We always use the left postion for DrawText() // 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 // No CTL/Bidi checking neccessary
nLayoutMode |= ( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG ); nLayoutMode |= ( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG );
} }
else else
{ {
// CTL/Bidi checking neccessary //Use BIDI_STRONG, Stop VCL to perform ubidi algo on text.
// Don't use BIDI_STRONG, VCL must do some checks. nLayoutMode |= TEXT_LAYOUT_BIDI_RTL | TEXT_LAYOUT_TEXTORIGIN_LEFT | TEXT_LAYOUT_BIDI_STRONG;
nLayoutMode &= ~( TEXT_LAYOUT_COMPLEX_DISABLED | TEXT_LAYOUT_BIDI_STRONG );
if ( bR2L )
nLayoutMode |= TEXT_LAYOUT_BIDI_RTL|TEXT_LAYOUT_TEXTORIGIN_LEFT;
} }
pOutDev->SetLayoutMode( nLayoutMode ); pOutDev->SetLayoutMode( nLayoutMode );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment