commit 89f6de98352e37b79d4615761ed620786973daca
Author: Juergen Spitzmueller <[email protected]>
Date: Tue Apr 23 08:34:53 2019 +0200
Append rows and columns if necessary when pasting into table
---
src/insets/InsetTabular.cpp | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 5122e8f..9df7d46 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -6997,20 +6997,26 @@ bool InsetTabular::insertPlaintextString(BufferView &
bv, docstring const & buf,
}
size_t op = 0;
- idx_type const cells = loctab->numberofcells;
+ idx_type cells = loctab->numberofcells;
p = 0;
cols = ocol;
rows = loctab->nrows();
- col_type const columns = loctab->ncols();
+ col_type columns = loctab->ncols();
- while (cell < cells && p < len && row < rows &&
+ while (p < len &&
(p = buf.find_first_of(from_ascii("\t\n"), p)) !=
docstring::npos)
{
if (p >= len)
break;
switch (buf[p]) {
case '\t':
- // we can only set this if we are not too far right
+ // append column if necessary
+ if (cols == columns) {
+ loctab->appendColumn(cols - 1);
+ columns = loctab->ncols();
+ cells = loctab->numberofcells;
+ ++cell;
+ }
if (cols < columns) {
shared_ptr<InsetTableCell> inset =
loctab->cellInset(cell);
Font const font =
bv.textMetrics(&inset->text()).
@@ -7032,6 +7038,12 @@ bool InsetTabular::insertPlaintextString(BufferView &
bv, docstring const & buf,
}
cols = ocol;
++row;
+ // append row if necessary
+ if (row == rows && p < len - 1) {
+ loctab->appendRow(row - 1);
+ rows = loctab->nrows();
+ cells = loctab->numberofcells;
+ }
if (row < rows)
cell = loctab->cellIndex(row, cols);
break;