From 7f773cf24ea7909930a95ad1d004239d7d64256d Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Mon, 29 Jun 2020 17:51:24 +0200 Subject: [PATCH] Resize table if needed on multi-cell paste --- src/insets/InsetTabular.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 4dcb1c2bba..2bfa3914b9 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -7107,12 +7107,15 @@ bool InsetTabular::pasteClipboard(Cursor & cur) getSelection(cur, actrow, re, actcol, ce); } - for (row_type r1 = 0, r2 = actrow; - r1 < paste_tabular->nrows() && r2 < tabular.nrows(); - ++r1, ++r2) { - for (col_type c1 = 0, c2 = actcol; - c1 < paste_tabular->ncols() && c2 < tabular.ncols(); - ++c1, ++c2) { + col_type const oldncols = tabular.ncols(); + for (row_type r1 = 0, r2 = actrow; r1 < paste_tabular->nrows(); ++r1, ++r2) { + // Append rows if needed + if (r2 == tabular.nrows()) + tabular.insertRow(r2 - 1, false); + for (col_type c1 = 0, c2 = actcol; c1 < paste_tabular->ncols(); ++c1, ++c2) { + // Append columns if needed + if (c2 == tabular.ncols()) + tabular.insertColumn(c2 - 1, false); if (paste_tabular->isPartOfMultiColumn(r1, c1) && tabular.isPartOfMultiColumn(r2, c2)) continue; @@ -7140,6 +7143,8 @@ bool InsetTabular::pasteClipboard(Cursor & cur) cur.pit() = 0; } } + // amend cursor position if cols have been appended + cur.idx() += actrow * (tabular.ncols() - oldncols); return true; }