[WebODF] Foreign elements & cursor positioning
Friedrich W. H. Kossebau
friedrich at kogmbh.com
Wed Aug 14 09:51:00 CEST 2013
Hi,
sorry for ignoring this email for so long, but priorities, well...
Am Donnerstag, 1. August 2013, 01:37:50 schrieb Philip Peitsch:
> Hi everyone,
>
> I have been looking at some funky "valid" ODT documents and discovering some
> fun behaviours around cursor positioning. I thought this was a good time to
> bring up some potential changes, as I noticed on IRC the other night that
> Friedrich had also discovered sometimes the user is unable to place the
> cursor inside a text:a block.
>
> The existing rules for valid cursor positions only allow placing the cursor
> inside what is known as a "grouping element", which is either a span, p or
> h. This has already caused me some challenges, because for one of the
> highlight overlays I'm doing on top of webodf I need to wrap document text
> in a normal HTML span, which then prevents the cursor from entering.
>
> In the situation Friedrich found, there is actually no requirement saying
> the text content within a text:a element must be placed in a span.
>
> The suggestion on IRC yesterday was to just add text:a into the grouping
> element definitions (a reasonable one), but I got to thinking a little more
> about whether this is the best long-term solution. Especially as there are
> other elements that could possible contain character data. And for
> extensibility purposes, ideally we don't want to have to redo this core
> cursor positioning logic every time the UI requires some extra containers
> and wrappers to help display things :).
>
> Re-reading the ODF specs[1], the preferred approach laid out is actually a
> blacklist, not a whitelist as we're currently doing. The blacklist as
> required for processing is already defined & used in
> StyleHelper.isAcceptedNode, is used for OpRemoveText and
> OpApplyDirectStyling.
>
> Would anyone have any problems if I changed OdtDocument.TestPositionFilter
> to use the blacklist approach instead? The blacklist will need an
> additional entry to exclude the cursor as well, so I'll put that in also.
>
> From my testing with this, it appears to function identically to the
> existing approach, with the added bonus of being able to navigate within
> text:a tags that don't contain a span :)
>
> Cheers,
>
> Philip
>
> P.S., sorry for all the list spam lately! Apparently I have too much time
> for philosophy :)
(if only more spam would be philosophical ;) )
> [1]
> http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#F
> oreignElementsAndAttributes
Having now read the referenced §3.17 Foreign Elements and Attributes I would
agree that this code needs to be turned into rather blacklist-based.
I might have missed/forgotten the content of related discussions on irc/in
real life, but I recall there has been some.
So Jos & Aditya, do you remember any reasons you had for staying with the
white-list (besides not needing any new coding effort ;) )?
Cheers
Friedrich
--
Friedrich W. H. Kossebau // KO GmbH
http://kogmbh.com/legal/
More information about the WebODF
mailing list