From 0d4707c284808df6d87eeb5908df29693889eccc Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Wed, 15 Aug 2007 10:39:43 -0700 Subject: [PATCH] riched20: Properly calculate control display height. --- dlls/riched20/editor.c | 1 + dlls/riched20/editstr.h | 1 + dlls/riched20/paint.c | 2 +- dlls/riched20/wrap.c | 2 ++ 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c index 740828fd2e9..f46c4b20377 100644 --- a/dlls/riched20/editor.c +++ b/dlls/riched20/editor.c @@ -1131,6 +1131,7 @@ ME_TextEditor *ME_MakeEditor(HWND hWnd) { ed->pCursors[1].pRun = ME_FindItemFwd(ed->pBuffer->pFirst, diRun); ed->pCursors[1].nOffset = 0; ed->nLastTotalLength = ed->nTotalLength = 0; + ed->nHeight = 0; ed->nUDArrowX = -1; ed->nSequence = 0; ed->rgbBackColor = -1; diff --git a/dlls/riched20/editstr.h b/dlls/riched20/editstr.h index 7bb91d52445..b86aeba629b 100644 --- a/dlls/riched20/editstr.h +++ b/dlls/riched20/editstr.h @@ -291,6 +291,7 @@ typedef struct tagME_TextEditor int nCursors; SIZE sizeWindow; int nTotalLength, nLastTotalLength; + int nHeight; int nUDArrowX; int nSequence; COLORREF rgbBackColor; diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c index 676543efc42..215477b4dee 100644 --- a/dlls/riched20/paint.c +++ b/dlls/riched20/paint.c @@ -460,7 +460,7 @@ void ME_Scroll(ME_TextEditor *editor, int value, int type) hWnd = editor->hWnd; si.cbSize = sizeof(si); bScrollBarWasVisible = ME_GetYScrollVisible(editor); - bScrollBarWillBeVisible = editor->nTotalLength > editor->sizeWindow.cy; + bScrollBarWillBeVisible = editor->nHeight > editor->sizeWindow.cy; if (bScrollBarWasVisible != bScrollBarWillBeVisible) { diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c index af6e9a9152e..c8b57104a1b 100644 --- a/dlls/riched20/wrap.c +++ b/dlls/riched20/wrap.c @@ -429,11 +429,13 @@ BOOL ME_WrapMarkedParagraphs(ME_TextEditor *editor) { ME_InitContext(&c, editor, hDC); c.pt.x = 0; c.pt.y = 0; + editor->nHeight = 0; item = editor->pBuffer->pFirst->next; while(item != editor->pBuffer->pLast) { BOOL bRedraw = FALSE; assert(item->type == diParagraph); + editor->nHeight = max(editor->nHeight, item->member.para.nYPos); if ((item->member.para.nFlags & MEPF_REWRAP) || (item->member.para.nYPos != c.pt.y)) bRedraw = TRUE;