Dylan Smith : richedit: Scroll up with less than page of text with ES_DISABLENOSCROLL.

Alexandre Julliard julliard at winehq.org
Tue Jan 6 08:23:11 CST 2009


Module: wine
Branch: master
Commit: a16db0afc6f784faa1c1bf3d881dd5a7bc965e8a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a16db0afc6f784faa1c1bf3d881dd5a7bc965e8a

Author: Dylan Smith <dylan.ah.smith at gmail.com>
Date:   Mon Jan  5 13:14:18 2009 -0500

richedit: Scroll up with less than page of text with ES_DISABLENOSCROLL.

---

 dlls/riched20/paint.c |   29 ++++++++++++++---------------
 1 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/dlls/riched20/paint.c b/dlls/riched20/paint.c
index 94a1f87..1bfb216 100644
--- a/dlls/riched20/paint.c
+++ b/dlls/riched20/paint.c
@@ -1083,7 +1083,15 @@ void ME_UpdateScrollBar(ME_TextEditor *editor)
   si.cbSize = sizeof(si);
   bScrollBarWasVisible = ME_GetYScrollVisible(editor);
   bScrollBarWillBeVisible = editor->nTotalLength > editor->sizeWindow.cy;
-  
+
+  if (editor->vert_si.nPos && !bScrollBarWillBeVisible)
+  {
+    ME_ScrollAbs(editor, 0);
+    /* ME_ScrollAbs will call this function,
+     * so nothing else needs to be done here. */
+    return;
+  }
+
   si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS;
   if (GetWindowLongW(hWnd, GWL_STYLE) & ES_DISABLENOSCROLL)
   {
@@ -1102,26 +1110,17 @@ void ME_UpdateScrollBar(ME_TextEditor *editor)
   si.nMax = editor->nTotalLength;
   si.nPos = editor->vert_si.nPos;
   si.nPage = editor->sizeWindow.cy;
-     
-  if (!(si.nMin == editor->vert_si.nMin && si.nMax == editor->vert_si.nMax && si.nPage == editor->vert_si.nPage))
+
+  if (!(si.nMin == editor->vert_si.nMin &&
+        si.nMax == editor->vert_si.nMax &&
+        si.nPage == editor->vert_si.nPage))
   {
     TRACE("min=%d max=%d page=%d\n", si.nMin, si.nMax, si.nPage);
     editor->vert_si.nMin = si.nMin;
     editor->vert_si.nMax = si.nMax;
     editor->vert_si.nPage = si.nPage;
-    if (bScrollBarWillBeVisible)
-    {
+    if (bScrollBarWillBeVisible || bScrollBarWasVisible)
       SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
-    }
-    else
-    {
-      if (bScrollBarWasVisible && !(si.fMask & SIF_DISABLENOSCROLL))
-      {
-        SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
-        ShowScrollBar(hWnd, SB_VERT, FALSE);
-        ME_ScrollAbs(editor, 0);
-      }
-    }
   }
 }
 




More information about the wine-cvs mailing list