mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-21 17:51:03 +00:00
Amend 782f6eae00
Rows should only be removed in ct mode if they have been added in ct mode by the same author (otherwise mark them deleted)
This commit is contained in:
parent
2d5fa181a1
commit
378397a6c6
@ -808,7 +808,13 @@ void Tabular::deleteRow(row_type const row, bool const force)
|
|||||||
if (nrows() == 1)
|
if (nrows() == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool const ct = force ? false : buffer().params().track_changes;
|
// If we are in change tracking mode, and the row is not marked
|
||||||
|
// as inserted by the same author, we do not delete it, but mark
|
||||||
|
// it deleted.
|
||||||
|
bool const track_deletion = force ? false
|
||||||
|
: buffer().params().track_changes
|
||||||
|
&& (!row_info[row].change.inserted()
|
||||||
|
|| !row_info[row].change.currentAuthor());
|
||||||
|
|
||||||
for (col_type c = 0; c < ncols(); ++c) {
|
for (col_type c = 0; c < ncols(); ++c) {
|
||||||
// Care about multirow cells
|
// Care about multirow cells
|
||||||
@ -818,7 +824,7 @@ void Tabular::deleteRow(row_type const row, bool const force)
|
|||||||
cell_info[row + 1][c] = cell_info[row][c];
|
cell_info[row + 1][c] = cell_info[row][c];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ct && !row_info[row].change.inserted())
|
if (track_deletion)
|
||||||
row_info[row].change.setDeleted();
|
row_info[row].change.setDeleted();
|
||||||
else {
|
else {
|
||||||
row_info.erase(row_info.begin() + row);
|
row_info.erase(row_info.begin() + row);
|
||||||
@ -970,7 +976,13 @@ void Tabular::deleteColumn(col_type const col, bool const force)
|
|||||||
if (ncols() == 1)
|
if (ncols() == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool const ct = force ? false : buffer().params().track_changes;
|
// If we are in change tracking mode, and the column is not marked
|
||||||
|
// as inserted by the same author, we do not delete it, but mark
|
||||||
|
// it deleted.
|
||||||
|
bool const track_deletion = force ? false
|
||||||
|
: buffer().params().track_changes
|
||||||
|
&& (!column_info[col].change.inserted()
|
||||||
|
|| !column_info[col].change.currentAuthor());
|
||||||
|
|
||||||
for (row_type r = 0; r < nrows(); ++r) {
|
for (row_type r = 0; r < nrows(); ++r) {
|
||||||
// Care about multicolumn cells
|
// Care about multicolumn cells
|
||||||
@ -979,10 +991,10 @@ void Tabular::deleteColumn(col_type const col, bool const force)
|
|||||||
cell_info[r][col + 1].multicolumn == CELL_PART_OF_MULTICOLUMN) {
|
cell_info[r][col + 1].multicolumn == CELL_PART_OF_MULTICOLUMN) {
|
||||||
cell_info[r][col + 1] = cell_info[r][col];
|
cell_info[r][col + 1] = cell_info[r][col];
|
||||||
}
|
}
|
||||||
if (!ct || column_info[col].change.inserted())
|
if (!track_deletion)
|
||||||
cell_info[r].erase(cell_info[r].begin() + col);
|
cell_info[r].erase(cell_info[r].begin() + col);
|
||||||
}
|
}
|
||||||
if (ct && !column_info[col].change.inserted())
|
if (track_deletion)
|
||||||
column_info[col].change.setDeleted();
|
column_info[col].change.setDeleted();
|
||||||
else
|
else
|
||||||
column_info.erase(column_info.begin() + col);
|
column_info.erase(column_info.begin() + col);
|
||||||
|
Loading…
Reference in New Issue
Block a user