Huw Davies : riched20: Change ME_FindRunInRow to fill out a cursor structure.
Alexandre Julliard
julliard at winehq.org
Mon Feb 25 14:33:48 CST 2013
Module: wine
Branch: master
Commit: 0730db2b999a31b360e5beb9e5fb129f5d944e27
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0730db2b999a31b360e5beb9e5fb129f5d944e27
Author: Huw Davies <huw at codeweavers.com>
Date: Mon Feb 25 12:59:24 2013 +0000
riched20: Change ME_FindRunInRow to fill out a cursor structure.
---
dlls/riched20/caret.c | 41 +++++++++++++++++++++--------------------
1 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c
index ddaa37a..0905700 100644
--- a/dlls/riched20/caret.c
+++ b/dlls/riched20/caret.c
@@ -1177,28 +1177,32 @@ void ME_MouseMove(ME_TextEditor *editor, int x, int y)
ME_SendSelChange(editor);
}
-static ME_DisplayItem *ME_FindRunInRow(ME_TextEditor *editor, ME_DisplayItem *pRow,
- int x, int *pOffset, int *pbCaretAtEnd)
+static void ME_FindRunInRow(ME_TextEditor *editor, ME_DisplayItem *pRow,
+ int x, ME_Cursor *cursor, int *pbCaretAtEnd)
{
ME_DisplayItem *pNext, *pLastRun;
pNext = ME_FindItemFwd(pRow, diRunOrStartRow);
assert(pNext->type == diRun);
if (pbCaretAtEnd) *pbCaretAtEnd = FALSE;
- if (pOffset) *pOffset = 0;
+ cursor->nOffset = 0;
do {
int run_x = pNext->member.run.pt.x;
int width = pNext->member.run.nWidth;
if (x < run_x)
{
- return pNext;
+ cursor->pRun = pNext;
+ cursor->pPara = ME_GetParagraph( cursor->pRun );
+ return;
}
if (x >= run_x && x < run_x+width)
{
int ch = ME_CharFromPoint(editor, x-run_x, &pNext->member.run, TRUE);
- if (ch < pNext->member.run.len) {
- if (pOffset)
- *pOffset = ch;
- return pNext;
+ if (ch < pNext->member.run.len)
+ {
+ cursor->nOffset = ch;
+ cursor->pRun = pNext;
+ cursor->pPara = ME_GetParagraph( cursor->pRun );
+ return;
}
}
pLastRun = pNext;
@@ -1207,12 +1211,14 @@ static ME_DisplayItem *ME_FindRunInRow(ME_TextEditor *editor, ME_DisplayItem *pR
if ((pLastRun->member.run.nFlags & MERF_ENDPARA) == 0)
{
- pNext = ME_FindItemFwd(pNext, diRun);
+ cursor->pRun = ME_FindItemFwd(pNext, diRun);
if (pbCaretAtEnd) *pbCaretAtEnd = TRUE;
- return pNext;
- } else {
- return pLastRun;
}
+ else
+ cursor->pRun = pLastRun;
+
+ cursor->pPara = ME_GetParagraph( cursor->pRun );
+ return;
}
static int ME_GetXForArrow(ME_TextEditor *editor, ME_Cursor *pCursor)
@@ -1313,8 +1319,7 @@ ME_MoveCursorLines(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs)
/* row not found - ignore */
return;
}
- pCursor->pRun = ME_FindRunInRow(editor, pItem, x, &pCursor->nOffset, &editor->bCaretAtEnd);
- pCursor->pPara = ME_GetParagraph(pCursor->pRun);
+ ME_FindRunInRow(editor, pItem, x, pCursor, &editor->bCaretAtEnd);
assert(pCursor->pRun);
assert(pCursor->pRun->type == diRun);
}
@@ -1367,9 +1372,7 @@ static void ME_ArrowPageUp(ME_TextEditor *editor, ME_Cursor *pCursor)
pLast = p;
} while(1);
- pCursor->pRun = ME_FindRunInRow(editor, pLast, x, &pCursor->nOffset,
- &editor->bCaretAtEnd);
- pCursor->pPara = ME_GetParagraph(pCursor->pRun);
+ ME_FindRunInRow(editor, pLast, x, pCursor, &editor->bCaretAtEnd);
}
assert(pCursor->pRun);
assert(pCursor->pRun->type == diRun);
@@ -1427,9 +1430,7 @@ static void ME_ArrowPageDown(ME_TextEditor *editor, ME_Cursor *pCursor)
pLast = p;
} while(1);
- pCursor->pRun = ME_FindRunInRow(editor, pLast, x, &pCursor->nOffset,
- &editor->bCaretAtEnd);
- pCursor->pPara = ME_GetParagraph(pCursor->pRun);
+ ME_FindRunInRow(editor, pLast, x, pCursor, &editor->bCaretAtEnd);
}
assert(pCursor->pRun);
assert(pCursor->pRun->type == diRun);
More information about the wine-cvs
mailing list