riched20: Implement SetStart().
This commit is contained in:
parent
6d19ac5cb3
commit
3a0670ed7e
|
@ -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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue