I'm no expert, so I'm not sure if this is is a bug:
In the function void OnChatLineChanged(string currentLine, string previousLine) from the IChatLineChangedHandler interface, only ancient and primal item links do not include the item name in the string currentLine.
For example, I had my friend whisper me a couple of item links, one that was nonancient, and one that was primal quality, and OnChatLineChanged gives me these values for currentLine:
Code:
|HItem:2,f0f88dbc:81271479:e2f6869b,c08ea798,ddb15e6,449e9fd2,ddc67b45::::::::9:a10b:119:119:0:0:46:445d5536:0:47d45e17:|h[The Short Man's Finger]|h
|HItem:2,508de899:4a8b7aab:44cf5d1b,e7371328,611cbd68,dc834f9e,ad0770f4::::::::9:e10b:18b:18b:0:0:46:efd9d99b:0:fa744ede:|h}{/c}|h{/c}
The difference seems to be that the partial color tag removal parses out the item name for the ancient+ quality item. I had a similar issue with IUiElement.ReadText(System.Text.Encoding encoding, bool removeColors) when removeColors was set to true, but it returned the text name for ancient+ item links when removeColors is false. Unfortunately, onChatLineChanged doesn't give me the option to turn off color tag removal.
Checking the data dump (ctrl + alt + d) for ui_visible shows that the text is intact, so I'm guessing that the color tag removal feature doesn't work as expected when extra curly braces are in the string { }.