fix: place notes actions beside scrollable formatting controls

This commit is contained in:
2026-10-19 22:37:22 +02:00
parent bb640867b7
commit 1804f679fc
2 changed files with 22 additions and 8 deletions
+20 -6
View File
@@ -62,16 +62,15 @@ final class NotesController: NSViewController, NSTextViewDelegate {
noteTitle.lineBreakMode = .byTruncatingTail
noteTitle.setAccessibilityLabel("Note title")
let header = NSView()
for control in [noteTitle, controls] {
for control in [noteTitle] {
control.translatesAutoresizingMaskIntoConstraints = false
header.addSubview(control)
control.centerYAnchor.constraint(equalTo: header.centerYAnchor).isActive = true
}
NSLayoutConstraint.activate([
controls.trailingAnchor.constraint(equalTo: header.trailingAnchor, constant: -8),
noteTitle.centerXAnchor.constraint(equalTo: header.centerXAnchor),
noteTitle.leadingAnchor.constraint(greaterThanOrEqualTo: header.leadingAnchor, constant: 44),
noteTitle.trailingAnchor.constraint(lessThanOrEqualTo: controls.leadingAnchor, constant: -16),
noteTitle.trailingAnchor.constraint(lessThanOrEqualTo: header.trailingAnchor, constant: -44),
])
actions.closed = { [weak self] in self?.focusEditor() }
actions.selectNote = { [weak self] in self?.switchNote($0) }
@@ -92,7 +91,22 @@ final class NotesController: NSViewController, NSTextViewDelegate {
formatting.addArrangedSubview(button)
}
formatting.spacing = 8
let footer = NSStackView(views: [formatting, NSView()])
let formattingScroll = NSScrollView()
formattingScroll.drawsBackground = false
formattingScroll.contentView.drawsBackground = false
formattingScroll.hasHorizontalScroller = true
formattingScroll.autohidesScrollers = true
formattingScroll.scrollerStyle = .overlay
formattingScroll.verticalScrollElasticity = .none
formattingScroll.documentView = formatting
formatting.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
formatting.widthAnchor.constraint(equalToConstant: CGFloat(tools.count * 28 + (tools.count - 1) * 8)),
formatting.heightAnchor.constraint(equalToConstant: 28),
formattingScroll.widthAnchor.constraint(greaterThanOrEqualToConstant: 28),
formattingScroll.heightAnchor.constraint(equalToConstant: 36),
])
let footer = NSStackView(views: [formattingScroll, controls])
footer.alignment = .centerY
footer.spacing = 8
editor.delegate = self
@@ -149,11 +163,11 @@ final class NotesController: NSViewController, NSTextViewDelegate {
body.bottomAnchor.constraint(equalTo: view.bottomAnchor),
scroll.widthAnchor.constraint(equalTo: body.widthAnchor),
footer.leadingAnchor.constraint(equalTo: body.leadingAnchor, constant: 24),
footer.trailingAnchor.constraint(equalTo: body.trailingAnchor, constant: -6),
footer.trailingAnchor.constraint(equalTo: body.trailingAnchor, constant: -8),
status.leadingAnchor.constraint(equalTo: body.leadingAnchor, constant: 28),
status.trailingAnchor.constraint(equalTo: body.trailingAnchor, constant: -12),
scroll.heightAnchor.constraint(greaterThanOrEqualToConstant: 80),
footer.heightAnchor.constraint(equalToConstant: 28),
footer.heightAnchor.constraint(equalToConstant: 36),
])
guard let store else {
editor.isEditable = false