On Thursday 30 October 2003 01:06 pm, Angus Leeming wrote:
> Kuba Ober wrote:
> > On Thursday 30 October 2003 11:26 am, Alfredo Braunstein wrote:
> >> Angus Leeming wrote:
> >> > Note that multiple BufferViews implies multiple Cursors. I'm sure
> >> > that I would be pissed off if I replaced "brown" with "red" in
> >> > one window and found that the cursor in my other BufferView had
> >> > also changed position.
> >>
> >> That's a very good point.
> >
> > I think that the only real solution is that the tree must know of
> > its iterators and adjust them if tree structure changes.
> >
> > I presume that it should call into existence a proper tree base
> > classes for leafs and nodes. I wonder if they exist in the current
> > design. [No time to look at the code, sorry :( ]
> >
> > Essentially, it should be tree's leaves and nodes which should be
> > able to know which cursors point at them. Since there will be
> > probably very few cursors in existence at any given time (say 10 or
> > something of that order), it's conceiveable that:
> > a) a tree element, upon each change, will look through the "global"
> > list of cursors to see which cursors point to it
> > b) it will adjust them per the pending change
> >
> > That also makes cursors invariants between changes to either tree
> > elements or cursor position, and makes all cursors automatically
> > always valid no matter what.
> >
> > Does it make any sense? Is that the direction you are going? Am I
> > talking rubbish? I'm just a bystander and overseer, but I would like
> > to know what pattern are you converging to in the long term.
>
> It's pseudo-rubbish in that the lyx data structure is a tree
> in-concept only. It's actually a std::list<Paragraph> where each
> Paragraph contains a std::vector<char> and an InsetList. Insets are
> identified in the std::vector<char> by chars with value 'META_INSET'
> and a Buffer::inset_iterator class enables one to go from a
> (ParagraphList::iterator, lyx::pos_type) pair to the inset of
> interest.

Why not make the tree structure explicit, with leaf and node base classes from 
which insets can derive? Wouldn't it make life much simpler?

Cheers, Kuba Ober

Reply via email to