[LyX/master] Implement (basic) ct for tabular-feature delete-row and delete-column

Juergen Spitzmueller spitz at lyx.org
Sun Dec 29 12:55:23 UTC 2019


commit 8a17cc01e0fa81e2730ef96887d4bffbb641cfd0
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Dec 29 14:09:52 2019 +0100

    Implement (basic) ct for tabular-feature delete-row and delete-column
    
    Fixes part of #8469
    
    For a proper fix that works with change-reject as well as with hide
    changes in output, we need to implement
    ct information in tabular's row and column.
---
 src/insets/InsetTabular.cpp |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index d52ba52..d225854 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -745,6 +745,9 @@ void Tabular::deleteRow(row_type const row)
 		return;
 
 	for (col_type c = 0; c < ncols(); ++c) {
+		// mark track changes
+		if (buffer().params().track_changes)
+			cell_info[row][c].inset->setChange(Change(Change::DELETED));
 		// Care about multirow cells
 		if (row + 1 < nrows() &&
 		    cell_info[row][c].multirow == CELL_BEGIN_OF_MULTIROW &&
@@ -752,8 +755,10 @@ void Tabular::deleteRow(row_type const row)
 				cell_info[row + 1][c].multirow = CELL_BEGIN_OF_MULTIROW;
 		}
 	}
-	row_info.erase(row_info.begin() + row);
-	cell_info.erase(cell_info.begin() + row);
+	if (!buffer().params().track_changes) {
+		row_info.erase(row_info.begin() + row);
+		cell_info.erase(cell_info.begin() + row);
+	}
 	updateIndexes();
 }
 
@@ -859,15 +864,20 @@ void Tabular::deleteColumn(col_type const col)
 		return;
 
 	for (row_type r = 0; r < nrows(); ++r) {
+		// mark track changes
+		if (buffer().params().track_changes)
+			cell_info[r][col].inset->setChange(Change(Change::DELETED));
 		// Care about multicolumn cells
 		if (col + 1 < ncols() &&
 		    cell_info[r][col].multicolumn == CELL_BEGIN_OF_MULTICOLUMN &&
 		    cell_info[r][col + 1].multicolumn == CELL_PART_OF_MULTICOLUMN) {
 				cell_info[r][col + 1].multicolumn = CELL_BEGIN_OF_MULTICOLUMN;
 		}
-		cell_info[r].erase(cell_info[r].begin() + col);
+		if (!buffer().params().track_changes)
+			cell_info[r].erase(cell_info[r].begin() + col);
 	}
-	column_info.erase(column_info.begin() + col);
+	if (!buffer().params().track_changes)
+		column_info.erase(column_info.begin() + col);
 	updateIndexes();
 }
 


More information about the lyx-cvs mailing list