[PATCH 5/5] riched20: Move scrollbar initialisation out of WM_CREATE.

Huw Davies huw at codeweavers.com
Thu Mar 18 03:30:10 CDT 2021


Signed-off-by: Huw Davies <huw at codeweavers.com>
---
 dlls/riched20/editor.c       | 43 ++++++++++++------------------------
 dlls/riched20/tests/editor.c | 10 ---------
 dlls/riched20/txthost.c      |  6 +++--
 3 files changed, 18 insertions(+), 41 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 2ef277d9801..2ae97e1818b 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -3019,6 +3019,20 @@ ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10)
   ed->horz_si.nPage = 0;
   ed->horz_si.nPos = 0;
 
+  if (ed->scrollbars & ES_DISABLENOSCROLL)
+  {
+      if (ed->scrollbars & WS_VSCROLL)
+      {
+          ITextHost_TxSetScrollRange( texthost, SB_VERT, 0, 1, TRUE );
+          ITextHost_TxEnableScrollBar( texthost, SB_VERT, ESB_DISABLE_BOTH );
+      }
+      if (ed->scrollbars & WS_HSCROLL)
+      {
+          ITextHost_TxSetScrollRange( texthost, SB_HORZ, 0, 1, TRUE );
+          ITextHost_TxEnableScrollBar( texthost, SB_HORZ, ESB_DISABLE_BOTH );
+      }
+  }
+
   ed->wheel_remain = 0;
 
   list_init( &ed->reobj_list );
@@ -3160,33 +3174,6 @@ static void ME_SetText(ME_TextEditor *editor, void *text, BOOL unicode)
   ME_EndToUnicode(codepage, wszText);
 }
 
-static LRESULT ME_WmCreate( ME_TextEditor *editor )
-{
-  INT max;
-
-  max = (editor->scrollbars & ES_DISABLENOSCROLL) ? 1 : 0;
-  if (~editor->scrollbars & ES_DISABLENOSCROLL || editor->scrollbars & WS_VSCROLL)
-    ITextHost_TxSetScrollRange(editor->texthost, SB_VERT, 0, max, TRUE);
-
-  if (~editor->scrollbars & ES_DISABLENOSCROLL || editor->scrollbars & WS_HSCROLL)
-    ITextHost_TxSetScrollRange(editor->texthost, SB_HORZ, 0, max, TRUE);
-
-  if (editor->scrollbars & ES_DISABLENOSCROLL)
-  {
-    if (editor->scrollbars & WS_VSCROLL)
-    {
-      ITextHost_TxEnableScrollBar(editor->texthost, SB_VERT, ESB_DISABLE_BOTH);
-      ITextHost_TxShowScrollBar(editor->texthost, SB_VERT, TRUE);
-    }
-    if (editor->scrollbars & WS_HSCROLL)
-    {
-      ITextHost_TxEnableScrollBar(editor->texthost, SB_HORZ, ESB_DISABLE_BOTH);
-      ITextHost_TxShowScrollBar(editor->texthost, SB_HORZ, TRUE);
-    }
-  }
-  return 0;
-}
-
 static LRESULT handle_EM_SETCHARFORMAT( ME_TextEditor *editor, WPARAM flags, const CHARFORMAT2W *fmt_in )
 {
     CHARFORMAT2W fmt;
@@ -3891,8 +3878,6 @@ LRESULT editor_handle_message( ME_TextEditor *editor, UINT msg, WPARAM wParam,
 
     return (wParam >= 0x40000) ? 0 : MAKELONG( pt.x, pt.y );
   }
-  case WM_CREATE:
-    return ME_WmCreate( editor );
   case WM_LBUTTONDBLCLK:
   case WM_LBUTTONDOWN:
   {
diff --git a/dlls/riched20/tests/editor.c b/dlls/riched20/tests/editor.c
index 19a1af25f73..8ef88bd1b21 100644
--- a/dlls/riched20/tests/editor.c
+++ b/dlls/riched20/tests/editor.c
@@ -3109,11 +3109,9 @@ static void test_scrollbar_visibility(void)
   GetScrollInfo(hwndRichEdit, SB_VERT, &si);
   ok (((GetWindowLongA(hwndRichEdit, GWL_STYLE) & WS_VSCROLL) != 0),
     "Vertical scrollbar is invisible, should be visible.\n");
-  todo_wine {
   ok(si.nPage == 0 && si.nMin == 0 && si.nMax == 100,
         "reported page/range is %d (%d..%d) expected 0 (0..100)\n",
         si.nPage, si.nMin, si.nMax);
-  }
 
   /* Ditto, see above */
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, 0);
@@ -3123,11 +3121,9 @@ static void test_scrollbar_visibility(void)
   GetScrollInfo(hwndRichEdit, SB_VERT, &si);
   ok (((GetWindowLongA(hwndRichEdit, GWL_STYLE) & WS_VSCROLL) != 0),
     "Vertical scrollbar is invisible, should be visible.\n");
-  todo_wine {
   ok(si.nPage == 0 && si.nMin == 0 && si.nMax == 100,
         "reported page/range is %d (%d..%d) expected 0 (0..100)\n",
         si.nPage, si.nMin, si.nMax);
-  }
 
   /* Ditto, see above */
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"a");
@@ -3137,11 +3133,9 @@ static void test_scrollbar_visibility(void)
   GetScrollInfo(hwndRichEdit, SB_VERT, &si);
   ok (((GetWindowLongA(hwndRichEdit, GWL_STYLE) & WS_VSCROLL) != 0),
     "Vertical scrollbar is invisible, should be visible.\n");
