DocPosition bugs in the tarball

Paul Rohr (paul@abisource.com)
Fri, 25 Sep 1998 15:12:21 -0700


... or, why a certain category of bugs got left in today's 0.1.1 release.

In a nutshell, we figured some of you would rather play with unlimited undo
and anonymous CVS access this week, rather than be forced to wait another
week while we squish these bugs.

short version
-------------
Today's 0.1.1 release has a number of boundary case bugs related to the fact
that strux don't have "width". Symptoms include:

- insertion point dirt around line/paragraph boundaries
- character motion around paragraph boundaries is goofy
- no distinction between the end of one line and the beginning of the next
- if you hit return twice, can't get back "into" the first empty paragraph
- there's no way to delete just a paragraph break
- hitting the "end" key is off by one
- etc.

These are all the same annoying bug, and you can probably find more
manifestations if you want. We've been living with the annoyance for weeks
while we've finished up the rest of the new document/formatter work, so
hopefully you can tolerate it for a few more days. :-)

We should have a clean batch of fixes for all of these sometime next week,
and we'll send mail to abiword-dev when you should update your CVS views to
grab it.

more detail
-----------
DocPositions are used to track the insertion point and the endpoints of
selections.

In the current implementation, every character is one DocPosition wide and
every structural element (section, columnmodel, column, block) is zero
DocPositions wide. There are still vestiges of the old left/right logic,
which worked because there were also *markers* in the docbuffer which
separated characters in useful places (as well as annoying ones). There are
a number of partially-successful attempts at various places in the code to
maintain and use this information.

All in all, this is just busted.

Conceptually, the fix is pretty simple -- certain strux should also be one
DocPosition wide, too. However, the change may take several days to bubble
through the tree, and we didn't want to hold up this source drop until then.

Paul



This archive was generated by hypermail 1.03b2.