sw/source/core/text/inftxt.cxx | 39 +++++++++++++++++++++++++-------------- sw/source/core/text/itrcrsr.cxx | 12 +++++++----- 2 files changed, 32 insertions(+), 19 deletions(-)
New commits: commit 7ef89c96cc27aee96ceb947c7b676d56b55cd7b5 Author: Zolnai Tamás <zolnaitamas2...@gmail.com> Date: Wed Sep 18 14:16:24 2013 +0200 Make the code of character border a bit robust Change-Id: I62a6c932745ee8ff5adeed00df808b62cbb9884f diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx index 41d569b..e680672 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -639,7 +639,7 @@ void SwTxtPaintInfo::_DrawText( const OUString &rText, const SwLinePortion &rPor // Draw text next to the left border Point aFontPos(aPos); - if( !static_cast<const SwTxtPortion&>(rPor).GetJoinBorderWithPrev() ) + if( m_pFnt->GetLeftBorder() && !static_cast<const SwTxtPortion&>(rPor).GetJoinBorderWithPrev() ) { const sal_uInt16 nLeftBorderSpace = m_pFnt->GetLeftBorderSpace(); if ( GetTxtFrm()->IsRightToLeft() ) @@ -664,6 +664,10 @@ void SwTxtPaintInfo::_DrawText( const OUString &rText, const SwLinePortion &rPor break; } } + if( aFontPos.X() < 0 ) + aFontPos.X() = 0; + if( aFontPos.X() < 0 ) + aFontPos.X() = 0; } if( GetTxtFly()->IsOn() ) diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx index e524c5e..1e981892 100644 --- a/sw/source/core/text/itrcrsr.cxx +++ b/sw/source/core/text/itrcrsr.cxx @@ -940,12 +940,13 @@ void SwTxtCursor::_GetCharRect( SwRect* pOrig, const xub_StrLen nOfst, { pCurrPart = pCurrPart->GetFollow(); } - if( pCurrPart && nSumLength != nOfst - aInf.GetIdx() && !pCurrPart->GetJoinBorderWithNext() ) + if( pCurrPart && nSumLength != nOfst - aInf.GetIdx() && + pCurrPart->GetFont().GetRightBorder() && !pCurrPart->GetJoinBorderWithNext() ) { nX -= pCurrPart->GetFont().GetRightBorderSpace(); } } - else if( !pPor->GetJoinBorderWithNext()) + else if( GetInfo().GetFont()->GetRightBorder() && !pPor->GetJoinBorderWithNext()) { nX -= GetInfo().GetFont()->GetRightBorderSpace(); } @@ -1650,11 +1651,12 @@ xub_StrLen SwTxtCursor::GetCrsrOfst( SwPosition *pPos, const Point &rPoint, while( pCurrPart && nSumWidth <= nX - nCurrStart ) { nSumWidth += pCurrPart->GetWidth(); - if( !pCurrPart->GetJoinBorderWithPrev() ) + if( pCurrPart->GetFont().GetLeftBorder() && !pCurrPart->GetJoinBorderWithPrev() ) { nSumBorderWidth += pCurrPart->GetFont().GetLeftBorderSpace(); } - if( nSumWidth <= nX - nCurrStart && !pCurrPart->GetJoinBorderWithNext() ) + if( nSumWidth <= nX - nCurrStart && pCurrPart->GetFont().GetRightBorder() && + !pCurrPart->GetJoinBorderWithNext() ) { nSumBorderWidth += pCurrPart->GetFont().GetRightBorderSpace(); } @@ -1663,7 +1665,7 @@ xub_StrLen SwTxtCursor::GetCrsrOfst( SwPosition *pPos, const Point &rPoint, nX = std::max(0, nX - nSumBorderWidth); } // Shift the offset with the left border width - else if( !pPor->GetJoinBorderWithPrev() ) + else if( GetInfo().GetFont()->GetLeftBorder() && !pPor->GetJoinBorderWithPrev() ) { nX = std::max(0, nX - GetInfo().GetFont()->GetLeftBorderSpace()); } commit 89093f50cd0b25f9789fc7023fee116a839fd3aa Author: Zolnai Tamás <zolnaitamas2...@gmail.com> Date: Wed Sep 18 13:21:53 2013 +0200 Fix RTL character border Change-Id: I9cad3f7689e5badafb7fe2cd3f707e3f226c9725 diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx index cf8e582..41d569b 100644 --- a/sw/source/core/text/inftxt.cxx +++ b/sw/source/core/text/inftxt.cxx @@ -642,20 +642,27 @@ void SwTxtPaintInfo::_DrawText( const OUString &rText, const SwLinePortion &rPor if( !static_cast<const SwTxtPortion&>(rPor).GetJoinBorderWithPrev() ) { const sal_uInt16 nLeftBorderSpace = m_pFnt->GetLeftBorderSpace(); - switch( m_pFnt->GetOrientation(GetTxtFrm()->IsVertical()) ) + if ( GetTxtFrm()->IsRightToLeft() ) { - case 0 : - aFontPos.X() += nLeftBorderSpace; - break; - case 900 : - aFontPos.Y() -= nLeftBorderSpace; - break; - case 1800 : - aFontPos.X() -= nLeftBorderSpace; - break; - case 2700 : - aFontPos.Y() += nLeftBorderSpace; - break; + aFontPos.X() -= nLeftBorderSpace; + } + else + { + switch( m_pFnt->GetOrientation(GetTxtFrm()->IsVertical()) ) + { + case 0 : + aFontPos.X() += nLeftBorderSpace; + break; + case 900 : + aFontPos.Y() -= nLeftBorderSpace; + break; + case 1800 : + aFontPos.X() -= nLeftBorderSpace; + break; + case 2700 : + aFontPos.Y() += nLeftBorderSpace; + break; + } } }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits