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]
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.��