EDIT_EM_ReplaceSel should simply truncate characters that exceed the

limit.
oldstable
Krishna Murthy 2004-05-29 00:21:51 +00:00 committed by Alexandre Julliard
parent b1abca8a5d
commit 4af4ba4c7a
1 changed files with 12 additions and 9 deletions

View File

@ -199,7 +199,7 @@ static void EDIT_ConfinePoint(EDITSTATE *es, LPINT x, LPINT y);
static void EDIT_GetLineRect(EDITSTATE *es, INT line, INT scol, INT ecol, LPRECT rc);
static void EDIT_InvalidateText(EDITSTATE *es, INT start, INT end);
static void EDIT_LockBuffer(EDITSTATE *es);
static BOOL EDIT_MakeFit(EDITSTATE *es, UINT size, BOOL honor_limit);
static BOOL EDIT_MakeFit(EDITSTATE *es, UINT size);
static BOOL EDIT_MakeUndoFit(EDITSTATE *es, UINT size);
static void EDIT_MoveBackward(EDITSTATE *es, BOOL extend);
static void EDIT_MoveEnd(EDITSTATE *es, BOOL extend);
@ -1716,17 +1716,11 @@ static void EDIT_InvalidateText(EDITSTATE *es, INT start, INT end)
* EDIT_MakeFit
*
* Try to fit size + 1 characters in the buffer.
* Constrain to limits if honor_limit is TRUE.
*/
static BOOL EDIT_MakeFit(EDITSTATE *es, UINT size, BOOL honor_limit)
static BOOL EDIT_MakeFit(EDITSTATE *es, UINT size)
{
HLOCAL hNew32W;
if ((honor_limit) && (es->buffer_limit > 0) && (size > es->buffer_limit)) {
EDIT_NOTIFY_PARENT(es, EN_MAXTEXT, "EN_MAXTEXT");
return FALSE;
}
if (size <= es->buffer_size)
return TRUE;
@ -2896,6 +2890,7 @@ static void EDIT_EM_ReplaceSel(EDITSTATE *es, BOOL can_undo, LPCWSTR lpsz_replac
UINT s;
UINT e;
UINT i;
UINT size;
LPWSTR p;
HRGN hrgn = 0;
@ -2910,7 +2905,15 @@ static void EDIT_EM_ReplaceSel(EDITSTATE *es, BOOL can_undo, LPCWSTR lpsz_replac
ORDER_UINT(s, e);
if (!EDIT_MakeFit(es, tl - (e - s) + strl, honor_limit))
/* Issue the EN_MAXTEXT notification and continue with replacing text
* such that buffer limit is honored. */
size = tl - (e - s) + strl;
if ((honor_limit) && (es->buffer_limit > 0) && (size > es->buffer_limit)) {
EDIT_NOTIFY_PARENT(es, EN_MAXTEXT, "EN_MAXTEXT");
strl = es->buffer_limit - (tl - (e-s));
}
if (!EDIT_MakeFit(es, tl - (e - s) + strl))
return;
if (e != s) {