remove dead drawTableBorders code and fix table view positioning

This commit is contained in:
jess 2026-04-06 18:44:57 -07:00
parent 77bf5a113c
commit 063063895a
1 changed files with 6 additions and 74 deletions

View File

@ -167,76 +167,6 @@ class MarkdownLayoutManager: NSLayoutManager {
path.fill() path.fill()
} }
private func drawTableBorders(glyphRange: NSRange, columns: Int, origin: NSPoint, container: NSTextContainer) {
guard columns > 0 else { return }
var rect = boundingRect(forGlyphRange: glyphRange, in: container)
rect.origin.x = origin.x + 4
rect.origin.y += origin.y
rect.size.width = container.containerSize.width - 8
let outerPath = NSBezierPath(rect: rect)
outerPath.lineWidth = 1
Theme.current.surface2.setStroke()
outerPath.stroke()
guard let ts = textStorage else { return }
let charRange = characterRange(forGlyphRange: glyphRange, actualGlyphRange: nil)
let text = ts.string as NSString
let tableText = text.substring(with: charRange)
let lines = tableText.components(separatedBy: "\n").filter { !$0.isEmpty }
var charOffset = charRange.location
for (i, line) in lines.enumerated() {
let lineLen = (line as NSString).length
if i > 0 {
let lineGlyphRange = self.glyphRange(forCharacterRange: NSRange(location: charOffset, length: 1), actualCharacterRange: nil)
let lineRect = boundingRect(forGlyphRange: lineGlyphRange, in: container)
let y = lineRect.origin.y + origin.y
let rowLine = NSBezierPath()
rowLine.move(to: NSPoint(x: rect.origin.x, y: y))
rowLine.line(to: NSPoint(x: rect.origin.x + rect.size.width, y: y))
rowLine.lineWidth = 0.5
Theme.current.surface2.setStroke()
rowLine.stroke()
}
charOffset += lineLen + 1
}
if let firstLine = lines.first {
let nsFirstLine = firstLine as NSString
var pipeOffsets: [Int] = []
for i in 0..<nsFirstLine.length {
if nsFirstLine.character(at: i) == UInt16(UnicodeScalar("|").value) {
pipeOffsets.append(i)
}
}
if pipeOffsets.count > 2 {
for pi in 1..<(pipeOffsets.count - 1) {
let charPos = charRange.location + pipeOffsets[pi]
let pipeGlyph = self.glyphRange(forCharacterRange: NSRange(location: charPos, length: 1), actualCharacterRange: nil)
let pipeRect = boundingRect(forGlyphRange: pipeGlyph, in: container)
let x = pipeRect.origin.x + origin.x + pipeRect.size.width / 2
let colLine = NSBezierPath()
colLine.move(to: NSPoint(x: x, y: rect.origin.y))
colLine.line(to: NSPoint(x: x, y: rect.origin.y + rect.size.height))
colLine.lineWidth = 0.5
Theme.current.surface2.setStroke()
colLine.stroke()
}
}
if lines.count > 1 {
let firstLineRange = NSRange(location: charRange.location, length: nsFirstLine.length)
let headerGlyphRange = self.glyphRange(forCharacterRange: firstLineRange, actualCharacterRange: nil)
var headerRect = boundingRect(forGlyphRange: headerGlyphRange, in: container)
headerRect.origin.x = rect.origin.x
headerRect.origin.y += origin.y
headerRect.size.width = rect.size.width
Theme.current.surface0.setFill()
headerRect.fill()
}
}
}
} }
// MARK: - Interactive Table Component // MARK: - Interactive Table Component
@ -1604,19 +1534,21 @@ struct EditorTextView: NSViewRepresentable {
} }
embeddedTableViews.removeAll() embeddedTableViews.removeAll()
let origin = tv.textContainerOrigin
let text = tv.string as NSString let text = tv.string as NSString
for block in lm.blockRanges { for block in lm.blockRanges {
guard case .tableBlock = block.kind else { continue } guard case .tableBlock = block.kind else { continue }
guard let parsed = parseMarkdownTable(from: text, range: block.range) else { continue } guard let parsed = parseMarkdownTable(from: text, range: block.range) else { continue }
let glyphRange = lm.glyphRange(forCharacterRange: block.range, actualCharacterRange: nil) let glyphRange = lm.glyphRange(forCharacterRange: block.range, actualCharacterRange: nil)
var rect = lm.boundingRect(forGlyphRange: glyphRange, in: tc) let rect = lm.boundingRect(forGlyphRange: glyphRange, in: tc)
rect.origin.x += tv.textContainerInset.width
rect.origin.y += tv.textContainerInset.height
let tableX = origin.x + 4
let tableY = rect.origin.y + origin.y
let tableWidth = tc.containerSize.width - 8 let tableWidth = tc.containerSize.width - 8
let tableView = MarkdownTableView(table: parsed, width: tableWidth) let tableView = MarkdownTableView(table: parsed, width: tableWidth)
tableView.frame.origin = NSPoint(x: rect.origin.x + 4, y: rect.origin.y) tableView.frame.origin = NSPoint(x: tableX, y: tableY)
tableView.textView = tv tableView.textView = tv
tableView.onTableChanged = { [weak self] updatedTable in tableView.onTableChanged = { [weak self] updatedTable in