Author: spitz Date: Sat Oct 1 09:24:17 2011 New Revision: 39793 URL: http://www.lyx.org/trac/changeset/39793
Log: backport r39757: * Fix merging of cells (multicolumn, multirow) when the first cell in the selection is already a multi-cell (bug #7792). Modified: lyx-devel/branches/BRANCH_2_0_X/src/insets/InsetTabular.cpp lyx-devel/branches/BRANCH_2_0_X/status.20x Modified: lyx-devel/branches/BRANCH_2_0_X/src/insets/InsetTabular.cpp ============================================================================== --- lyx-devel/branches/BRANCH_2_0_X/src/insets/InsetTabular.cpp Sat Oct 1 03:29:47 2011 (r39792) +++ lyx-devel/branches/BRANCH_2_0_X/src/insets/InsetTabular.cpp Sat Oct 1 09:24:17 2011 (r39793) @@ -5388,10 +5388,27 @@ } 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 @@ } 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; } Modified: lyx-devel/branches/BRANCH_2_0_X/status.20x ============================================================================== --- lyx-devel/branches/BRANCH_2_0_X/status.20x Sat Oct 1 03:29:47 2011 (r39792) +++ lyx-devel/branches/BRANCH_2_0_X/status.20x Sat Oct 1 09:24:17 2011 (r39793) @@ -110,6 +110,9 @@ - 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.