Kaydet (Commit) f1a8aefe authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: rhbz#1020712 return all the selected scripts

What we want here is *all* the scripts in the range, that's the whole point of
using SCRIPTTYPE. We use this to determine the font to show in the fontbox. If
it's an exclusive script then we can show the font that that script, and if
there are multiple scripts we know to set it empty.

With the other intermediate bugs out of the way, this now appears to work
correctly.

Change-Id: I58426123602d70c151bd878e96fa5cbab7d3fd3e
üst b57ffef6
......@@ -1803,28 +1803,31 @@ sal_uInt16 ImpEditEngine::GetScriptType( const EditSelection& rSel ) const
const ScriptTypePosInfos& rTypes = pParaPortion->aScriptInfos;
// find the first(!) script type position that holds the
// complete selection. Thus it will work for selections as
// well as with just moving the cursor from char to char.
// find all the scripts of this range
sal_uInt16 nS = ( nPara == nStartPara ) ? aSel.Min().GetIndex() : 0;
sal_uInt16 nE = ( nPara == nEndPara ) ? aSel.Max().GetIndex() : pParaPortion->GetNode()->Len();
for ( size_t n = 0; n < rTypes.size(); n++ )
//no selection, just bare cursor
if (nStartPara == nEndPara && nS == nE)
{
//If we are not at the start of the paragraph we want the properties of the
//preceding character. Otherwise get the properties of the next (or what the
//next would have if it existed)
if (nS != 0)
--nS;
else
++nE;
}
for (size_t n = 0; n < rTypes.size(); ++n)
{
if (rTypes[n].nStartPos <= nS && nE <= rTypes[n].nEndPos)
bool bStartInRange = rTypes[n].nStartPos <= nS && nS < rTypes[n].nEndPos;
bool bEndInRange = rTypes[n].nStartPos < nE && nE <= rTypes[n].nEndPos;
if (bStartInRange || bEndInRange)
{
if ( rTypes[n].nScriptType != i18n::ScriptType::WEAK )
{
nScriptType |= GetItemScriptType ( rTypes[n].nScriptType );
}
else
{
if ( !nScriptType && n )
{
// #93548# When starting with WEAK, use prev ScriptType...
nScriptType = rTypes[n-1].nScriptType;
}
}
break;
}
}
}
......
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