mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Print: add a safe-guard if table print rows are too big
We do not support rows larger than a single page as the PrintLayout algorithm will enter an infinite loop, therefore we put a limit of 15 lines for the location text. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8f58faf431
commit
bfe5ccda1c
1 changed files with 17 additions and 1 deletions
|
@ -1536,7 +1536,23 @@ bool TablePrintModel::setData(const QModelIndex &index, const QVariant &value, i
|
||||||
case 3: list.at(index.row())->duration = value.toString();
|
case 3: list.at(index.row())->duration = value.toString();
|
||||||
case 4: list.at(index.row())->divemaster = value.toString();
|
case 4: list.at(index.row())->divemaster = value.toString();
|
||||||
case 5: list.at(index.row())->buddy = value.toString();
|
case 5: list.at(index.row())->buddy = value.toString();
|
||||||
case 6: list.at(index.row())->location = value.toString();
|
case 6: {
|
||||||
|
/* truncate if there are more than N lines of text,
|
||||||
|
* we don't want a row to be larger that a single page! */
|
||||||
|
QString s = value.toString();
|
||||||
|
const int maxLines = 15;
|
||||||
|
int count = 0;
|
||||||
|
for (int i = 0; i < s.length(); i++) {
|
||||||
|
if (s.at(i) != QChar('\n'))
|
||||||
|
continue;
|
||||||
|
count++;
|
||||||
|
if (count > maxLines) {
|
||||||
|
s = s.left(i - 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list.at(index.row())->location = s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue