Lars Gullik BjÃnnes <[EMAIL PROTECTED]> writes:

> 
> This is making life hard for me.

< bool LyXText::cursorUp(LCursor & cur)
< {
<         Paragraph const & par = cur.paragraph();
<         int const row = par.pos2row(cur.pos());
<         int const x = cur.targetX();
< 
<         if (!cur.selection()) {
<                 lyxerr << BOOST_CURRENT_FUNCTION
<                        << "Cursor up, no selection" << endl;
< 
<                 int const y = bv_funcs::getPos(cur).y_;
<                 LCursor old = cur;
<                 editXY(cur, x, y - par.rows()[row].ascent() - 1);
<                 if (cur == old)
                    {
<                         lyxerr << BOOST_CURRENT_FUNCTION
<                                << " cur and old ARE EQUAL!\n"
<                                << "old: " << old <<'\n'
<                                << "cur: " << cur << endl;
                    }
< 
<                         return deleteEmptyParagraphMechanism(cur, old);
<         }
...
< an extra space between to words and press 'up'. The cursor now moves
< out of the inset and into the line above. Fine and dandy. This is done
< by hte editXY in the code above. However, what is not so fine is that
< old == cur even after this, so DEPM ends up doing nothing and we are
< left with a double-space.

But if everything is fine and dandy, cur MUST have changed, no?
Maybe old changed as well? I'm not an expert in C++ copy semantics, so
I don't know what "LCursor old = cur;" really does. I think the assignment 
operators are inherited via DocIterator from std::vector<CursorSlice>
which would give me a headache ... :-)

Ciao
/Andreas

Reply via email to