mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
[RICHED20_WINETEST] Sync with Wine Staging 1.9.11. CORE-11368
svn path=/trunk/; revision=71587
This commit is contained in:
parent
7dcb748d30
commit
4460ce3990
|
@ -601,6 +601,7 @@ static void test_EM_POSFROMCHAR(void)
|
||||||
POINTL pt;
|
POINTL pt;
|
||||||
LOCALESIGNATURE sig;
|
LOCALESIGNATURE sig;
|
||||||
BOOL rtl;
|
BOOL rtl;
|
||||||
|
PARAFORMAT2 fmt;
|
||||||
static const char text[] = "aa\n"
|
static const char text[] = "aa\n"
|
||||||
"this is a long line of text that should be longer than the "
|
"this is a long line of text that should be longer than the "
|
||||||
"control's width\n"
|
"control's width\n"
|
||||||
|
@ -727,6 +728,18 @@ static void test_EM_POSFROMCHAR(void)
|
||||||
SendMessageA(hwndRichEdit, EM_POSFROMCHAR, (WPARAM)&pt, -1);
|
SendMessageA(hwndRichEdit, EM_POSFROMCHAR, (WPARAM)&pt, -1);
|
||||||
ok(pt.x == 1, "pt.x = %d\n", pt.x);
|
ok(pt.x == 1, "pt.x = %d\n", pt.x);
|
||||||
|
|
||||||
|
/* test negative indentation */
|
||||||
|
SendMessageA(hwndRichEdit, WM_SETTEXT, 0,
|
||||||
|
(LPARAM)"{\\rtf1\\pard\\fi-200\\li-200\\f1 TestSomeText\\par}");
|
||||||
|
SendMessageA(hwndRichEdit, EM_POSFROMCHAR, (WPARAM)&pt, 0);
|
||||||
|
ok(pt.x == 1, "pt.x = %d\n", pt.x);
|
||||||
|
|
||||||
|
fmt.cbSize = sizeof(fmt);
|
||||||
|
SendMessageA(hwndRichEdit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt);
|
||||||
|
ok(fmt.dxStartIndent == -400, "got %d\n", fmt.dxStartIndent);
|
||||||
|
ok(fmt.dxOffset == 200, "got %d\n", fmt.dxOffset);
|
||||||
|
ok(fmt.wAlignment == PFA_LEFT, "got %d\n", fmt.wAlignment);
|
||||||
|
|
||||||
DestroyWindow(hwndRichEdit);
|
DestroyWindow(hwndRichEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3281,11 +3294,12 @@ static void test_EM_SETUNDOLIMIT(void)
|
||||||
|
|
||||||
SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"x");
|
SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)"x");
|
||||||
cr.cpMin = 0;
|
cr.cpMin = 0;
|
||||||
cr.cpMax = 1;
|
cr.cpMax = -1;
|
||||||
|
SendMessageA(hwndRichEdit, EM_EXSETSEL, 0, (LPARAM)&cr);
|
||||||
|
|
||||||
SendMessageA(hwndRichEdit, WM_COPY, 0, 0);
|
SendMessageA(hwndRichEdit, WM_COPY, 0, 0);
|
||||||
/*Load "x" into the clipboard. Paste is an easy, undo'able operation.
|
/*Load "x" into the clipboard. Paste is an easy, undo'able operation.
|
||||||
also, multiple pastes don't combine like WM_CHAR would */
|
also, multiple pastes don't combine like WM_CHAR would */
|
||||||
SendMessageA(hwndRichEdit, EM_EXSETSEL, 0, (LPARAM)&cr);
|
|
||||||
|
|
||||||
/* first case - check the default */
|
/* first case - check the default */
|
||||||
SendMessageA(hwndRichEdit,EM_EMPTYUNDOBUFFER, 0,0);
|
SendMessageA(hwndRichEdit,EM_EMPTYUNDOBUFFER, 0,0);
|
||||||
|
@ -3808,7 +3822,7 @@ static void test_EM_SETTEXTEX(void)
|
||||||
getText.flags = GT_DEFAULT;
|
getText.flags = GT_DEFAULT;
|
||||||
getText.lpDefaultChar = NULL;
|
getText.lpDefaultChar = NULL;
|
||||||
getText.lpUsedDefChar = NULL;
|
getText.lpUsedDefChar = NULL;
|
||||||
memset(buf, 0, MAX_BUF_LEN);
|
memset(buf, 0, sizeof(buf));
|
||||||
SendMessageA(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM)buf);
|
SendMessageA(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM)buf);
|
||||||
ok(lstrcmpW(buf, TestItem2) == 0,
|
ok(lstrcmpW(buf, TestItem2) == 0,
|
||||||
"EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
|
"EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
|
||||||
|
@ -3823,7 +3837,7 @@ static void test_EM_SETTEXTEX(void)
|
||||||
getText.flags = GT_USECRLF; /* <-- asking for CR -> CRLF conversion */
|
getText.flags = GT_USECRLF; /* <-- asking for CR -> CRLF conversion */
|
||||||
getText.lpDefaultChar = NULL;
|
getText.lpDefaultChar = NULL;
|
||||||
getText.lpUsedDefChar = NULL;
|
getText.lpUsedDefChar = NULL;
|
||||||
memset(buf, 0, MAX_BUF_LEN);
|
memset(buf, 0, sizeof(buf));
|
||||||
SendMessageA(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM)buf);
|
SendMessageA(hwndRichEdit, EM_GETTEXTEX, (WPARAM)&getText, (LPARAM)buf);
|
||||||
ok(lstrcmpW(buf, TestItem1) == 0,
|
ok(lstrcmpW(buf, TestItem1) == 0,
|
||||||
"EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
|
"EM_GETTEXTEX results not what was set by EM_SETTEXTEX\n");
|
||||||
|
@ -5032,7 +5046,7 @@ static void test_EM_REPLACESEL(int redraw)
|
||||||
todo_wine ok(!strcmp(buffer, "WTestSomeTextne"), "WM_GETTEXT returned incorrect string\n");
|
todo_wine ok(!strcmp(buffer, "WTestSomeTextne"), "WM_GETTEXT returned incorrect string\n");
|
||||||
|
|
||||||
if (!redraw)
|
if (!redraw)
|
||||||
/* This is needed to avoid interferring with keybd_event calls
|
/* This is needed to avoid interfering with keybd_event calls
|
||||||
* on other tests that simulate keyboard events. */
|
* on other tests that simulate keyboard events. */
|
||||||
SendMessageA(hwndRichEdit, WM_SETREDRAW, TRUE, 0);
|
SendMessageA(hwndRichEdit, WM_SETREDRAW, TRUE, 0);
|
||||||
|
|
||||||
|
@ -5403,9 +5417,10 @@ static void test_EM_STREAMIN(void)
|
||||||
EDITSTREAM es;
|
EDITSTREAM es;
|
||||||
char buffer[1024] = {0}, tmp[16];
|
char buffer[1024] = {0}, tmp[16];
|
||||||
CHARRANGE range;
|
CHARRANGE range;
|
||||||
|
PARAFORMAT2 fmt;
|
||||||
|
|
||||||
const char * streamText0 = "{\\rtf1 TestSomeText}";
|
const char * streamText0 = "{\\rtf1\\fi100\\li200\\rtlpar\\qr TestSomeText}";
|
||||||
const char * streamText0a = "{\\rtf1 TestSomeText\\par}";
|
const char * streamText0a = "{\\rtf1\\fi100\\li200\\rtlpar\\qr TestSomeText\\par}";
|
||||||
const char * streamText0b = "{\\rtf1 TestSomeText\\par\\par}";
|
const char * streamText0b = "{\\rtf1 TestSomeText\\par\\par}";
|
||||||
const char * ptr;
|
const char * ptr;
|
||||||
|
|
||||||
|
@ -5462,6 +5477,17 @@ static void test_EM_STREAMIN(void)
|
||||||
ok (result == 0,
|
ok (result == 0,
|
||||||
"EM_STREAMIN: Test 0 set wrong text: Result: %s\n",buffer);
|
"EM_STREAMIN: Test 0 set wrong text: Result: %s\n",buffer);
|
||||||
ok(es.dwError == 0, "EM_STREAMIN: Test 0 set error %d, expected %d\n", es.dwError, 0);
|
ok(es.dwError == 0, "EM_STREAMIN: Test 0 set error %d, expected %d\n", es.dwError, 0);
|
||||||
|
/* Show that para fmts are ignored */
|
||||||
|
range.cpMin = 2;
|
||||||
|
range.cpMax = 2;
|
||||||
|
result = SendMessageA(hwndRichEdit, EM_EXSETSEL, 0, (LPARAM)&range);
|
||||||
|
memset(&fmt, 0xcc, sizeof(fmt));
|
||||||
|
fmt.cbSize = sizeof(fmt);
|
||||||
|
result = SendMessageA(hwndRichEdit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt);
|
||||||
|
ok(fmt.dxStartIndent == 0, "got %d\n", fmt.dxStartIndent);
|
||||||
|
ok(fmt.dxOffset == 0, "got %d\n", fmt.dxOffset);
|
||||||
|
ok(fmt.wAlignment == PFA_LEFT, "got %d\n", fmt.wAlignment);
|
||||||
|
ok((fmt.wEffects & PFE_RTLPARA) == 0, "got %x\n", fmt.wEffects);
|
||||||
|
|
||||||
/* Native richedit 2.0 ignores last \par */
|
/* Native richedit 2.0 ignores last \par */
|
||||||
ptr = streamText0a;
|
ptr = streamText0a;
|
||||||
|
@ -5478,6 +5504,17 @@ static void test_EM_STREAMIN(void)
|
||||||
ok (result == 0,
|
ok (result == 0,
|
||||||
"EM_STREAMIN: Test 0-a set wrong text: Result: %s\n",buffer);
|
"EM_STREAMIN: Test 0-a set wrong text: Result: %s\n",buffer);
|
||||||
ok(es.dwError == 0, "EM_STREAMIN: Test 0-a set error %d, expected %d\n", es.dwError, 0);
|
ok(es.dwError == 0, "EM_STREAMIN: Test 0-a set error %d, expected %d\n", es.dwError, 0);
|
||||||
|
/* This time para fmts are processed */
|
||||||
|
range.cpMin = 2;
|
||||||
|
range.cpMax = 2;
|
||||||
|
result = SendMessageA(hwndRichEdit, EM_EXSETSEL, 0, (LPARAM)&range);
|
||||||
|
memset(&fmt, 0xcc, sizeof(fmt));
|
||||||
|
fmt.cbSize = sizeof(fmt);
|
||||||
|
result = SendMessageA(hwndRichEdit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt);
|
||||||
|
ok(fmt.dxStartIndent == 300, "got %d\n", fmt.dxStartIndent);
|
||||||
|
ok(fmt.dxOffset == -100, "got %d\n", fmt.dxOffset);
|
||||||
|
ok(fmt.wAlignment == PFA_RIGHT, "got %d\n", fmt.wAlignment);
|
||||||
|
ok((fmt.wEffects & PFE_RTLPARA) == PFE_RTLPARA, "got %x\n", fmt.wEffects);
|
||||||
|
|
||||||
/* Native richedit 2.0 ignores last \par, next-to-last \par appears */
|
/* Native richedit 2.0 ignores last \par, next-to-last \par appears */
|
||||||
es.dwCookie = (DWORD_PTR)&streamText0b;
|
es.dwCookie = (DWORD_PTR)&streamText0b;
|
||||||
|
@ -8219,7 +8256,7 @@ static void test_alignment_style(void)
|
||||||
pf.cbSize = sizeof(PARAFORMAT2);
|
pf.cbSize = sizeof(PARAFORMAT2);
|
||||||
pf.dwMask = -1;
|
pf.dwMask = -1;
|
||||||
SendMessageW(richedit, EM_GETPARAFORMAT, SCF_SELECTION, (LPARAM)&pf);
|
SendMessageW(richedit, EM_GETPARAFORMAT, SCF_SELECTION, (LPARAM)&pf);
|
||||||
ok(pf.wAlignment == ES_CENTER, "got %d expected ES_CENTER\n", pf.wAlignment);
|
ok(pf.wAlignment == PFA_LEFT, "got %d expected PFA_LEFT\n", pf.wAlignment);
|
||||||
DestroyWindow(richedit);
|
DestroyWindow(richedit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8254,6 +8291,96 @@ static void test_WM_GETTEXTLENGTH(void)
|
||||||
DestroyWindow(hwndRichEdit);
|
DestroyWindow(hwndRichEdit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_rtf_specials(void)
|
||||||
|
{
|
||||||
|
const char *specials = "{\\rtf1\\emspace\\enspace\\bullet\\lquote"
|
||||||
|
"\\rquote\\ldblquote\\rdblquote\\ltrmark\\rtlmark\\zwj\\zwnj}";
|
||||||
|
const WCHAR expect_specials[] = {' ',' ',0x2022,0x2018,0x2019,0x201c,
|
||||||
|
0x201d,0x200e,0x200f,0x200d,0x200c};
|
||||||
|
const char *pard = "{\\rtf1 ABC\\rtlpar\\par DEF\\par HIJ\\pard\\par}";
|
||||||
|
HWND edit = new_richeditW( NULL );
|
||||||
|
EDITSTREAM es;
|
||||||
|
WCHAR buf[80];
|
||||||
|
LRESULT result;
|
||||||
|
PARAFORMAT2 fmt;
|
||||||
|
|
||||||
|
es.dwCookie = (DWORD_PTR)&specials;
|
||||||
|
es.dwError = 0;
|
||||||
|
es.pfnCallback = test_EM_STREAMIN_esCallback;
|
||||||
|
result = SendMessageA( edit, EM_STREAMIN, SF_RTF, (LPARAM)&es );
|
||||||
|
ok( result == 11, "got %ld\n", result );
|
||||||
|
|
||||||
|
result = SendMessageW( edit, WM_GETTEXT, sizeof(buf)/sizeof(buf[0]), (LPARAM)buf );
|
||||||
|
ok( result == sizeof(expect_specials)/sizeof(expect_specials[0]), "got %ld\n", result );
|
||||||
|
ok( !memcmp( buf, expect_specials, sizeof(expect_specials) ), "got %s\n", wine_dbgstr_w(buf) );
|
||||||
|
|
||||||
|
/* Show that \rtlpar propagates to the second paragraph and is
|
||||||
|
reset by \pard in the third. */
|
||||||
|
es.dwCookie = (DWORD_PTR)&pard;
|
||||||
|
result = SendMessageA( edit, EM_STREAMIN, SF_RTF, (LPARAM)&es );
|
||||||
|
ok( result == 11, "got %ld\n", result );
|
||||||
|
|
||||||
|
fmt.cbSize = sizeof(fmt);
|
||||||
|
SendMessageW( edit, EM_SETSEL, 1, 1 );
|
||||||
|
SendMessageW( edit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt );
|
||||||
|
ok( fmt.dwMask & PFM_RTLPARA, "rtl para mask not set\n" );
|
||||||
|
ok( fmt.wEffects & PFE_RTLPARA, "rtl para not set\n" );
|
||||||
|
SendMessageW( edit, EM_SETSEL, 5, 5 );
|
||||||
|
SendMessageW( edit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt );
|
||||||
|
ok( fmt.dwMask & PFM_RTLPARA, "rtl para mask not set\n" );
|
||||||
|
ok( fmt.wEffects & PFE_RTLPARA, "rtl para not set\n" );
|
||||||
|
SendMessageW( edit, EM_SETSEL, 9, 9 );
|
||||||
|
SendMessageW( edit, EM_GETPARAFORMAT, 0, (LPARAM)&fmt );
|
||||||
|
ok( fmt.dwMask & PFM_RTLPARA, "rtl para mask not set\n" );
|
||||||
|
ok( !(fmt.wEffects & PFE_RTLPARA), "rtl para set\n" );
|
||||||
|
|
||||||
|
DestroyWindow( edit );
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_background(void)
|
||||||
|
{
|
||||||
|
HWND hwndRichEdit = new_richedit(NULL);
|
||||||
|
|
||||||
|
/* set the background color to black */
|
||||||
|
ValidateRect(hwndRichEdit, NULL);
|
||||||
|
SendMessageA(hwndRichEdit, EM_SETBKGNDCOLOR, FALSE, RGB(0, 0, 0));
|
||||||
|
ok(GetUpdateRect(hwndRichEdit, NULL, FALSE), "Update rectangle is empty!\n");
|
||||||
|
|
||||||
|
DestroyWindow(hwndRichEdit);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_window_classes(void)
|
||||||
|
{
|
||||||
|
static const struct
|
||||||
|
{
|
||||||
|
const char *class;
|
||||||
|
BOOL success;
|
||||||
|
} test[] =
|
||||||
|
{
|
||||||
|
{ "RichEdit", FALSE },
|
||||||
|
{ "RichEdit20A", TRUE },
|
||||||
|
{ "RichEdit20W", TRUE },
|
||||||
|
{ "RichEdit50A", FALSE },
|
||||||
|
{ "RichEdit50W", FALSE }
|
||||||
|
};
|
||||||
|
int i;
|
||||||
|
HWND hwnd;
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(test)/sizeof(test[0]); i++)
|
||||||
|
{
|
||||||
|
SetLastError(0xdeadbeef);
|
||||||
|
hwnd = CreateWindowExA(0, test[i].class, NULL, WS_POPUP, 0, 0, 0, 0, 0, 0, 0, NULL);
|
||||||
|
todo_wine_if(!strcmp(test[i].class, "RichEdit50A") || !strcmp(test[i].class, "RichEdit50W"))
|
||||||
|
ok(!hwnd == !test[i].success, "CreateWindow(%s) should %s\n",
|
||||||
|
test[i].class, test[i].success ? "succeed" : "fail");
|
||||||
|
if (!hwnd)
|
||||||
|
todo_wine
|
||||||
|
ok(GetLastError() == ERROR_CANNOT_FIND_WND_CLASS, "got %d\n", GetLastError());
|
||||||
|
else
|
||||||
|
DestroyWindow(hwnd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST( editor )
|
START_TEST( editor )
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
|
@ -8263,6 +8390,7 @@ START_TEST( editor )
|
||||||
ok(hmoduleRichEdit != NULL, "error: %d\n", (int) GetLastError());
|
ok(hmoduleRichEdit != NULL, "error: %d\n", (int) GetLastError());
|
||||||
is_lang_japanese = (PRIMARYLANGID(GetUserDefaultLangID()) == LANG_JAPANESE);
|
is_lang_japanese = (PRIMARYLANGID(GetUserDefaultLangID()) == LANG_JAPANESE);
|
||||||
|
|
||||||
|
test_window_classes();
|
||||||
test_WM_CHAR();
|
test_WM_CHAR();
|
||||||
test_EM_FINDTEXT(FALSE);
|
test_EM_FINDTEXT(FALSE);
|
||||||
test_EM_FINDTEXT(TRUE);
|
test_EM_FINDTEXT(TRUE);
|
||||||
|
@ -8323,6 +8451,8 @@ START_TEST( editor )
|
||||||
test_EM_SETREADONLY();
|
test_EM_SETREADONLY();
|
||||||
test_EM_SETFONTSIZE();
|
test_EM_SETFONTSIZE();
|
||||||
test_alignment_style();
|
test_alignment_style();
|
||||||
|
test_rtf_specials();
|
||||||
|
test_background();
|
||||||
|
|
||||||
/* Set the environment variable WINETEST_RICHED20 to keep windows
|
/* Set the environment variable WINETEST_RICHED20 to keep windows
|
||||||
* responsive and open for 30 seconds. This is useful for debugging.
|
* responsive and open for 30 seconds. This is useful for debugging.
|
||||||
|
|
|
@ -53,6 +53,7 @@ static HWND new_window(LPCSTR lpClassName, DWORD dwStyle, HWND parent)
|
||||||
HWND hwnd = CreateWindowA(lpClassName, NULL,
|
HWND hwnd = CreateWindowA(lpClassName, NULL,
|
||||||
dwStyle | WS_POPUP | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE,
|
dwStyle | WS_POPUP | WS_HSCROLL | WS_VSCROLL | WS_VISIBLE,
|
||||||
0, 0, 200, 60, parent, NULL, hmoduleRichEdit, NULL);
|
0, 0, 200, 60, parent, NULL, hmoduleRichEdit, NULL);
|
||||||
|
ok(hwnd != NULL, "class: %s, error: %d\n", lpClassName, (int) GetLastError());
|
||||||
return hwnd;
|
return hwnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -761,6 +762,65 @@ static void test_ITextRange_GetChar(void)
|
||||||
ITextRange_Release(txtRge);
|
ITextRange_Release(txtRge);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Helper function for testing ITextRange_ScrollIntoView */
|
||||||
|
static void check_range(HWND w, ITextDocument* doc, int first, int lim,
|
||||||
|
LONG bStart, int expected_nonzero)
|
||||||
|
{
|
||||||
|
SCROLLINFO si;
|
||||||
|
ITextRange *txtRge = NULL;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
si.cbSize = sizeof(SCROLLINFO);
|
||||||
|
si.fMask = SIF_POS | SIF_RANGE;
|
||||||
|
|
||||||
|
hres = ITextDocument_Range(doc, first, lim, &txtRge);
|
||||||
|
ok(hres == S_OK, "got 0x%08x\n", hres);
|
||||||
|
hres = ITextRange_ScrollIntoView(txtRge, bStart);
|
||||||
|
ok(hres == S_OK, "got 0x%08x\n", hres);
|
||||||
|
GetScrollInfo(w, SB_VERT, &si);
|
||||||
|
if (expected_nonzero) {
|
||||||
|
ok(si.nPos != 0,
|
||||||
|
"Scrollbar at 0, should be >0. (TextRange %d-%d, scroll range %d-%d.)\n",
|
||||||
|
first, lim, si.nMin, si.nMax);
|
||||||
|
} else {
|
||||||
|
ok(si.nPos == 0,
|
||||||
|
"Scrollbar at %d, should be 0. (TextRange %d-%d, scroll range %d-%d.)\n",
|
||||||
|
si.nPos, first, lim, si.nMin, si.nMax);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_ITextRange_ScrollIntoView(void)
|
||||||
|
{
|
||||||
|
HWND w;
|
||||||
|
IRichEditOle *reOle = NULL;
|
||||||
|
ITextDocument *txtDoc = NULL;
|
||||||
|
ITextRange *txtRge = NULL;
|
||||||
|
HRESULT hres;
|
||||||
|
static const CHAR test_text1[] = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10";
|
||||||
|
|
||||||
|
create_interfaces(&w, &reOle, &txtDoc, NULL);
|
||||||
|
SendMessageA(w, WM_SETTEXT, 0, (LPARAM)test_text1);
|
||||||
|
|
||||||
|
/* Scroll to the top. */
|
||||||
|
check_range(w, txtDoc, 0, 1, tomStart, 0);
|
||||||
|
|
||||||
|
/* Scroll to the bottom. */
|
||||||
|
check_range(w, txtDoc, 19, 20, tomStart, 1);
|
||||||
|
|
||||||
|
/* Back up to the top. */
|
||||||
|
check_range(w, txtDoc, 0, 1, tomStart, 0);
|
||||||
|
|
||||||
|
/* Large range */
|
||||||
|
check_range(w, txtDoc, 0, 20, tomStart, 0);
|
||||||
|
|
||||||
|
hres = ITextDocument_Range(txtDoc, 0, 0, &txtRge);
|
||||||
|
ok(hres == S_OK, "got 0x%08x\n", hres);
|
||||||
|
release_interfaces(&w, &reOle, &txtDoc, NULL);
|
||||||
|
hres = ITextRange_ScrollIntoView(txtRge, tomStart);
|
||||||
|
ok(hres == CO_E_RELEASED, "got 0x%08x\n", hres);
|
||||||
|
ITextRange_Release(txtRge);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_ITextSelection_GetChar(void)
|
static void test_ITextSelection_GetChar(void)
|
||||||
{
|
{
|
||||||
HWND w;
|
HWND w;
|
||||||
|
@ -3801,6 +3861,7 @@ START_TEST(richole)
|
||||||
test_ITextSelection_GetStoryLength();
|
test_ITextSelection_GetStoryLength();
|
||||||
test_ITextDocument_Range();
|
test_ITextDocument_Range();
|
||||||
test_ITextRange_GetChar();
|
test_ITextRange_GetChar();
|
||||||
|
test_ITextRange_ScrollIntoView();
|
||||||
test_ITextRange_GetStart_GetEnd();
|
test_ITextRange_GetStart_GetEnd();
|
||||||
test_ITextRange_GetDuplicate();
|
test_ITextRange_GetDuplicate();
|
||||||
test_ITextRange_SetStart();
|
test_ITextRange_SetStart();
|
||||||
|
|
Loading…
Reference in a new issue