Hello Huw,
2014-07-03 17:34 GMT+08:00 Huw Davies <huw@codeweavers.com>:
> > + �� ��if (!*pbstr)
> > + �� �� �� ��return E_OUTOFMEMORY;
> > + �� ��/* FIXME: a '\r' should be appended at the end of a story */
> > + �� ��ME_GetTextW(This->reOle->editor, *pbstr, nChars, start, nChars, 0);
>
> Actually, perhaps you could fix the FIXME. GetTextW already has the ability
> to add \r\n, so extending this to add just \r shouldn't be too difficult.
>

Thanks for your review first!

A few weeks ago, I have made some tests about this problem. And it seem is an unimplement feature of Rich edit control and should not be fixed in ME_GetTextW or ITextSeletction::GetText simply:

1. end-of-story is different from end-of-paragraph
From document of ITextDocument::GetStoryCount: Rich edit controls have only one story.[1]
So ���story��� may is an unit like 'paragraph' in Rich edit control. We may need add a MERF_ENDSTORY to implement it.[2]

2. What does the end-of-story looks like?
When we run the wordpad with native riched20, we can use ���ctrl + shitf + ������ to select the ���space��� at the end of the Rich edit control. But we cannot set the cursor behind it.(a picture here[3])
And wine���s riched20 didn���t implement this ���space���. This 'space' may is the end-of-story.

A crash will happen when we copy the ���space��� from a native Rich edit control to a builtin one.(backtrace.txt[4])

BTW, there is a know bug of EM_SETSEL: cannot select the last character of Rich edit control.[5]

3.
It is sure there is a final EOP in a Rich edit control.

There seems to be every indication that we should implement the final EOP of Rich edit control rather than just append a ���\r��� in ITextSelection::GetText.
So I just let a FIXME comment there. I am not sure if I am right.��
Do you have any suggestion?

> Also, in the tests, you leak the BSTRs.
>
Thanks again.

> Huw.
>
>



--
Regards,
Jactry Zeng