Hi, 2014-07-22 18:36 GMT+08:00 Huw Davies huw@codeweavers.com:
Before you start implementing the ITextSelection methods, have you thought about how the ITextRange returned by ITextDocument::GetStoryRanges would work?
Do you mean ITextRange returned by ITextDocument::Range? ITextRange is returned by ITextDocument::Range and MS's Text Object Model didn't implement ITextDocument::GetStoryRanges.[0]
It seems to me it would be useful to have a text range object that could be used by both, rather than implementing two lots of ITextRange methods.
I would like to write some helper functions(such as ME_ITextGetText and ME_ITextGetChar) and share them between ITextSelection and ITextRange. https://github.com/Jactry/wine/commit/91e4f9f1510cb71c3c5afe4bf9e4bc8cb6b438...
What ITextSelection is different to ITextRange is range of ITextSelection is changeful. Every time we call ITextSelection::XXXX() a new range may be returned. So I saved range of ITextRange in ITextRangeImpl. And just calling ME_GetSelection to get range of ITextSelection every time we call ITextSelection::XXX(). https://github.com/Jactry/wine/commit/6932adce0d97c3ddbbe737230694444b26b047...
Is this a right way?
Thanks for your comment!