From: Jürgen Spitzmüller Date: Sat, 1 Oct 2011 07:24:17 +0000 (+0000) Subject: backport r39757: X-Git-Tag: 2.0.2~171 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=336e0ea9f5a162d6cd7fe78a7f8fe558c595302c;p=features.git backport r39757: * Fix merging of cells (multicolumn, multirow) when the first cell in the selection is already a multi-cell (bug #7792). git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_2_0_X@39793 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 680ce1b1af..d9509a5fc9 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -5388,10 +5388,27 @@ void InsetTabular::tabularFeatures(Cursor & cur, } case Tabular::MULTICOLUMN: { - if (tabular.isMultiColumn(cur.idx())) - tabularFeatures(cur, Tabular::UNSET_MULTICOLUMN); - else + if (!cur.selection()) { + if (tabular.isMultiColumn(cur.idx())) + tabularFeatures(cur, Tabular::UNSET_MULTICOLUMN); + else + tabularFeatures(cur, Tabular::SET_MULTICOLUMN); + break; + } + bool merge = false; + for (col_type c = sel_col_start; c <= sel_col_end; ++c) { + row_type const r = sel_row_start; + if (!tabular.isMultiColumn(tabular.cellIndex(r, c)) + || (r > sel_row_start && !tabular.isPartOfMultiColumn(r, c))) + merge = true; + } + // If the selection contains at least one singlecol cell + // or multiple multicol cells, + // we assume the user will merge is to a single multicol + if (merge) tabularFeatures(cur, Tabular::SET_MULTICOLUMN); + else + tabularFeatures(cur, Tabular::UNSET_MULTICOLUMN); break; } @@ -5426,10 +5443,27 @@ void InsetTabular::tabularFeatures(Cursor & cur, } case Tabular::MULTIROW: { - if (tabular.isMultiRow(cur.idx())) - tabularFeatures(cur, Tabular::UNSET_MULTIROW); - else + if (!cur.selection()) { + if (tabular.isMultiRow(cur.idx())) + tabularFeatures(cur, Tabular::UNSET_MULTIROW); + else + tabularFeatures(cur, Tabular::SET_MULTIROW); + break; + } + bool merge = false; + for (row_type r = sel_row_start; r <= sel_row_end; ++r) { + col_type const c = sel_col_start; + if (!tabular.isMultiRow(tabular.cellIndex(r, c)) + || (r > sel_row_start && !tabular.isPartOfMultiRow(r, c))) + merge = true; + } + // If the selection contains at least one singlerow cell + // or multiple multirow cells, + // we assume the user will merge is to a single multirow + if (merge) tabularFeatures(cur, Tabular::SET_MULTIROW); + else + tabularFeatures(cur, Tabular::UNSET_MULTIROW); break; } diff --git a/status.20x b/status.20x index ab5a2c5615..57982a4851 100644 --- a/status.20x +++ b/status.20x @@ -110,6 +110,9 @@ What's new - Fix bottom border allocation when setting a multirow (bug 7791). +- Fix merging of cells (multicolumn, multirow) when the first cell in the + selection is already a multi-cell (bug 7792). + - Disable interword and protected space lfuns in math, since these spaces are not yet supported.