break;
}
+ case LFUN_PARAGRAPH_SELECT:
+ if (cur.pos() > 0)
+ needsUpdate |= setCursor(cur, cur.pit(), 0);
+ needsUpdate |= cur.selHandle(true);
+ if (cur.pos() < cur.lastpos())
+ needsUpdate |= setCursor(cur, cur.pit(), cur.lastpos());
+ break;
+
case LFUN_PARAGRAPH_UP:
case LFUN_PARAGRAPH_UP_SELECT:
needsUpdate |= cur.selHandle(cmd.action() == LFUN_PARAGRAPH_UP_SELECT);
}
DocumentClass const & tclass = bv->buffer().params().documentClass();
+ bool inautoarg = false;
for (auto const & la_pair : tclass[layout].args()) {
Layout::latexarg const & arg = la_pair.second;
if (arg.autoinsert) {
+ // If we had already inserted an arg automatically,
+ // leave this now in order to insert the next one.
+ if (inautoarg) {
+ cur.leaveInset(cur.inset());
+ cur.posForward();
+ inautoarg = false;
+ }
FuncRequest const cmd2(LFUN_ARGUMENT_INSERT, la_pair.first);
lyx::dispatch(cmd2);
+ inautoarg = true;
}
}
case LFUN_MOUSE_TRIPLE:
if (cmd.button() == mouse_button::button1) {
- tm->cursorHome(cur);
+ if (cur.pos() > 0)
+ setCursor(cur, cur.pit(), 0);
+ bv->cursor() = cur;
cur.resetAnchor();
- tm->cursorEnd(cur);
+ if (cur.pos() < cur.lastpos())
+ setCursor(cur, cur.pit(), cur.lastpos());
cur.setSelection();
bv->cursor() = cur;
}
bool const sel = cur.selection();
doInsertInset(cur, this, cmd, true, true);
// Insert auto-insert arguments
- bool autoargs = false;
- Layout::LaTeXArgMap args = cur.inset().getLayout().latexargs();
+ bool autoargs, inautoarg = false;
+ Layout::LaTeXArgMap args = cur.inset().getLayout().args();
Layout::LaTeXArgMap::const_iterator lait = args.begin();
Layout::LaTeXArgMap::const_iterator const laend = args.end();
for (; lait != laend; ++lait) {
Layout::latexarg arg = (*lait).second;
+ if (!inautoarg && arg.insertonnewline && cur.pos() > 0) {
+ FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);
+ lyx::dispatch(cmd2);
+ }
if (arg.autoinsert) {
// The cursor might have been invalidated by the replaceSelection.
cur.buffer()->changed(true);
+ // If we had already inserted an arg automatically,
+ // leave this now in order to insert the next one.
+ if (inautoarg) {
+ cur.leaveInset(cur.inset());
+ cur.posForward();
+ inautoarg = false;
+ if (arg.insertonnewline && cur.pos() > 0) {
+ FuncRequest cmd2(LFUN_PARAGRAPH_BREAK);
+ lyx::dispatch(cmd2);
+ }
+ }
FuncRequest cmd2(LFUN_ARGUMENT_INSERT, (*lait).first);
lyx::dispatch(cmd2);
autoargs = true;
+ inautoarg = true;
}
}
if (!autoargs) {
cur.recordUndo();
FuncRequest cmd2(LFUN_FILE_INSERT, tabstyle.absFileName() + " ignorelang");
lyx::dispatch(cmd2);
+ // go into table
+ cur.backwardPos();
if (r > 2) {
- // go into table
- cur.backwardPos();
// move one cell up to middle cell
cur.up();
- // now add the missing rows and columns
+ // add the missing rows
int const addrows = r - 3;
- int const addcols = c - 1;
for (int i = 0 ; i < addrows ; ++i) {
FuncRequest fr(LFUN_TABULAR_FEATURE, "append-row");
lyx::dispatch(fr);
}
- for (int i = 0 ; i < addcols ; ++i) {
- FuncRequest fr(LFUN_TABULAR_FEATURE, "append-column");
- lyx::dispatch(fr);
- }
+ }
+ // add the missing columns
+ int const addcols = c - 1;
+ for (int i = 0 ; i < addcols ; ++i) {
+ FuncRequest fr(LFUN_TABULAR_FEATURE, "append-column");
+ lyx::dispatch(fr);
+ }
+ if (r > 1)
// go to first cell
cur.up();
- } else {
- // jump over table
- cur.backwardChar();
- // go to first cell
- cur.forwardPos();
- }
break;
}
case LFUN_UP_SELECT:
case LFUN_DOWN:
case LFUN_DOWN_SELECT:
+ case LFUN_PARAGRAPH_SELECT:
case LFUN_PARAGRAPH_UP_SELECT:
case LFUN_PARAGRAPH_DOWN_SELECT:
case LFUN_LINE_BEGIN_SELECT: