commit bf5d5e5d66610865cc1c887c001066d1a0a4d06e
Author: Juergen Spitzmueller <[email protected]>
Date: Wed Apr 3 16:35:08 2019 +0200
Fix cmidline trimming with multicolumns
---
src/insets/InsetTabular.cpp | 36 ++++++++++++++++++++++++++++++++----
1 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 43795e7..82c9393 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -2403,6 +2403,11 @@ void Tabular::TeXTopHLine(otexstream & os, row_type row,
string const & lang,
topltrims[c] = false;
toprtrims[c] = false;
}
+ // copy trimming to multicolumn parts
+ if (isPartOfMultiColumn(row, c)) {
+ topltrims[c] = topltrims[c-1];
+ toprtrims[c] = toprtrims[c-1];
+ }
if (topline.find(c) != topline.end() && topline.find(c)->second)
++nset;
if ((topltrims.find(c) != topltrims.end() &&
topltrims.find(c)->second)
@@ -2426,6 +2431,11 @@ void Tabular::TeXTopHLine(otexstream & os, row_type row,
string const & lang,
for (auto & c : columns) {
if (topline.find(c)->second) {
col_type offset = 0;
+ for (col_type j = 0 ; j < c; ++j)
+ if (column_info[j].alignment ==
LYX_ALIGN_DECIMAL)
+ ++offset;
+ while (isPartOfMultiColumn(row, c))
+ ++c;
string trim;
if (topltrims.find(c) != topltrims.end()
&& topltrims.find(c)->second)
@@ -2433,9 +2443,13 @@ void Tabular::TeXTopHLine(otexstream & os, row_type row,
string const & lang,
string const firstcol = convert<string>(c + 1 +
offset);
col_type cstart = c;
for ( ; c < ncols() - 1 &&
topline.find(c)->second ; ++c) {
+ if (isMultiColumn(cellIndex(row, c))
+ && c < ncols() - 1 &&
isPartOfMultiColumn(row, c + 1))
+ continue;
if (c > cstart && topltrims.find(c) !=
topltrims.end()
&&
topltrims.find(c)->second) {
- --c;
+ if (!isPartOfMultiColumn(row,
c))
+ --c;
break;
} else if (toprtrims.find(c) !=
toprtrims.end()
&& toprtrims.find(c)->second)
@@ -2504,6 +2518,14 @@ void Tabular::TeXBottomHLine(otexstream & os, row_type
row, string const & lang,
topltrims[c] = false;
toprtrims[c] = false;
}
+ // copy trimming in multicolumn parts
+ if (isPartOfMultiColumn(row, c)) {
+ topltrims[c] = topltrims[c-1];
+ toprtrims[c] = toprtrims[c-1];
+ bottomltrims[c] = bottomltrims[c-1];
+ bottomrtrims[c] = bottomrtrims[c-1];
+ }
+
nextrowset &= topline.find(c) != topline.end() &&
topline.find(c)->second;
}
@@ -2541,7 +2563,8 @@ void Tabular::TeXBottomHLine(otexstream & os, row_type
row, string const & lang,
for (col_type j = 0 ; j < c; ++j)
if (column_info[j].alignment ==
LYX_ALIGN_DECIMAL)
++offset;
-
+ while (isPartOfMultiColumn(row, c))
+ ++c;
string trim;
if (bottomltrims.find(c) != bottomltrims.end()
&& bottomltrims.find(c)->second)
@@ -2549,9 +2572,14 @@ void Tabular::TeXBottomHLine(otexstream & os, row_type
row, string const & lang,
string const firstcol = convert<string>(c + 1 +
offset);
col_type cstart = c;
for ( ; c < ncols() - 1 &&
bottomline.find(c)->second ; ++c) {
+ if (isMultiColumn(cellIndex(row, c))
+ && c < ncols() - 1
+ && isPartOfMultiColumn(row, c + 1))
+ continue;
if (c > cstart && bottomltrims.find(c)
!= bottomltrims.end()
- &&
bottomltrims.find(c)->second) {
- --c;
+ && bottomltrims.find(c)->second) {
+ if (!isPartOfMultiColumn(row,
c))
+ --c;
break;
} else if (bottomrtrims.find(c) !=
bottomrtrims.end()
&&
bottomrtrims.find(c)->second)