diff options
author | bptato <nincsnevem662@gmail.com> | 2023-11-20 15:45:25 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-11-20 15:47:31 +0100 |
commit | d20fc30e10aeecfb2ede7adc4547b9ae394565b9 (patch) | |
tree | c3cb2cbc2172edfc5835215d3af701b22bcb9e9c /src/types | |
parent | dbb60a3cb0c1ada39692426e1b5a45245b3b791d (diff) | |
download | chawan-d20fc30e10aeecfb2ede7adc4547b9ae394565b9.tar.gz |
renderdocument, cell: fix FormatCell bugs
* No more zero width FormatCells messing up buffer display (yay!) * Assert on setText width a zero-length string * Remove unnecessary FormatCell added to every line on paintBackground start
Diffstat (limited to 'src/types')
-rw-r--r-- | src/types/cell.nim | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/types/cell.nim b/src/types/cell.nim index 19a566cc..3a8967ee 100644 --- a/src/types/cell.nim +++ b/src/types/cell.nim @@ -31,6 +31,10 @@ type format*: Format pos*: int + # Following properties should hold for `formats': + # * Position should be >= 0, <= str.width(). + # * The position of every FormatCell should be greater than the position + # of the previous FormatCell. FlexibleLine* = object str*: string formats*: seq[FormatCell] @@ -146,10 +150,15 @@ proc addLine*(grid: var FlexibleGrid) = proc addLines*(grid: var FlexibleGrid, n: int) = grid.setLen(grid.len + n) -proc insertFormat*(line: var FlexibleLine, pos, i: int, format: Format, node: StyledNode = nil) = - line.formats.insert(FormatCell(format: format, node: node, pos: pos), i) +proc insertFormat*(line: var FlexibleLine, i: int, cell: FormatCell) = + line.formats.insert(cell, i) -proc addFormat*(line: var FlexibleLine, pos: int, format: Format, node: StyledNode = nil) = +proc insertFormat*(line: var FlexibleLine, pos, i: int, format: Format, + node: StyledNode = nil) = + line.insertFormat(i, FormatCell(format: format, node: node, pos: pos)) + +proc addFormat*(line: var FlexibleLine, pos: int, format: Format, + node: StyledNode = nil) = line.formats.add(FormatCell(format: format, node: node, pos: pos)) # https://www.ecma-international.org/wp-content/uploads/ECMA-48_5th_edition_june_1991.pdf |