int LyXText::top_y() const
{
- if (isInInset() || anchor_row_ == rowlist_.end() )
+ if (anchor_row_ == rowlist_.end() )
return 0;
+
return anchor_row_->y() + anchor_row_offset_;
}
void LyXText::top_y(int newy)
{
- if (rows().empty() || isInInset())
+ if (rows().empty())
+ return;
+
+ if (isInInset()) {
+ anchor_row_ = rows().begin();
+ anchor_row_offset_ = newy;
return;
+ }
+
lyxerr[Debug::GUI] << "setting top y = " << newy << endl;
int y = newy;
&& !layout->keepempty)
return;
- setUndo(bv(), Undo::FINISH, &*cursor.par(), &*boost::next(cursor.par()));
+ setUndo(bv(), Undo::FINISH, cursor.par(), boost::next(cursor.par()));
// Always break behind a space
//
// same Paragraph one to the right and make a rebreak
void LyXText::insertChar(char c)
{
- setUndo(bv(), Undo::INSERT, &*cursor.par(), &*boost::next(cursor.par()));
+ setUndo(bv(), Undo::INSERT, cursor.par(), boost::next(cursor.par()));
// When the free-spacing option is set for the current layout,
// disable the double-space checking
if (!selection.set() && cursor.par()->size())
return;
- bv()->hideCursor();
-
if (selection.start.par() == selection.end.par()) {
LyXCursor & startc = selection.start;
LyXCursor & endc = selection.end;
- setUndo(bv(), Undo::INSERT, &*startc.par(), &*boost::next(startc.par()));
+ setUndo(bv(), Undo::INSERT, startc.par(), boost::next(startc.par()));
startc.par()->acceptChange(startc.pos(), endc.pos());
finishUndo();
clearSelection();
if (!selection.set() && cursor.par()->size())
return;
- bv()->hideCursor();
-
if (selection.start.par() == selection.end.par()) {
LyXCursor & startc = selection.start;
LyXCursor & endc = selection.end;
- setUndo(bv(), Undo::INSERT, &*startc.par(),
- &*boost::next(startc.par()));
+ setUndo(bv(), Undo::INSERT, startc.par(),
+ boost::next(startc.par()));
startc.par()->rejectChange(startc.pos(), endc.pos());
finishUndo();
clearSelection();
if (cursor.pos() < cursor.par()->size() &&
cursor.par()->isInset(cursor.pos())) {
// lock the inset!
- cursor.par()->getInset(cursor.pos())->edit(bv());
+ FuncRequest cmd(bv(), LFUN_INSET_EDIT, "left");
+ cursor.par()->getInset(cursor.pos())->localDispatch(cmd);
// now call us again to do the above trick
// but obviously we have to start from down below ;)
return bv()->text->selectNextWordToSpellcheck(value);
lyx::Assert(from <= to);
- setUndo(bv(), Undo::FINISH, &*from.par(), &*boost::next(to.par()));
+ setUndo(bv(), Undo::FINISH, from.par(), boost::next(to.par()));
pos_type pos = from.pos();
ParagraphList::iterator pit = from.par();
// to make sure undo gets the right cursor position
cursor = old_cursor;
setUndo(bv(), Undo::DELETE,
- &*cursor.par(), &*boost::next(cursor.par()));
+ cursor.par(), boost::next(cursor.par()));
cursor = tmpcursor;
backspace();
}
if (cursor.par() != ownerParagraphs().begin()) {
setUndo(bv(), Undo::DELETE,
- &*boost::prior(cursor.par()),
- &*boost::next(cursor.par()));
+ boost::prior(cursor.par()),
+ boost::next(cursor.par()));
}
ParagraphList::iterator tmppit = cursor.par();
// this is the code for a normal backspace, not pasting
// any paragraphs
setUndo(bv(), Undo::DELETE,
- &*cursor.par(), &*boost::next(cursor.par()));
+ cursor.par(), boost::next(cursor.par()));
// We used to do cursorLeftIntern() here, but it is
// not a good idea since it triggers the auto-delete
// mechanism. So we do a cursorLeftIntern()-lite,