Bug 81720
Michael Stahl
mst at libreoffice.org
Tue Aug 23 11:16:58 UTC 2022
On 23.08.22 13:12, Michael Stahl wrote:
> On 19.08.22 15:41, Phillips Rogfield wrote:
>> Dear developers,
>>
>> I would like to fix bug 81720
>> <https://bugs.documentfoundation.org/show_bug.cgi?id=81720#c22>.
>>
>> Basically when you insert a ReferenceMark, if you put the cursor at
>> the edge of it (start or end), and type something, it will expand on
>> the reference mark instead of writing it as a “normal text”.
>>
>> You can find how to reproduce it in comment 22
>> <https://bugs.documentfoundation.org/show_bug.cgi?id=81720#c22>.
>>
>> I have set up my environment, but I’m not sure where is the code that
>> “checks” if something is a ReferenceMark, if anything.
>>
>> Can you point me in the right direction, please?
>
> so firstly, while cross references are fields, the reference marks are
> not fields in Writer.
>
> there are 2 different kinds of reference mark, both represented by a
> SwTextAttr with ID RES_TXTATR_REFMARK.
>
> one has a dummy character in the text, CH_TXTATR_INWORD, and behaves
> similar to a field - it does not have an end position, so it cannot mark
> text, it only contains its dummy character.
>
> the other has a start and end position, but no dummy character - this is
> the one you're concerned about.
>
> these SwTextAttr all exist in a SwpHints array that is a member
> SwTextNode::m_pSwpHints, sorted in multiple different ways.
>
> when editing the text, the hints start and end positions are adjusted in
> SwTextNode::Update() and its base class SwContentIndexReg::Update() -
> it's rather complex code but i think you need to tweak these functions
> to fix the problem.
forgot one thing: bookmark positions already work in the way that you
want reference marks to work, text is always inserted outside the
bookmark - maybe you could find out how that is implemented in the
Update functions.
More information about the LibreOffice
mailing list