Kaydet (Commit) 9705fbc1 authored tarafından Norbert Thiebaud's avatar Norbert Thiebaud

Fix editeng missing spellchecking redline on load

Change-Id: I16bfbff85978702c93932d723180a7f9166bd39e
üst 1f8bdeee
...@@ -197,7 +197,7 @@ void EditSpellWrapper::CheckSpellTo() ...@@ -197,7 +197,7 @@ void EditSpellWrapper::CheckSpellTo()
} }
} }
sal_Int32 WrongList::Valid = std::numeric_limits<sal_Int32>::max(); size_t WrongList::Valid = std::numeric_limits<size_t>::max();
WrongList::WrongList() : mnInvalidStart(0), mnInvalidEnd(Valid) {} WrongList::WrongList() : mnInvalidStart(0), mnInvalidEnd(Valid) {}
...@@ -229,7 +229,7 @@ void WrongList::SetValid() ...@@ -229,7 +229,7 @@ void WrongList::SetValid()
mnInvalidEnd = 0; mnInvalidEnd = 0;
} }
void WrongList::SetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd ) void WrongList::SetInvalidRange( size_t nStart, size_t nEnd )
{ {
if (mnInvalidStart == Valid || nStart < mnInvalidStart) if (mnInvalidStart == Valid || nStart < mnInvalidStart)
mnInvalidStart = nStart; mnInvalidStart = nStart;
...@@ -238,13 +238,13 @@ void WrongList::SetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd ) ...@@ -238,13 +238,13 @@ void WrongList::SetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd )
mnInvalidEnd = nEnd; mnInvalidEnd = nEnd;
} }
void WrongList::ResetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd ) void WrongList::ResetInvalidRange( size_t nStart, size_t nEnd )
{ {
mnInvalidStart = nStart; mnInvalidStart = nStart;
mnInvalidEnd = nEnd; mnInvalidEnd = nEnd;
} }
void WrongList::TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep ) void WrongList::TextInserted( size_t nPos, size_t nLength, bool bPosIsSep )
{ {
if (IsValid()) if (IsValid())
{ {
...@@ -261,7 +261,7 @@ void WrongList::TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep ...@@ -261,7 +261,7 @@ void WrongList::TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep
mnInvalidEnd = nPos + nLength; mnInvalidEnd = nPos + nLength;
} }
for (sal_Int32 i = 0, n = (sal_Int32)maRanges.size(); i < n; ++i) for (size_t i = 0, n = maRanges.size(); i < n; ++i)
{ {
editeng::MisspellRange& rWrong = maRanges[i]; editeng::MisspellRange& rWrong = maRanges[i];
bool bRefIsValid = true; bool bRefIsValid = true;
...@@ -313,9 +313,9 @@ void WrongList::TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep ...@@ -313,9 +313,9 @@ void WrongList::TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep
SAL_WARN_IF(DbgIsBuggy(), "editeng", "InsertWrong: WrongList broken!"); SAL_WARN_IF(DbgIsBuggy(), "editeng", "InsertWrong: WrongList broken!");
} }
void WrongList::TextDeleted( sal_Int32 nPos, sal_Int32 nLength ) void WrongList::TextDeleted( size_t nPos, size_t nLength )
{ {
sal_Int32 nEndPos = nPos + nLength; size_t nEndPos = nPos + nLength;
if (IsValid()) if (IsValid())
{ {
sal_uInt16 nNewInvalidStart = nPos ? nPos - 1 : 0; sal_uInt16 nNewInvalidStart = nPos ? nPos - 1 : 0;
...@@ -381,7 +381,7 @@ void WrongList::TextDeleted( sal_Int32 nPos, sal_Int32 nLength ) ...@@ -381,7 +381,7 @@ void WrongList::TextDeleted( sal_Int32 nPos, sal_Int32 nLength )
SAL_WARN_IF(DbgIsBuggy(), "editeng", "TextDeleted: WrongList broken!"); SAL_WARN_IF(DbgIsBuggy(), "editeng", "TextDeleted: WrongList broken!");
} }
bool WrongList::NextWrong( sal_Int32& rnStart, sal_Int32& rnEnd ) const bool WrongList::NextWrong( size_t& rnStart, size_t& rnEnd ) const
{ {
/* /*
rnStart get the start position, is possibly adjusted wrt. Wrong start rnStart get the start position, is possibly adjusted wrt. Wrong start
...@@ -399,7 +399,7 @@ bool WrongList::NextWrong( sal_Int32& rnStart, sal_Int32& rnEnd ) const ...@@ -399,7 +399,7 @@ bool WrongList::NextWrong( sal_Int32& rnStart, sal_Int32& rnEnd ) const
return false; return false;
} }
bool WrongList::HasWrong( sal_Int32 nStart, sal_Int32 nEnd ) const bool WrongList::HasWrong( size_t nStart, size_t nEnd ) const
{ {
for (WrongList::const_iterator i = begin(); i != end(); ++i) for (WrongList::const_iterator i = begin(); i != end(); ++i)
{ {
...@@ -411,7 +411,7 @@ bool WrongList::HasWrong( sal_Int32 nStart, sal_Int32 nEnd ) const ...@@ -411,7 +411,7 @@ bool WrongList::HasWrong( sal_Int32 nStart, sal_Int32 nEnd ) const
return false; return false;
} }
bool WrongList::HasAnyWrong( sal_Int32 nStart, sal_Int32 nEnd ) const bool WrongList::HasAnyWrong( size_t nStart, size_t nEnd ) const
{ {
for (WrongList::const_iterator i = begin(); i != end(); ++i) for (WrongList::const_iterator i = begin(); i != end(); ++i)
{ {
...@@ -423,22 +423,18 @@ bool WrongList::HasAnyWrong( sal_Int32 nStart, sal_Int32 nEnd ) const ...@@ -423,22 +423,18 @@ bool WrongList::HasAnyWrong( sal_Int32 nStart, sal_Int32 nEnd ) const
return false; return false;
} }
void WrongList::ClearWrongs( sal_Int32 nStart, sal_Int32 nEnd, void WrongList::ClearWrongs( size_t nStart, size_t nEnd,
const ContentNode* pNode ) const ContentNode* pNode )
{ {
if(nEnd < 0)
{
nEnd = SAL_MAX_INT32;
}
for (WrongList::iterator i = begin(); i != end(); ) for (WrongList::iterator i = begin(); i != end(); )
{ {
if ((i->mnEnd > nStart) && (i->mnStart < nEnd)) if (i->mnEnd > nStart && i->mnStart < nEnd)
{ {
if (i->mnEnd > nEnd) // Runs out if (i->mnEnd > nEnd) // Runs out
{ {
i->mnStart = nEnd; i->mnStart = nEnd;
// Blanks? // Blanks?
while (i->mnStart < pNode->Len() && while (i->mnStart < (size_t)pNode->Len() &&
(pNode->GetChar(i->mnStart) == ' ' || (pNode->GetChar(i->mnStart) == ' ' ||
pNode->IsFeature(i->mnStart))) pNode->IsFeature(i->mnStart)))
{ {
...@@ -461,7 +457,7 @@ void WrongList::ClearWrongs( sal_Int32 nStart, sal_Int32 nEnd, ...@@ -461,7 +457,7 @@ void WrongList::ClearWrongs( sal_Int32 nStart, sal_Int32 nEnd,
SAL_WARN_IF(DbgIsBuggy(), "editeng", "ClearWrongs: WrongList broken!"); SAL_WARN_IF(DbgIsBuggy(), "editeng", "ClearWrongs: WrongList broken!");
} }
void WrongList::InsertWrong( sal_Int32 nStart, sal_Int32 nEnd ) void WrongList::InsertWrong( size_t nStart, size_t nEnd )
{ {
WrongList::iterator nPos = end(); WrongList::iterator nPos = end();
for (WrongList::iterator i = begin(); i != end(); ++i) for (WrongList::iterator i = begin(); i != end(); ++i)
......
...@@ -70,11 +70,11 @@ public: ...@@ -70,11 +70,11 @@ public:
*/ */
class WrongList class WrongList
{ {
static sal_Int32 Valid; static size_t Valid;
std::vector<editeng::MisspellRange> maRanges; std::vector<editeng::MisspellRange> maRanges;
sal_Int32 mnInvalidStart; size_t mnInvalidStart;
sal_Int32 mnInvalidEnd; size_t mnInvalidEnd;
bool DbgIsBuggy() const; bool DbgIsBuggy() const;
...@@ -91,20 +91,20 @@ public: ...@@ -91,20 +91,20 @@ public:
bool IsValid() const; bool IsValid() const;
void SetValid(); void SetValid();
void SetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd ); void SetInvalidRange( size_t nStart, size_t nEnd );
void ResetInvalidRange( sal_Int32 nStart, sal_Int32 nEnd ); void ResetInvalidRange( size_t nStart, size_t nEnd );
sal_Int32 GetInvalidStart() const { return mnInvalidStart; } size_t GetInvalidStart() const { return mnInvalidStart; }
sal_Int32 GetInvalidEnd() const { return mnInvalidEnd; } size_t GetInvalidEnd() const { return mnInvalidEnd; }
void TextInserted( sal_Int32 nPos, sal_Int32 nLength, bool bPosIsSep ); void TextInserted( size_t nPos, size_t nLength, bool bPosIsSep );
void TextDeleted( sal_Int32 nPos, sal_Int32 nLength ); void TextDeleted( size_t nPos, size_t nLength );
void InsertWrong( sal_Int32 nStart, sal_Int32 nEnd ); void InsertWrong( size_t nStart, size_t nEnd );
bool NextWrong( sal_Int32& rnStart, sal_Int32& rnEnd ) const; bool NextWrong( size_t& rnStart, size_t& rnEnd ) const;
bool HasWrong( sal_Int32 nStart, sal_Int32 nEnd ) const; bool HasWrong( size_t nStart, size_t nEnd ) const;
bool HasAnyWrong( sal_Int32 nStart, sal_Int32 nEnd ) const; bool HasAnyWrong( size_t nStart, size_t nEnd ) const;
void ClearWrongs( sal_Int32 nStart, sal_Int32 nEnd, const ContentNode* pNode ); void ClearWrongs( size_t nStart, size_t nEnd, const ContentNode* pNode );
void MarkWrongsInvalid(); void MarkWrongsInvalid();
WrongList* Clone() const; WrongList* Clone() const;
......
...@@ -156,8 +156,8 @@ static void lcl_DrawRedLines( ...@@ -156,8 +156,8 @@ static void lcl_DrawRedLines(
OutputDevice* pOutDev, OutputDevice* pOutDev,
long nFontHeight, long nFontHeight,
const Point& rPnt, const Point& rPnt,
sal_Int32 nIndex, size_t nIndex,
sal_Int32 nMaxEnd, size_t nMaxEnd,
const sal_Int32* pDXArray, const sal_Int32* pDXArray,
WrongList* pWrongs, WrongList* pWrongs,
short nOrientation, short nOrientation,
...@@ -177,7 +177,7 @@ static void lcl_DrawRedLines( ...@@ -177,7 +177,7 @@ static void lcl_DrawRedLines(
else else
nStyle = WAVE_FLAT; nStyle = WAVE_FLAT;
sal_Int32 nEnd, nStart = nIndex; size_t nEnd, nStart = nIndex;
bool bWrong = pWrongs->NextWrong( nStart, nEnd ); bool bWrong = pWrongs->NextWrong( nStart, nEnd );
while ( bWrong ) while ( bWrong )
{ {
...@@ -3241,9 +3241,9 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt ...@@ -3241,9 +3241,9 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt
if(pWrongs && !pWrongs->empty()) if(pWrongs && !pWrongs->empty())
{ {
sal_Int32 nStart = nIndex, nEnd = 0; size_t nStart = nIndex, nEnd = 0;
bool bWrong = pWrongs->NextWrong(nStart, nEnd); bool bWrong = pWrongs->NextWrong(nStart, nEnd);
const sal_Int32 nMaxEnd(nIndex + pTextPortion->GetLen()); const size_t nMaxEnd(nIndex + pTextPortion->GetLen());
while(bWrong) while(bWrong)
{ {
...@@ -3252,7 +3252,7 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt ...@@ -3252,7 +3252,7 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt
break; break;
} }
if(nStart < nIndex) if(nStart < (size_t)nIndex)
{ {
nStart = nIndex; nStart = nIndex;
} }
...@@ -3476,7 +3476,7 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt ...@@ -3476,7 +3476,7 @@ void ImpEditEngine::Paint( OutputDevice* pOutDev, Rectangle aClipRect, Point aSt
} }
Color aOldColor( pOutDev->GetLineColor() ); Color aOldColor( pOutDev->GetLineColor() );
pOutDev->SetLineColor( Color( GetColorConfig().GetColorValue( svtools::SPELL ).nColor ) ); pOutDev->SetLineColor( Color( GetColorConfig().GetColorValue( svtools::SPELL ).nColor ) );
lcl_DrawRedLines( pOutDev, aTmpFont.GetSize().Height(), aRedLineTmpPos, nIndex, nIndex + pTextPortion->GetLen(), pDXArray, pPortion->GetNode()->GetWrongList(), nOrientation, aOrigin, IsVertical(), pTextPortion->IsRightToLeft() ); lcl_DrawRedLines( pOutDev, aTmpFont.GetSize().Height(), aRedLineTmpPos, (size_t)nIndex, (size_t)nIndex + pTextPortion->GetLen(), pDXArray, pPortion->GetNode()->GetWrongList(), nOrientation, aOrigin, IsVertical(), pTextPortion->IsRightToLeft() );
pOutDev->SetLineColor( aOldColor ); pOutDev->SetLineColor( aOldColor );
} }
} }
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
namespace editeng { namespace editeng {
MisspellRange::MisspellRange() : mnStart(0), mnEnd(0) {} MisspellRange::MisspellRange() : mnStart(0), mnEnd(0) {}
MisspellRange::MisspellRange(sal_Int32 nStart, sal_Int32 nEnd) : mnStart(nStart), mnEnd(nEnd) {} MisspellRange::MisspellRange(size_t nStart, size_t nEnd) : mnStart(nStart), mnEnd(nEnd) {}
MisspellRanges::MisspellRanges(sal_Int32 nParagraph, const std::vector<MisspellRange>& rRanges) : MisspellRanges::MisspellRanges(sal_Int32 nParagraph, const std::vector<MisspellRange>& rRanges) :
mnParagraph(nParagraph), maRanges(rRanges) {} mnParagraph(nParagraph), maRanges(rRanges) {}
......
...@@ -18,11 +18,11 @@ namespace editeng { ...@@ -18,11 +18,11 @@ namespace editeng {
struct EDITENG_DLLPUBLIC MisspellRange struct EDITENG_DLLPUBLIC MisspellRange
{ {
sal_Int32 mnStart; size_t mnStart;
sal_Int32 mnEnd; size_t mnEnd;
MisspellRange(); MisspellRange();
MisspellRange(sal_Int32 nStart, sal_Int32 nEnd); MisspellRange(size_t nStart, size_t nEnd);
}; };
struct EDITENG_DLLPUBLIC MisspellRanges struct EDITENG_DLLPUBLIC MisspellRanges
......
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