runparams.encoding);
wi.canBreakLine(os.canBreakLine());
write(wi);
+ // Reset parbreak status after a math inset.
+ os.lastChar(0);
os.canBreakLine(wi.canBreakLine());
int lf = wi.line();
case LFUN_MOUSE_DOUBLE:
case LFUN_MOUSE_TRIPLE:
case LFUN_WORD_SELECT:
- case LFUN_INSET_SELECT_ALL:
cur.pos() = 0;
cur.idx() = 0;
cur.resetAnchor();
cur.setSelection(true);
- cur.pos() = cur.lastpos();
cur.idx() = cur.lastidx();
+ cur.pos() = cur.lastpos();
+ cur.bv().cursor() = cur;
break;
case LFUN_PARAGRAPH_UP:
void InsetMathNest::lfunMouseMotion(Cursor & cur, FuncRequest & cmd)
{
// only select with button 1
- if (cmd.button() == mouse_button::button1) {
- Cursor & bvcur = cur.bv().cursor();
- if (bvcur.realAnchor().hasPart(cur)) {
- //lyxerr << "## lfunMouseMotion: cursor: " << cur << endl;
- bvcur.setCursor(cur);
- bvcur.setSelection(true);
- //lyxerr << "MOTION " << bvcur << endl;
- } else
- cur.undispatched();
+ if (cmd.button() != mouse_button::button1)
+ return;
+
+ Cursor & bvcur = cur.bv().cursor();
+
+ // ignore motions deeper nested than the real anchor
+ if (!bvcur.realAnchor().hasPart(cur)) {
+ cur.undispatched();
+ return;
}
+
+ CursorSlice old = bvcur.top();
+
+ // We continue with our existing selection or start a new one, so don't
+ // reset the anchor.
+ bvcur.setCursor(cur);
+ // Did we actually move?
+ if (cur.top() == old)
+ // We didn't move one iota, so no need to change selection status
+ // or update the screen.
+ cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);
+ else
+ bvcur.setSelection();
}
// but suppress direct insertion of two spaces in a row
// the still allows typing '<space>a<space>' and deleting the 'a', but
// it is better than nothing...
- if (!cur.pos() != 0 || cur.prevAtom()->getChar() != ' ') {
+ if (cur.pos() == 0 || cur.prevAtom()->getChar() != ' ') {
cur.insert(c);
// FIXME: we have to enable full redraw here because of the
// visual box corners that define the inset. If we know for
globals.push_back(from_ascii("\\framebox"));
globals.push_back(from_ascii("\\makebox"));
globals.push_back(from_ascii("\\kern"));
+ globals.push_back(from_ascii("\\xhookrightarrow"));
+ globals.push_back(from_ascii("\\xhookleftarrow"));
globals.push_back(from_ascii("\\xrightarrow"));
+ globals.push_back(from_ascii("\\xRightarrow"));
+ globals.push_back(from_ascii("\\xrightharpoondown"));
+ globals.push_back(from_ascii("\\xrightharpoonup"));
+ globals.push_back(from_ascii("\\xrightleftharpoons"));
globals.push_back(from_ascii("\\xleftarrow"));
+ globals.push_back(from_ascii("\\xLeftarrow"));
+ globals.push_back(from_ascii("\\xleftharpoondown"));
+ globals.push_back(from_ascii("\\xleftharpoonup"));
+ globals.push_back(from_ascii("\\xleftrightarrow"));
+ globals.push_back(from_ascii("\\xLeftrightarrow"));
+ globals.push_back(from_ascii("\\xleftrightharpoons"));
+ globals.push_back(from_ascii("\\xmapsto"));
globals.push_back(from_ascii("\\split"));
globals.push_back(from_ascii("\\gathered"));
globals.push_back(from_ascii("\\aligned"));