if (selecting || cur.mark())
cur.setSelection();
saveSelection(cur);
- cur.bv().switchKeyMap();
}
saveSelection(cur);
break;
+ case LFUN_UP_SELECT:
+ case LFUN_DOWN_SELECT:
case LFUN_UP:
- case LFUN_UP_SELECT: {
- //lyxerr << "handle LFUN_UP[SEL]:\n" << cur << endl;
- needsUpdate |= cur.selHandle(cmd.action == LFUN_UP_SELECT);
- bool const successful = cur.upDownInText(true, needsUpdate);
- if (!successful)
- cur.undispatched();
- if (cur.selection())
- saveSelection(cur);
- break;
- }
-
- case LFUN_DOWN:
- case LFUN_DOWN_SELECT: {
- //lyxerr << "handle LFUN_DOWN[SEL]:\n" << cur << endl;
- needsUpdate |= cur.selHandle(cmd.action == LFUN_DOWN_SELECT);
- bool const successful = cur.upDownInText(false, needsUpdate);
- if (!successful)
+ case LFUN_DOWN: {
+ // stop/start the selection
+ bool select = cmd.action == LFUN_DOWN_SELECT ||
+ cmd.action == LFUN_UP_SELECT;
+ cur.selHandle(select);
+
+ // move cursor up/down
+ bool up = cmd.action == LFUN_UP_SELECT || cmd.action == LFUN_UP;
+ bool const successful = cur.upDownInText(up, needsUpdate);
+ if (successful) {
+ // notify insets which were left and get their update flags
+ notifyCursorLeaves(cur.beforeDispatchCursor(), cur);
+ cur.fixIfBroken();
+
+ // redraw if you leave mathed (for the decorations)
+ needsUpdate |= cur.beforeDispatchCursor().inMathed();
+ } else
cur.undispatched();
+
+ // save new selection
if (cur.selection())
saveSelection(cur);
break;
cutSelection(cur, true, false);
singleParUpdate = false;
}
- bv->switchKeyMap();
break;
case LFUN_DELETE_BACKWARD_SKIP:
cap::replaceSelection(cur);
breakParagraph(cur, 0);
cur.resetAnchor();
- bv->switchKeyMap();
break;
case LFUN_BREAK_PARAGRAPH_KEEP_LAYOUT:
cap::replaceSelection(cur);
breakParagraph(cur, 1);
cur.resetAnchor();
- bv->switchKeyMap();
break;
case LFUN_BREAK_PARAGRAPH_SKIP: {
else
breakParagraph(cur, 0);
cur.resetAnchor();
- bv->switchKeyMap();
break;
}
}
bv->buffer()->errors("Paste");
cur.clearSelection(); // bug 393
- bv->switchKeyMap();
finishUndo();
break;
setLayout(cur, layout);
// inform the GUI that the layout has changed.
bv->layoutChanged(layout);
- bv->switchKeyMap();
}
break;
}
cap::pasteSelection(cur, bv->buffer()->errorList("Paste"));
bv->buffer()->errors("Paste");
cur.clearSelection(); // bug 393
- bv->switchKeyMap();
bv->buffer()->markDirty();
finishUndo();
} else {
cur.noUpdate();
}
- bv->switchKeyMap();
break;
}
docstring::const_iterator cit = cmd.argument().begin();
docstring::const_iterator end = cmd.argument().end();
for (; cit != end; ++cit)
- bv->getIntl().getTransManager().
- translateAndInsert(*cit, this, cur);
+ bv->translateAndInsert(*cit, this, cur);
cur.resetAnchor();
moveCursor(cur, false);
Font font(Font::ALL_IGNORE);
font.setLanguage(lang);
toggleAndShow(cur, this, font);
- bv->switchKeyMap();
break;
}
theLyXFunc().handleKeyFunc(cmd.action);
if (!cmd.argument().empty())
// FIXME: Are all these characters encoded in one byte in utf8?
- bv->getIntl().getTransManager()
- .translateAndInsert(cmd.argument()[0], this, cur);
+ bv->translateAndInsert(cmd.argument()[0], this, cur);
break;
case LFUN_FLOAT_LIST: {