From 9cbf88727cd595e4c5e31144305e876084907fc5 Mon Sep 17 00:00:00 2001 From: david-swift Date: Thu, 4 Jan 2024 11:09:54 +0100 Subject: [PATCH] Add support for line wrapping to Text --- Sources/Adwaita/View/Text.swift | 14 +++++++++++++- user-manual/Information/Widgets.md | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Sources/Adwaita/View/Text.swift b/Sources/Adwaita/View/Text.swift index af69069..ee6e5d8 100644 --- a/Sources/Adwaita/View/Text.swift +++ b/Sources/Adwaita/View/Text.swift @@ -12,6 +12,8 @@ public struct Text: Widget { /// The content. var text: String + /// Whether line wrapping is allowed. + var lineWrapping = false /// Initialize a text widget. /// - Parameter text: The content. @@ -26,13 +28,23 @@ public struct Text: Widget { public func update(_ storage: ViewStorage, modifiers: [(View) -> View]) { if let label = storage.view as? MarkupLabel { label.setText(text) + _ = label.wrap(lineWrapping) } } /// Get the container of the text widget. /// - Returns: The view storage. public func container(modifiers: [(View) -> View]) -> ViewStorage { - .init(MarkupLabel(self.text)) + .init(MarkupLabel(self.text).wrap(lineWrapping)) + } + + /// Line wrapping allows the text view to span multiple lines if the width is narrow. + /// - Parameter wrap: Whether to allow line wrapping. + /// - Returns: The text. + public func wrap(_ wrap: Bool = true) -> Self { + var newSelf = self + newSelf.lineWrapping = wrap + return newSelf } } diff --git a/user-manual/Information/Widgets.md b/user-manual/Information/Widgets.md index 04af915..c45bec4 100644 --- a/user-manual/Information/Widgets.md +++ b/user-manual/Information/Widgets.md @@ -71,6 +71,11 @@ This is an overview of the available widgets and other components in _Adwaita_. | ---------------------------- | --------------------------------------------------------------------------------------- | | `headerBarTitle(view:)` | Customize the title view in the header bar. | +### `Text` Modifiers +| Syntax | Description | +| ---------------------------- | --------------------------------------------------------------------------------------------------- | +| `wrap(_:)` | Enable or disable line wrapping (expanding the text view to multiple lines if the width is narrow). | + ### `Toggle` Modifiers | Syntax | Description | | ---------------------------- | --------------------------------------------------------------------------------------- |