-  todo_wine {
   ok(si.nPage == 0 && si.nMin == 0 && si.nMax == 100,
         "reported page/range is %d (%d..%d) expected 0 (0..100)\n",
         si.nPage, si.nMin, si.nMax);
-  }
 
   /* Ditto, see above */
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"a\na");
@@ -3151,11 +3145,9 @@ static void test_scrollbar_visibility(void)
   GetScrollInfo(hwndRichEdit, SB_VERT, &si);
   ok (((GetWindowLongA(hwndRichEdit, GWL_STYLE) & WS_VSCROLL) != 0),
     "Vertical scrollbar is invisible, should be visible.\n");
-  todo_wine {
   ok(si.nPage == 0 && si.nMin == 0 && si.nMax == 100,
         "reported page/range is %d (%d..%d) expected 0 (0..100)\n",
         si.nPage, si.nMin, si.nMax);
-  }
 
   /* Ditto, see above */
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, 0);
@@ -3165,11 +3157,9 @@ static void test_scrollbar_visibility(void)
   GetScrollInfo(hwndRichEdit, SB_VERT, &si);
   ok (((GetWindowLongA(hwndRichEdit, GWL_STYLE) & WS_VSCROLL) != 0),
     "Vertical scrollbar is invisible, should be visible.\n");
-  todo_wine {
   ok(si.nPage == 0 && si.nMin == 0 && si.nMax == 100,
         "reported page/range is %d (%d..%d) expected 0 (0..100)\n",
         si.nPage, si.nMin, si.nMax);
-  }
 
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)text);
   SendMessageA(hwndRichEdit, WM_SETTEXT, 0, 0);
diff --git a/dlls/riched20/txthost.c b/dlls/riched20/txthost.c
index 6834be684f9..5797046317c 100644
--- a/dlls/riched20/txthost.c
+++ b/dlls/riched20/txthost.c
@@ -63,6 +63,10 @@ static void host_init_props( struct host *host )
 
     style = GetWindowLongW( host->window, GWL_STYLE );
 
+    /* text services assumes the scrollbars are originally not shown, so hide them.
+       However with ES_DISABLENOSCROLL it'll immediately show them, so don't bother */
+    if (!(style & ES_DISABLENOSCROLL)) ShowScrollBar( host->window, SB_BOTH, FALSE );
+
     host->scrollbars = style & (WS_VSCROLL | WS_HSCROLL | ES_AUTOVSCROLL |
                                 ES_AUTOHSCROLL | ES_DISABLENOSCROLL);
     if (style & WS_VSCROLL) host->scrollbars |= ES_AUTOVSCROLL;
@@ -989,8 +993,6 @@ static LRESULT RichEditWndProc_common( HWND hwnd, UINT msg, WPARAM wparam,
         }
         ITextServices_TxSetText( host->text_srv, textW );
         if (lparam) ME_EndToUnicode( codepage, textW );
-
-        hr = ITextServices_TxSendMessage( host->text_srv, msg, wparam, lparam, &res );
         break;
     }
     case WM_DESTROY:
-- 
2.23.0




More information about the wine-devel mailing list