Module: wine Branch: master Commit: c8b44555656edc8e27e6f1444fa6846539d75c1b URL: http://source.winehq.org/git/wine.git/?a=commit;h=c8b44555656edc8e27e6f1444f...
Author: Dylan Smith dylan.ah.smith@gmail.com Date: Sat Feb 7 13:21:29 2009 -0500
richedit: Removed ME_StrRelPos, ME_StrRelPos2, & ME_PosToVPos functions.
These functions were just being used for addition, so it was simpler to remove the functions and modify the places it was used.
The ME_StrRelPos2 and ME_PosToVPos were just simple wrappers around ME_StrRelPos, and ME_PosToVPos wasn't being used.
---
dlls/riched20/caret.c | 10 +++++----- dlls/riched20/editor.h | 3 --- dlls/riched20/run.c | 27 ++++++++++++--------------- dlls/riched20/string.c | 46 +++++++--------------------------------------- dlls/riched20/wrap.c | 6 ++---- 5 files changed, 26 insertions(+), 66 deletions(-)
diff --git a/dlls/riched20/caret.c b/dlls/riched20/caret.c index e0298d2..43ad44c 100644 --- a/dlls/riched20/caret.c +++ b/dlls/riched20/caret.c @@ -576,7 +576,7 @@ static BOOL ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs) { ME_DisplayItem *pRun = pCursor->pRun; - + if (nRelOfs == -1) { if (!pCursor->nOffset) @@ -608,17 +608,17 @@ ME_MoveCursorChars(ME_TextEditor *editor, ME_Cursor *pCursor, int nRelOfs) else pCursor->nOffset = pRun->member.run.strText->nLen; } - + if (pCursor->nOffset) - pCursor->nOffset = ME_StrRelPos2(pCursor->pRun->member.run.strText, pCursor->nOffset, nRelOfs); + pCursor->nOffset = pCursor->nOffset + nRelOfs; return TRUE; } else { if (!(pRun->member.run.nFlags & MERF_ENDPARA)) { - int new_ofs = ME_StrRelPos2(pRun->member.run.strText, pCursor->nOffset, nRelOfs); - + int new_ofs = pCursor->nOffset + nRelOfs; + if (new_ofs < pRun->member.run.strText->nLen) { pCursor->nOffset = new_ofs; diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h index 4c87eed..68ab596 100644 --- a/dlls/riched20/editor.h +++ b/dlls/riched20/editor.h @@ -100,9 +100,6 @@ int ME_IsSplitable(const ME_String *s); int ME_FindNonWhitespaceV(const ME_String *s, int nVChar); int ME_FindWhitespaceV(ME_String *s, int nVChar); int ME_CallWordBreakProc(ME_TextEditor *editor, ME_String *str, INT start, INT code); -int ME_StrRelPos(const ME_String *s, int nVChar, int *pRelChars); -int ME_StrRelPos2(const ME_String *s, int nVChar, int nRelChars); -int ME_PosToVPos(const ME_String *s, int nPos); void ME_StrDeleteV(ME_String *s, int nVChar, int nChars); /* smart helpers for A<->W conversions, they reserve/free memory and call MultiByte<->WideChar functions */ LPWSTR ME_ToUnicode(BOOL unicode, LPVOID psz); diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c index c36f25f..d4aaaa2 100644 --- a/dlls/riched20/run.c +++ b/dlls/riched20/run.c @@ -500,21 +500,21 @@ int ME_CharFromPoint(ME_Context *c, int cx, ME_Run *run)
/****************************************************************************** * ME_CharFromPointCursor - * + * * Returns a character position inside the run given a run-relative - * pixel horizontal position. This version rounds to the nearest character edge - * (ie. if the second character is at pixel position 8, then for cx=0..3 + * pixel horizontal position. This version rounds to the nearest character edge + * (ie. if the second character is at pixel position 8, then for cx=0..3 * it returns 0, and for cx=4..7 it returns 1). - * + * * It is used for mouse click handling, for better usability (and compatibility - * with the native control). - */ + * with the native control). + */ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) { ME_String *strRunText; /* This could point to either the run's real text, or it's masked form in a password control */ - - int fit = 0, fit1 = 0; + + int fit = 0; ME_Context c; HGDIOBJ hOldFont; SIZE sz, sz2, sz3; @@ -548,18 +548,15 @@ int ME_CharFromPointCursor(ME_TextEditor *editor, int cx, ME_Run *run) cx, &fit, NULL, &sz); if (fit != strRunText->nLen) { - int chars = 1; - GetTextExtentPoint32W(c.hDC, strRunText->szData, fit, &sz2); - fit1 = ME_StrRelPos(strRunText, fit, &chars); - GetTextExtentPoint32W(c.hDC, strRunText->szData, fit1, &sz3); + GetTextExtentPoint32W(c.hDC, strRunText->szData, fit + 1, &sz3); if (cx >= (sz2.cx+sz3.cx)/2) - fit = fit1; + fit = fit + 1; } - + if (editor->cPasswordMask) ME_DestroyString(strRunText); - + ME_UnselectStyleFont(&c, run->style, hOldFont); ME_DestroyContext(&c); return fit; diff --git a/dlls/riched20/string.c b/dlls/riched20/string.c index 2b6b559..128e3c2 100644 --- a/dlls/riched20/string.c +++ b/dlls/riched20/string.c @@ -141,49 +141,17 @@ int ME_IsSplitable(const ME_String *s) return 0; }
-int ME_StrRelPos(const ME_String *s, int nVChar, int *pRelChars) -{ - int nRelChars = *pRelChars; - - TRACE("%s,%d,&%d\n", debugstr_w(s->szData), nVChar, *pRelChars); - - assert(*pRelChars); - if (!nRelChars) - return nVChar; - - if (nRelChars>0) - nRelChars = min(*pRelChars, s->nLen - nVChar); - else - nRelChars = max(*pRelChars, -nVChar); - nVChar += nRelChars; - *pRelChars -= nRelChars; - return nVChar; -} - -int ME_StrRelPos2(const ME_String *s, int nVChar, int nRelChars) -{ - return ME_StrRelPos(s, nVChar, &nRelChars); -} - -int ME_PosToVPos(const ME_String *s, int nPos) -{ - if (!nPos) - return 0; - return ME_StrRelPos2(s, 0, nPos); -} - void ME_StrDeleteV(ME_String *s, int nVChar, int nChars) { - int end_ofs; - - assert(nVChar >=0 && nVChar <= s->nLen); + int end_ofs = nVChar + nChars; + assert(nChars >= 0); - assert(nVChar+nChars <= s->nLen); - - end_ofs = ME_StrRelPos2(s, nVChar, nChars); + assert(nVChar >= 0); assert(end_ofs <= s->nLen); - memmove(s->szData+nVChar, s->szData+end_ofs, 2*(s->nLen+1-end_ofs)); - s->nLen -= (end_ofs - nVChar); + + memmove(s->szData + nVChar, s->szData + end_ofs, + (s->nLen - end_ofs + 1) * sizeof(WCHAR)); + s->nLen -= nChars; }
int ME_FindNonWhitespaceV(const ME_String *s, int nVChar) { diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c index a51e2db..54c90eb 100644 --- a/dlls/riched20/wrap.c +++ b/dlls/riched20/wrap.c @@ -316,11 +316,9 @@ static ME_DisplayItem *ME_SplitByBacktracking(ME_WrapContext *wc, ME_DisplayItem else { /* split point inside first character - no choice but split after that char */ - int chars = 1; - int pos2 = ME_StrRelPos(run->strText, 0, &chars); - if (pos2 != len) { + if (len != 1) { /* the run is more than 1 char, so we may split */ - return ME_SplitRun(wc, piter, pos2); + return ME_SplitRun(wc, piter, 1); } /* the run is one char, can't split it */ return piter;