[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