riched20: Move scrollbar initialisation out of WM_CREATE.

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Huw Davies 2021-03-18 08:30:10 +00:00 committed by Alexandre Julliard
parent 887ffec967
commit 0ad8011723
3 changed files with 18 additions and 41 deletions

View File

@ -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:
{

View File

@ -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);

View File

@ -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: