From 87292d81ee9695341efbcc6260c7d0564d75df5b Mon Sep 17 00:00:00 2001 From: Dylan Smith Date: Thu, 18 Sep 2008 01:17:45 -0400 Subject: [PATCH] richedit: Avoid unconditionally rewrapping text on scroll. --- dlls/riched20/paint.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c index 2ea96899730..fb50a89fa91 100644 --- a/dlls/riched20/paint.c +++ b/dlls/riched20/paint.c @@ -1046,6 +1046,9 @@ void ME_Scroll(ME_TextEditor *editor, int value, int type) { SCROLLINFO si; int nOrigPos, nNewPos, nActualScroll; + HWND hWnd; + LONG winStyle; + BOOL bScrollBarIsVisible, bScrollBarWillBeVisible; nOrigPos = ME_GetYScrollPos(editor); @@ -1083,7 +1086,15 @@ void ME_Scroll(ME_TextEditor *editor, int value, int type) ME_Repaint(editor); } - editor->vert_si.nMax = 0; + hWnd = editor->hWnd; + winStyle = GetWindowLongW(hWnd, GWL_STYLE); + bScrollBarIsVisible = (winStyle & WS_VSCROLL) != 0; + bScrollBarWillBeVisible = (editor->nHeight > editor->sizeWindow.cy) + || (winStyle & ES_DISABLENOSCROLL); + if (bScrollBarIsVisible != bScrollBarWillBeVisible) + { + ShowScrollBar(hWnd, SB_VERT, bScrollBarWillBeVisible); + } ME_UpdateScrollBar(editor); }