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