From 8aef3e205994eb5c2d59e52bbeb0c187105bcd61 Mon Sep 17 00:00:00 2001 From: Dominik Bucher Date: Wed, 21 Feb 2024 13:36:44 +0100 Subject: [PATCH] Set correct alignment to context --- .../Component/RichTextViewComponent+Alignment.swift | 7 ------- .../Component/RichTextViewComponent+Paragraph.swift | 8 ++++---- Sources/RichTextKit/Coordinator/RichTextCoordinator.swift | 7 ++++++- Sources/RichTextKit/RichTextView_AppKit.swift | 2 +- Sources/RichTextKit/RichTextView_UIKit.swift | 5 +---- 5 files changed, 12 insertions(+), 17 deletions(-) diff --git a/Sources/RichTextKit/Component/RichTextViewComponent+Alignment.swift b/Sources/RichTextKit/Component/RichTextViewComponent+Alignment.swift index 2d2c93a1d..cc04613d4 100644 --- a/Sources/RichTextKit/Component/RichTextViewComponent+Alignment.swift +++ b/Sources/RichTextKit/Component/RichTextViewComponent+Alignment.swift @@ -16,13 +16,6 @@ import AppKit public extension RichTextViewComponent { - /// Get the text alignment. -// var richTextAlignment: RichTextAlignment? -// { -// guard let style = richTextParagraphStyle else { return nil } -// return RichTextAlignment(style.alignment) -// } - /// Set the text alignment. func setRichTextAlignment(_ alignment: RichTextAlignment) { if richTextAlignment == alignment { return } diff --git a/Sources/RichTextKit/Component/RichTextViewComponent+Paragraph.swift b/Sources/RichTextKit/Component/RichTextViewComponent+Paragraph.swift index 9cab00e62..9fced5a9d 100644 --- a/Sources/RichTextKit/Component/RichTextViewComponent+Paragraph.swift +++ b/Sources/RichTextKit/Component/RichTextViewComponent+Paragraph.swift @@ -29,8 +29,8 @@ public extension RichTextViewComponent { /// selected paragraphs. If many paragraphs are selected, /// it will only affect the first one. func setRichTextParagraphStyle(_ style: NSParagraphStyle) { - defer { richTextAlignment = RichTextAlignment(style.alignment) } - + defer { richTextAlignment = RichTextAlignment(style.alignment) } + let range: NSRange if multipleSelectedLines() { range = safeRange(for: selectedRange) @@ -47,11 +47,11 @@ public extension RichTextViewComponent { textStorageWrapper?.addAttribute(.paragraphStyle, value: style, range: range) #endif } - + private func multipleSelectedLines() -> Bool { guard let selectedText = textStorageWrapper?.attributedSubstring(from: selectedRange) else { return false } let selectedLines = selectedText.string.components(separatedBy: .newlines) - + return selectedLines.count > 1 } } diff --git a/Sources/RichTextKit/Coordinator/RichTextCoordinator.swift b/Sources/RichTextKit/Coordinator/RichTextCoordinator.swift index 55d7b2679..280fb760c 100644 --- a/Sources/RichTextKit/Coordinator/RichTextCoordinator.swift +++ b/Sources/RichTextKit/Coordinator/RichTextCoordinator.swift @@ -187,7 +187,7 @@ extension RichTextCoordinator { sync(&context.fontSize, with: font.pointSize) sync(&context.isEditingText, with: textView.isFirstResponder) // sync(&context.lineSpacing, with: textView.richTextLineSpacing ?? 10.0) TODO: Not done yet - sync(&context.textAlignment, with: textView.richTextAlignment ?? .left) + sync(&context.textAlignment, with: fetchAttributeAlignment() ?? .left) RichTextColor.allCases.forEach { if let color = textView.richTextColor($0) { @@ -232,5 +232,10 @@ extension RichTextCoordinator { textView.setRichTextAttributes(attributes) #endif } + + private func fetchAttributeAlignment() -> RichTextAlignment? { + guard let style = textView.richTextParagraphStyle else { return nil } + return RichTextAlignment(style.alignment) + } } #endif diff --git a/Sources/RichTextKit/RichTextView_AppKit.swift b/Sources/RichTextKit/RichTextView_AppKit.swift index a1cd8cd4a..c2cac50b3 100644 --- a/Sources/RichTextKit/RichTextView_AppKit.swift +++ b/Sources/RichTextKit/RichTextView_AppKit.swift @@ -41,7 +41,7 @@ open class RichTextView: NSTextView, RichTextViewComponent { /// Get the text alignment. public var richTextAlignment: RichTextAlignment? - + // MARK: - Overrides /// Paste the current pasteboard content into the view. diff --git a/Sources/RichTextKit/RichTextView_UIKit.swift b/Sources/RichTextKit/RichTextView_UIKit.swift index 48fcddca1..b9cb44c4b 100644 --- a/Sources/RichTextKit/RichTextView_UIKit.swift +++ b/Sources/RichTextKit/RichTextView_UIKit.swift @@ -103,10 +103,7 @@ open class RichTextView: UITextView, RichTextViewComponent { /// Get the text alignment. public var richTextAlignment: RichTextAlignment? - // { - // guard let style = richTextParagraphStyle else { return nil } - // return RichTextAlignment(style.alignment) - // } + // MARK: - Overrides /**