[Libreoffice-commits] core.git: editeng/source

Marco Cecchetti marco.cecchetti at collabora.com
Fri Feb 24 10:25:48 UTC 2017


 editeng/source/editeng/editdoc.hxx  |   10 +++++-----
 editeng/source/editeng/impedit3.cxx |   16 ++++++++--------
 2 files changed, 13 insertions(+), 13 deletions(-)

New commits:
commit 288d694ff695ef83cbe4224db87dd65281c75a8f
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Thu Feb 23 21:26:34 2017 +0100

    LOK - Calc: Text is not visible in cell when entering numerical input
    
    Problem
    The issue occurs when you double click and enter a numerical input in
    a cell which belongs to one of the front colums.
    
    Findings
    After a bit of investigation I detected that the problem shows up when
    the spreedsheet width is increased by invoking
    ScViewData::SetMaxTiledCol.
    Indeed the problem occurs whenever the spreadsheet width is larger
    than 2^16 twips.
    
    Solution
    By changing the type of some variables from sal_uInt16 to long in all
    involved contexts, the problem disappeared.
    
    Change-Id: Ia6c6c258b0644f03c897e7b4bcaded967f21537c
    Reviewed-on: https://gerrit.libreoffice.org/34597
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/editeng/source/editeng/editdoc.hxx b/editeng/source/editeng/editdoc.hxx
index 291a067..98712dd 100644
--- a/editeng/source/editeng/editdoc.hxx
+++ b/editeng/source/editeng/editdoc.hxx
@@ -478,7 +478,7 @@ public:
 private:
     CharPosArrayType aPositions;
     long            nTxtWidth;
-    sal_uInt16          nStartPosX;
+    long            nStartPosX;
     sal_Int32          nStart;     // could be replaced by nStartPortion
     sal_Int32          nEnd;       // could be replaced by nEndPortion
     sal_Int32          nStartPortion;
@@ -532,7 +532,7 @@ public:
 
     sal_Int32       GetLen() const                  { return nEnd - nStart; }
 
-    sal_uInt16      GetStartPosX() const            { return nStartPosX; }
+    long            GetStartPosX() const            { return nStartPosX; }
     void            SetStartPosX( long start );
     Size            CalcTextSize( ParaPortion& rParaPortion );
 
@@ -592,7 +592,7 @@ private:
 
     sal_Int32              nInvalidPosStart;
     sal_Int32              nFirstLineOffset;   // For Writer-LineSpacing-Interpretation
-    sal_uInt16             nBulletX;
+    sal_Int32             nBulletX;
     sal_Int32              nInvalidDiff;
 
     bool                bInvalid            : 1;
@@ -618,8 +618,8 @@ public:
     bool                MustRepaint() const         { return bForceRepaint; }
     void                SetMustRepaint( bool bRP )  { bForceRepaint = bRP; }
 
-    sal_uInt16          GetBulletX() const          { return nBulletX; }
-    void                SetBulletX( sal_uInt16 n )      { nBulletX = n; }
+    sal_Int32           GetBulletX() const          { return nBulletX; }
+    void                SetBulletX( sal_Int32 n )   { nBulletX = n; }
 
     void                MarkInvalid( sal_Int32 nStart, sal_Int32 nDiff);
     void                MarkSelectionInvalid( sal_Int32 nStart, sal_Int32 nEnd );
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 9a6b009..1453427 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -732,7 +732,7 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
     {
         aBulletArea = GetEditEnginePtr()->GetBulletArea( GetParaPortions().GetPos( pParaPortion ) );
         if ( aBulletArea.Right() > 0 )
-            pParaPortion->SetBulletX( (sal_uInt16) GetXValue( aBulletArea.Right() ) );
+            pParaPortion->SetBulletX( (sal_Int32) GetXValue( aBulletArea.Right() ) );
         else
             pParaPortion->SetBulletX( 0 ); // if Bullet is set incorrectly
     }
@@ -1643,23 +1643,23 @@ void ImpEditEngine::CreateAndInsertEmptyLine( ParaPortion* pParaPortion, sal_uIn
     sal_Int32 nSpaceBeforeAndMinLabelWidth = GetSpaceBeforeAndMinLabelWidth( pParaPortion->GetNode(), &nSpaceBefore );
     const SvxLRSpaceItem& rLRItem = GetLRSpaceItem( pParaPortion->GetNode() );
     const SvxLineSpacingItem& rLSItem = static_cast<const SvxLineSpacingItem&>(pParaPortion->GetNode()->GetContentAttribs().GetItem( EE_PARA_SBL ));
-    short nStartX = GetXValue( (short)(rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBefore));
+    long nStartX = GetXValue( rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBefore );
 
     Rectangle aBulletArea = Rectangle( Point(), Point() );
     if ( bLineBreak )
     {
-        nStartX = (short)GetXValue( rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBeforeAndMinLabelWidth );
+        nStartX = GetXValue( rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBeforeAndMinLabelWidth );
     }
     else
     {
         aBulletArea = GetEditEnginePtr()->GetBulletArea( GetParaPortions().GetPos( pParaPortion ) );
         if ( aBulletArea.Right() > 0 )
-            pParaPortion->SetBulletX( (sal_uInt16) GetXValue( aBulletArea.Right() ) );
+            pParaPortion->SetBulletX( (sal_Int32) GetXValue( aBulletArea.Right() ) );
         else
             pParaPortion->SetBulletX( 0 ); // If Bullet set incorrectly.
         if ( pParaPortion->GetBulletX() > nStartX )
         {
-            nStartX = (short)GetXValue( rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBeforeAndMinLabelWidth );
+            nStartX = GetXValue( rLRItem.GetTextLeft() + rLRItem.GetTextFirstLineOfst() + nSpaceBeforeAndMinLabelWidth );
             if ( pParaPortion->GetBulletX() > nStartX )
                 nStartX = pParaPortion->GetBulletX();
         }
@@ -1692,11 +1692,11 @@ void ImpEditEngine::CreateAndInsertEmptyLine( ParaPortion* pParaPortion, sal_uIn
         if ( nMaxLineWidth < 0 )
             nMaxLineWidth = 1;
         if ( eJustification ==  SVX_ADJUST_CENTER )
-            nStartX = sal::static_int_cast< short >(nMaxLineWidth / 2);
+            nStartX = nMaxLineWidth / 2;
         else if ( eJustification ==  SVX_ADJUST_RIGHT )
-            nStartX = sal::static_int_cast< short >(nMaxLineWidth);
+            nStartX = nMaxLineWidth;
 
-        nStartX = sal::static_int_cast< short >(nStartX + nTextXOffset);
+        nStartX = nStartX + nTextXOffset;
     }
 
     pTmpLine->SetStartPosX( nStartX );


More information about the Libreoffice-commits mailing list