mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 11:43:31 +00:00
riched20: Don't split a run if the cursor is at the end of it.
This commit is contained in:
parent
7e7a8f1a4e
commit
2429e8b10b
1 changed files with 16 additions and 6 deletions
|
@ -658,17 +658,20 @@ void ME_SetSelectionCharFormat(ME_TextEditor *editor, CHARFORMAT2W *pFmt)
|
||||||
*/
|
*/
|
||||||
void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, CHARFORMAT2W *pFmt)
|
void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, CHARFORMAT2W *pFmt)
|
||||||
{
|
{
|
||||||
ME_DisplayItem *run, *end_run = NULL;
|
ME_DisplayItem *run, *start_run = start->pRun, *end_run = NULL;
|
||||||
|
|
||||||
if (end && start->pRun == end->pRun && start->nOffset == end->nOffset)
|
if (end && start->pRun == end->pRun && start->nOffset == end->nOffset)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (start->nOffset)
|
if (start->nOffset == start->pRun->member.run.len)
|
||||||
|
start_run = ME_FindItemFwd( start->pRun, diRun );
|
||||||
|
else if (start->nOffset)
|
||||||
{
|
{
|
||||||
/* SplitRunSimple may or may not update the cursors, depending on whether they
|
/* SplitRunSimple may or may not update the cursors, depending on whether they
|
||||||
* are selection cursors, but we need to make sure they are valid. */
|
* are selection cursors, but we need to make sure they are valid. */
|
||||||
int split_offset = start->nOffset;
|
int split_offset = start->nOffset;
|
||||||
ME_DisplayItem *split_run = ME_SplitRunSimple(editor, start);
|
ME_DisplayItem *split_run = ME_SplitRunSimple(editor, start);
|
||||||
|
start_run = start->pRun;
|
||||||
if (end && end->pRun == split_run)
|
if (end && end->pRun == split_run)
|
||||||
{
|
{
|
||||||
end->pRun = start->pRun;
|
end->pRun = start->pRun;
|
||||||
|
@ -676,11 +679,18 @@ void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, C
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (end && end->nOffset)
|
if (end)
|
||||||
ME_SplitRunSimple(editor, end);
|
{
|
||||||
end_run = end ? end->pRun : NULL;
|
if (end->nOffset == end->pRun->member.run.len)
|
||||||
|
end_run = ME_FindItemFwd( end->pRun, diRun );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (end->nOffset) ME_SplitRunSimple(editor, end);
|
||||||
|
end_run = end->pRun;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (run = start->pRun; run != end_run; run = ME_FindItemFwd( run, diRun ))
|
for (run = start_run; run != end_run; run = ME_FindItemFwd( run, diRun ))
|
||||||
{
|
{
|
||||||
ME_Style *new_style = ME_ApplyStyle(run->member.run.style, pFmt);
|
ME_Style *new_style = ME_ApplyStyle(run->member.run.style, pFmt);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue