mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-25 09:35:36 +00:00
AppKit: Maintain proper line height for overflowing attachments in CPTypesetter
When text attachments (such as tables or wide images) exceeded container width,
`CPTypesetter` correctly forced a line break following the attachment but
erroneously reverted the line's height and baseline to pre-attachment metrics.
Consequently, oversized attachments rendered on the baseline of preceding text,
causing them to overlap and obscure content above them in narrowed viewports.
* AppKit/CPTextView/CPTypesetter.j:
- Update line layout logic to incorporate attachment dimensions into line height
and baseline calculations when line breaks encompass overflowing attachments.
* Tests/Manual/TextEditor/WORKLIST.md:
- Mark wide/overflowing table layout tests as completed.
Attachments and tables wider than the text container now correctly occupy their own distinct lines without overlapping preceding content.
This commit is contained in:
1 parent
b05c912109
commit
9b5a0fbbfb
2 files changed
+11
No files matched your search
@@ -510,6 +510,16 @@ var _CPTypesetterDecimalSeparator = function()
|
||||
if (viewSize.height > _lineHeight)
|
||||
_lineHeight = viewSize.height - descent + leading;
|
||||
|
||||
// An attachment wider than the container stays on the line it overflows, so a break
|
||||
// there keeps the line's height and baseline with the attachment's size applied.
|
||||
// Otherwise the attachment would be placed on the baseline of the text before it,
|
||||
// and drawn above its line.
|
||||
if (CPMaxRange(wrapRange) === CPMaxRange(lineRange))
|
||||
{
|
||||
wrapRange._height = _lineHeight;
|
||||
wrapRange._base = _lineBase;
|
||||
}
|
||||
|
||||
ascent = viewSize.height;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -91,4 +91,5 @@ How the text system works, for the entries below: `CPTextView` does not use CSS
|
||||
- Copy and paste within TextEditor with Command-C and Command-V, in one document and between documents: images, tables, including text edited in their cells, and lists are kept.
|
||||
- Table cells can be edited, as a first pass.
|
||||
- Pasting text with several images and a table: the table appears in place at once, and tables, images and text below a change move with their lines.
|
||||
- A table wider than the text stays on its own line below the text before it when the window is narrowed, and is clipped at the right edge, without a horizontal scroll bar, as in Cocoa when text wraps to the window.
|
||||
- Builds with both the legacy toolchain and capp-build.
|
||||
Reference in new issue
Block a user