Commit 3a0670ed authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

riched20: Implement SetStart().

parent 6d19ac5c
...@@ -905,14 +905,34 @@ static HRESULT WINAPI ITextRange_fnGetStart(ITextRange *me, LONG *pcpFirst) ...@@ -905,14 +905,34 @@ static HRESULT WINAPI ITextRange_fnGetStart(ITextRange *me, LONG *pcpFirst)
return S_OK; return S_OK;
} }
static HRESULT WINAPI ITextRange_fnSetStart(ITextRange *me, LONG cpFirst) static HRESULT WINAPI ITextRange_fnSetStart(ITextRange *me, LONG start)
{ {
ITextRangeImpl *This = impl_from_ITextRange(me); ITextRangeImpl *This = impl_from_ITextRange(me);
int len;
TRACE("(%p)->(%d)\n", This, start);
if (!This->reOle) if (!This->reOle)
return CO_E_RELEASED; return CO_E_RELEASED;
FIXME("not implemented %p\n", This); if (start == This->start)
return E_NOTIMPL; return S_FALSE;
if (start < 0) {
This->start = 0;
return S_OK;
}
len = ME_GetTextLength(This->reOle->editor);
if (start > This->end)
This->end = len;
if (start > len)
This->start = len;
else
This->start = start;
return S_OK;
} }
static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim) static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
......
...@@ -711,6 +711,54 @@ static void test_ITextRange_GetStart_GetEnd(void) ...@@ -711,6 +711,54 @@ static void test_ITextRange_GetStart_GetEnd(void)
hres = ITextRange_GetEnd(txtRge, &end); hres = ITextRange_GetEnd(txtRge, &end);
ok(hres == S_OK, "ITextRange_GetEnd\n"); ok(hres == S_OK, "ITextRange_GetEnd\n");
ok(end == 12, "got wrong end value: %d\n", end); ok(end == 12, "got wrong end value: %d\n", end);
/* SetStart */
hres = ITextRange_SetStart(txtRge, 0);
ok(hres == S_OK, "got 0x%08x\n", hres);
/* same value */
hres = ITextRange_SetStart(txtRge, 0);
ok(hres == S_FALSE, "got 0x%08x\n", hres);
hres = ITextRange_SetStart(txtRge, 1);
ok(hres == S_OK, "got 0x%08x\n", hres);
/* negative resets to 0 */
hres = ITextRange_SetStart(txtRge, -1);
ok(hres == S_OK, "got 0x%08x\n", hres);
start = -1;
hres = ITextRange_GetStart(txtRge, &start);
ok(hres == S_OK, "got 0x%08x\n", hres);
ok(start == 0, "got %d\n", start);
/* greater than initial end, but less than total char count */
hres = ITextRange_SetStart(txtRge, 10);
ok(hres == S_OK, "got 0x%08x\n", hres);
start = 0;
hres = ITextRange_GetStart(txtRge, &start);
ok(hres == S_OK, "got 0x%08x\n", hres);
ok(start == 10, "got %d\n", start);
end = 0;
hres = ITextRange_GetEnd(txtRge, &end);
ok(hres == S_OK, "got 0x%08x\n", hres);
ok(end == 12, "got %d\n", end);
hres = ITextRange_SetStart(txtRge, 50);
ok(hres == S_OK, "got 0x%08x\n", hres);
start = 0;
hres = ITextRange_GetStart(txtRge, &start);
ok(hres == S_OK, "got 0x%08x\n", hres);
ok(start == 12, "got %d\n", start);
end = 0;
hres = ITextRange_GetEnd(txtRge, &end);
ok(hres == S_OK, "got 0x%08x\n", hres);
ok(end == 12, "got %d\n", end);
ITextRange_Release(txtRge); ITextRange_Release(txtRge);
release_interfaces(&w, &reOle, &txtDoc, NULL); release_interfaces(&w, &reOle, &txtDoc, NULL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment