Improve autogenerated docs
Some checks are pending
Deploy Docs / publish (push) Waiting to run
SwiftLint / SwiftLint (push) Waiting to run

This commit is contained in:
david-swift 2025-10-30 20:48:37 +01:00
parent f86e968028
commit fd29eccd68
54 changed files with 787 additions and 2048 deletions

View File

@ -2,15 +2,15 @@
// ActionRow.swift // ActionRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] used to present actions. /// A `Gtk.ListBoxRow` used to present actions.
///
/// ///
/// <picture><source srcset="action-row-dark.png" media="(prefers-color-scheme: dark)"><img src="action-row.png" alt="action-row"></picture>
/// ///
/// The `AdwActionRow` widget can have a title, a subtitle and an icon. The row /// The `AdwActionRow` widget can have a title, a subtitle and an icon. The row
/// can receive additional widgets at its end, or prefix widgets at its start. /// can receive additional widgets at its end, or prefix widgets at its start.
@ -21,35 +21,7 @@ import LevenshteinTransformations
/// will automatically make it activatable, but unsetting it won't change the /// will automatically make it activatable, but unsetting it won't change the
/// row's activatability. /// row's activatability.
/// ///
/// ## AdwActionRow as GtkBuildable
/// ///
/// The `AdwActionRow` implementation of the [iface@Gtk.Buildable] interface
/// supports adding a child at its end by specifying suffix or omitting the
/// type attribute of a <child> element.
///
/// It also supports adding a child as a prefix widget by specifying prefix as
/// the type attribute of a <child> element.
///
/// ## CSS nodes
///
/// `AdwActionRow` has a main CSS node with name `row`.
///
/// It contains the subnode `box.header` for its main horizontal box, and
/// `box.title` for the vertical box containing the title and subtitle labels.
///
/// It contains subnodes `label.title` and `label.subtitle` representing
/// respectively the title label and subtitle label.
///
/// ## Style classes
///
/// `AdwActionRow` can use the [`.property`](style-classes.html#property-rows)
/// style class to emphasize the row subtitle instead of the row title, which is
/// useful for displaying read-only properties.
///
/// <picture><source srcset="property-row-dark.png" media="(prefers-color-scheme: dark)"><img src="property-row.png" alt="property-row"></picture>
///
/// When used together with the `.monospace` style class, only the subtitle
/// becomes monospace, not the title or any extra widgets.
public struct ActionRow: AdwaitaWidget { public struct ActionRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -60,17 +32,17 @@ public struct ActionRow: AdwaitaWidget {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
var activatableWidget: (() -> Body)? var activatableWidget: (() -> Body)?
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var subtitle: String? var subtitle: String?
/// The number of lines at the end of which the subtitle label will be /// The number of lines at the end of which the subtitle label will be
/// ellipsized. /// ellipsized.
@ -79,12 +51,12 @@ public struct ActionRow: AdwaitaWidget {
var subtitleLines: Int? var subtitleLines: Int?
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var subtitleSelectable: Bool? var subtitleSelectable: Bool?
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// The number of lines at the end of which the title label will be ellipsized. /// The number of lines at the end of which the title label will be ellipsized.
/// ///
@ -92,13 +64,13 @@ public struct ActionRow: AdwaitaWidget {
var titleLines: Int? var titleLines: Int?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -224,12 +196,12 @@ public struct ActionRow: AdwaitaWidget {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self { public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.activatableWidget = activatableWidget newSelf.activatableWidget = activatableWidget
@ -239,7 +211,7 @@ public struct ActionRow: AdwaitaWidget {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func subtitle(_ subtitle: String?) -> Self { public func subtitle(_ subtitle: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitle = subtitle newSelf.subtitle = subtitle
@ -258,7 +230,7 @@ public struct ActionRow: AdwaitaWidget {
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self { public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitleSelectable = subtitleSelectable newSelf.subtitleSelectable = subtitleSelectable
@ -268,7 +240,7 @@ public struct ActionRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -286,7 +258,7 @@ public struct ActionRow: AdwaitaWidget {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -297,7 +269,7 @@ public struct ActionRow: AdwaitaWidget {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup

View File

@ -2,7 +2,7 @@
// AspectFrame.swift // AspectFrame.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -13,15 +13,7 @@ import LevenshteinTransformations
/// The frame can respect the aspect ratio of the child widget, /// The frame can respect the aspect ratio of the child widget,
/// or use its own aspect ratio. /// or use its own aspect ratio.
/// ///
/// # CSS nodes
/// ///
/// `GtkAspectFrame` uses a CSS node with name `aspectframe`.
///
/// # Accessibility
///
/// Until GTK 4.10, `GtkAspectFrame` used the [enum@Gtk.AccessibleRole.group] role.
///
/// Starting from GTK 4.12, `GtkAspectFrame` uses the [enum@Gtk.AccessibleRole.generic] role.
public struct AspectFrame: AdwaitaWidget { public struct AspectFrame: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -40,7 +32,7 @@ public struct AspectFrame: AdwaitaWidget {
/// The aspect ratio to be used by the `GtkAspectFrame`. /// The aspect ratio to be used by the `GtkAspectFrame`.
/// ///
/// This property is only used if /// This property is only used if
/// [property@Gtk.AspectFrame:obey-child] is set to %FALSE. /// ``obeyChild(_:)`` is set to `false`.
var ratio: Float var ratio: Float
/// The horizontal alignment of the child. /// The horizontal alignment of the child.
var xalign: Float? var xalign: Float?
@ -133,7 +125,7 @@ public struct AspectFrame: AdwaitaWidget {
/// The aspect ratio to be used by the `GtkAspectFrame`. /// The aspect ratio to be used by the `GtkAspectFrame`.
/// ///
/// This property is only used if /// This property is only used if
/// [property@Gtk.AspectFrame:obey-child] is set to %FALSE. /// ``obeyChild(_:)`` is set to `false`.
public func ratio(_ ratio: Float) -> Self { public func ratio(_ ratio: Float) -> Self {
var newSelf = self var newSelf = self
newSelf.ratio = ratio newSelf.ratio = ratio

View File

@ -2,7 +2,7 @@
// Avatar.swift // Avatar.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,28 +10,22 @@ import LevenshteinTransformations
/// A widget displaying an image, with a generated fallback. /// A widget displaying an image, with a generated fallback.
/// ///
/// <picture><source srcset="avatar-dark.png" media="(prefers-color-scheme: dark)"><img src="avatar.png" alt="avatar"></picture> ///
/// ///
/// `AdwAvatar` is a widget that shows a round avatar. /// `AdwAvatar` is a widget that shows a round avatar.
/// ///
/// `AdwAvatar` generates an avatar with the initials of the /// `AdwAvatar` generates an avatar with the initials of the
/// [property@Avatar:text] on top of a colored background. /// ``text(_:)`` on top of a colored background.
/// ///
/// The color is picked based on the hash of the [property@Avatar:text]. /// The color is picked based on the hash of the ``text(_:)``.
/// ///
/// If [property@Avatar:show-initials] is set to `FALSE`, /// If ``showInitials(_:)`` is set to `false`,
/// [property@Avatar:icon-name] or `avatar-default-symbolic` is shown instead of /// ``iconName(_:)`` or `avatar-default-symbolic` is shown instead of
/// the initials. /// the initials.
/// ///
/// Use [property@Avatar:custom-image] to set a custom image. /// Use ``customImage(_:)`` to set a custom image.
/// ///
/// ## CSS nodes
/// ///
/// `AdwAvatar` has a single CSS node with name `avatar`.
///
/// ## Accessibility
///
/// `AdwAvatar` uses the `GTK_ACCESSIBLE_ROLE_IMG` role.
public struct Avatar: AdwaitaWidget { public struct Avatar: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -45,14 +39,14 @@ public struct Avatar: AdwaitaWidget {
var iconName: String? var iconName: String?
/// Whether initials are used instead of an icon on the fallback avatar. /// Whether initials are used instead of an icon on the fallback avatar.
/// ///
/// See [property@Avatar:icon-name] for how to change the fallback icon. /// See ``iconName(_:)`` for how to change the fallback icon.
var showInitials: Bool var showInitials: Bool
/// The size of the avatar. /// The size of the avatar.
var size: Int var size: Int
/// Sets the text used to generate the fallback initials and color. /// Sets the text used to generate the fallback initials and color.
/// ///
/// It's only used to generate the color if [property@Avatar:show-initials] is /// It's only used to generate the color if ``showInitials(_:)`` is
/// `FALSE`. /// `false`.
var text: String? var text: String?
/// Initialize `Avatar`. /// Initialize `Avatar`.
@ -120,7 +114,7 @@ public struct Avatar: AdwaitaWidget {
/// Whether initials are used instead of an icon on the fallback avatar. /// Whether initials are used instead of an icon on the fallback avatar.
/// ///
/// See [property@Avatar:icon-name] for how to change the fallback icon. /// See ``iconName(_:)`` for how to change the fallback icon.
public func showInitials(_ showInitials: Bool) -> Self { public func showInitials(_ showInitials: Bool) -> Self {
var newSelf = self var newSelf = self
newSelf.showInitials = showInitials newSelf.showInitials = showInitials
@ -136,8 +130,8 @@ public struct Avatar: AdwaitaWidget {
/// Sets the text used to generate the fallback initials and color. /// Sets the text used to generate the fallback initials and color.
/// ///
/// It's only used to generate the color if [property@Avatar:show-initials] is /// It's only used to generate the color if ``showInitials(_:)`` is
/// `FALSE`. /// `false`.
public func text(_ text: String?) -> Self { public func text(_ text: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.text = text newSelf.text = text

View File

@ -2,7 +2,7 @@
// Banner.swift // Banner.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,26 +10,24 @@ import LevenshteinTransformations
/// A bar with contextual information. /// A bar with contextual information.
/// ///
/// <picture><source srcset="banner-dark.png" media="(prefers-color-scheme: dark)"><img src="banner.png" alt="banner"></picture>
/// ///
/// Banners are hidden by default, use [property@Banner:revealed] to show them.
/// ///
/// Banners have a title, set with [property@Banner:title]. Titles can be marked /// Banners are hidden by default, use ``revealed(_:)`` to show them.
/// up with Pango markup, use [property@Banner:use-markup] to enable it. ///
/// Banners have a title, set with ``title(_:)``. Titles can be marked
/// up with Pango markup, use ``useMarkup(_:)`` to enable it.
/// ///
/// The title will be shown centered or left-aligned depending on available /// The title will be shown centered or left-aligned depending on available
/// space. /// space.
/// ///
/// Banners can optionally have a button with text on it, set through /// Banners can optionally have a button with text on it, set through
/// [property@Banner:button-label]. The button can be used with a `GAction`, /// ``buttonLabel(_:)``. The button can be used with a `GAction`,
/// or with the [signal@Banner::button-clicked] signal. The button can have /// or with the `Banner::button-clicked` signal. The button can have
/// different styles, a gray style and a suggested style. /// different styles, a gray style and a suggested style.
/// ///
/// <picture><source srcset="banner-suggested-dark.png" media="(prefers-color-scheme: dark)"><img src="banner-suggested.png" alt="banner with suggested button style"></picture>
/// ///
/// ## CSS nodes
/// ///
/// `AdwBanner` has a main CSS node with the name `banner`. ///
public struct Banner: AdwaitaWidget { public struct Banner: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -42,17 +40,17 @@ public struct Banner: AdwaitaWidget {
/// If set to `""` or `NULL`, the button won't be shown. /// If set to `""` or `NULL`, the button won't be shown.
/// ///
/// The button can be used with a `GAction`, or with the /// The button can be used with a `GAction`, or with the
/// [signal@Banner::button-clicked] signal. /// `Banner::button-clicked` signal.
var buttonLabel: String? var buttonLabel: String?
/// Whether the banner is currently revealed. /// Whether the banner is currently revealed.
var revealed: Bool? var revealed: Bool?
/// The title for this banner. /// The title for this banner.
/// ///
/// See also: [property@Banner:use-markup]. /// See also: ``useMarkup(_:)``.
var title: String var title: String
/// Whether to use Pango markup for the banner title. /// Whether to use Pango markup for the banner title.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// This signal is emitted after the action button has been clicked. /// This signal is emitted after the action button has been clicked.
/// ///
@ -122,7 +120,7 @@ public struct Banner: AdwaitaWidget {
/// If set to `""` or `NULL`, the button won't be shown. /// If set to `""` or `NULL`, the button won't be shown.
/// ///
/// The button can be used with a `GAction`, or with the /// The button can be used with a `GAction`, or with the
/// [signal@Banner::button-clicked] signal. /// `Banner::button-clicked` signal.
public func buttonLabel(_ buttonLabel: String?) -> Self { public func buttonLabel(_ buttonLabel: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.buttonLabel = buttonLabel newSelf.buttonLabel = buttonLabel
@ -138,7 +136,7 @@ public struct Banner: AdwaitaWidget {
/// The title for this banner. /// The title for this banner.
/// ///
/// See also: [property@Banner:use-markup]. /// See also: ``useMarkup(_:)``.
public func title(_ title: String) -> Self { public func title(_ title: String) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -147,7 +145,7 @@ public struct Banner: AdwaitaWidget {
/// Whether to use Pango markup for the banner title. /// Whether to use Pango markup for the banner title.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup

View File

@ -2,7 +2,7 @@
// Bin.swift // Bin.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,9 +10,9 @@ import LevenshteinTransformations
/// A widget with one child. /// A widget with one child.
/// ///
/// <picture><source srcset="bin-dark.png" media="(prefers-color-scheme: dark)"><img src="bin.png" alt="bin"></picture>
/// ///
/// The `AdwBin` widget has only one child, set with the [property@Bin:child] ///
/// The `AdwBin` widget has only one child, set with the ``child(_:)``
/// property. /// property.
/// ///
/// It is useful for deriving subclasses, since it provides common code needed /// It is useful for deriving subclasses, since it provides common code needed

View File

@ -2,7 +2,7 @@
// Box.swift // Box.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,38 +10,30 @@ import LevenshteinTransformations
/// Arranges child widgets into a single row or column. /// Arranges child widgets into a single row or column.
/// ///
/// <picture><source srcset="box-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkBox" src="box.png"></picture> ///
/// ///
/// Whether it is a row or column depends on the value of its /// Whether it is a row or column depends on the value of its
/// [property@Gtk.Orientable:orientation] property. Within the other /// ``orientation(_:)`` property. Within the other
/// dimension, all children are allocated the same size. The /// dimension, all children are allocated the same size. The
/// [property@Gtk.Widget:halign] and [property@Gtk.Widget:valign] /// ``halign(_:)`` and ``valign(_:)``
/// properties can be used on the children to influence their allocation. /// properties can be used on the children to influence their allocation.
/// ///
/// Use repeated calls to [method@Gtk.Box.append] to pack widgets into a /// Use repeated calls to `Gtk.Box.append` to pack widgets into a
/// `GtkBox` from start to end. Use [method@Gtk.Box.remove] to remove widgets /// `GtkBox` from start to end. Use `Gtk.Box.remove` to remove widgets
/// from the `GtkBox`. [method@Gtk.Box.insert_child_after] can be used to add /// from the `GtkBox`. `Gtk.Box.insert_child_after` can be used to add
/// a child at a particular position. /// a child at a particular position.
/// ///
/// Use [method@Gtk.Box.set_homogeneous] to specify whether or not all children /// Use `Gtk.Box.set_homogeneous` to specify whether or not all children
/// of the `GtkBox` are forced to get the same amount of space. /// of the `GtkBox` are forced to get the same amount of space.
/// ///
/// Use [method@Gtk.Box.set_spacing] to determine how much space will be minimally /// Use `Gtk.Box.set_spacing` to determine how much space will be minimally
/// placed between all children in the `GtkBox`. Note that spacing is added /// placed between all children in the `GtkBox`. Note that spacing is added
/// *between* the children. /// *between* the children.
/// ///
/// Use [method@Gtk.Box.reorder_child_after] to move a child to a different /// Use `Gtk.Box.reorder_child_after` to move a child to a different
/// place in the box. /// place in the box.
/// ///
/// # CSS nodes
/// ///
/// `GtkBox` uses a single CSS node with name box.
///
/// # Accessibility
///
/// Until GTK 4.10, `GtkBox` used the [enum@Gtk.AccessibleRole.group] role.
///
/// Starting from GTK 4.12, `GtkBox` uses the [enum@Gtk.AccessibleRole.generic] role.
public struct Box: AdwaitaWidget { public struct Box: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// Button.swift // Button.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,39 +10,13 @@ import LevenshteinTransformations
/// Calls a callback function when the button is clicked. /// Calls a callback function when the button is clicked.
/// ///
/// <picture><source srcset="button-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkButton" src="button.png"></picture> ///
/// ///
/// The `GtkButton` widget can hold any valid child widget. That is, it can hold /// The `GtkButton` widget can hold any valid child widget. That is, it can hold
/// almost any other standard `GtkWidget`. The most commonly used child is the /// almost any other standard `GtkWidget`. The most commonly used child is the
/// `GtkLabel`. /// `GtkLabel`.
/// ///
/// # Shortcuts and Gestures
/// ///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.Button::activate]
///
/// # CSS nodes
///
/// `GtkButton` has a single CSS node with name button. The node will get the
/// style classes .image-button or .text-button, if the content is just an
/// image or label, respectively. It may also receive the .flat style class.
/// When activating a button via the keyboard, the button will temporarily
/// gain the .keyboard-activating style class.
///
/// Other style classes that are commonly used with `GtkButton` include
/// .suggested-action and .destructive-action. In special cases, buttons
/// can be made round by adding the .circular style class.
///
/// Button-like widgets like [class@Gtk.ToggleButton], [class@Gtk.MenuButton],
/// [class@Gtk.VolumeButton], [class@Gtk.LockButton], [class@Gtk.ColorButton]
/// or [class@Gtk.FontButton] use style classes such as .toggle, .popup, .scale,
/// .lock, .color on the button node to differentiate themselves from a plain
/// `GtkButton`.
///
/// # Accessibility
///
/// `GtkButton` uses the [enum@Gtk.AccessibleRole.button] role.
public struct Button: AdwaitaWidget { public struct Button: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -78,7 +52,7 @@ public struct Button: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.
@ -229,7 +203,7 @@ public struct Button: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.

View File

@ -2,7 +2,7 @@
// ButtonContent.swift // ButtonContent.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,12 +10,12 @@ import LevenshteinTransformations
/// A helper widget for creating buttons. /// A helper widget for creating buttons.
/// ///
/// <picture><source srcset="button-content-dark.png" media="(prefers-color-scheme: dark)"><img src="button-content.png" alt="button-content"></picture> ///
/// ///
/// `AdwButtonContent` is a box-like widget with an icon and a label. /// `AdwButtonContent` is a box-like widget with an icon and a label.
/// ///
/// It's intended to be used as a direct child of [class@Gtk.Button], /// It's intended to be used as a direct child of `Gtk.Button`,
/// [class@Gtk.MenuButton] or [class@SplitButton], when they need to have both an /// `Gtk.MenuButton` or `SplitButton`, when they need to have both an
/// icon and a label, as follows: /// icon and a label, as follows:
/// ///
/// ```xml /// ```xml
@ -25,25 +25,7 @@ import LevenshteinTransformations
/// `AdwButtonContent` handles style classes and connecting the mnemonic to the /// `AdwButtonContent` handles style classes and connecting the mnemonic to the
/// button automatically. /// button automatically.
/// ///
/// ## CSS nodes
/// ///
/// ```
/// buttoncontent
/// box
/// image
/// label
/// ```
///
/// `AdwButtonContent`'s CSS node is called `buttoncontent`. It contains a `box`
/// subnode that serves as a container for the `image` and `label` nodes.
///
/// When inside a `GtkButton` or `AdwSplitButton`, the button will receive the
/// `.image-text-button` style class. When inside a `GtkMenuButton`, the
/// internal `GtkButton` will receive it instead.
///
/// ## Accessibility
///
/// `AdwButtonContent` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct ButtonContent: AdwaitaWidget { public struct ButtonContent: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -53,9 +35,9 @@ public struct ButtonContent: AdwaitaWidget {
/// Whether the button can be smaller than the natural size of its contents. /// Whether the button can be smaller than the natural size of its contents.
/// ///
/// If set to `TRUE`, the label will ellipsize. /// If set to `true`, the label will ellipsize.
/// ///
/// See [property@Gtk.Button:can-shrink]. /// See ``canShrink(_:)``.
var canShrink: Bool? var canShrink: Bool?
/// The name of the displayed icon. /// The name of the displayed icon.
/// ///
@ -67,7 +49,7 @@ public struct ButtonContent: AdwaitaWidget {
/// ///
/// The mnemonic can be used to activate the parent button. /// The mnemonic can be used to activate the parent button.
/// ///
/// See [property@ButtonContent:label]. /// See ``label(_:)``.
var useUnderline: Bool? var useUnderline: Bool?
/// Initialize `ButtonContent`. /// Initialize `ButtonContent`.
@ -124,9 +106,9 @@ public struct ButtonContent: AdwaitaWidget {
/// Whether the button can be smaller than the natural size of its contents. /// Whether the button can be smaller than the natural size of its contents.
/// ///
/// If set to `TRUE`, the label will ellipsize. /// If set to `true`, the label will ellipsize.
/// ///
/// See [property@Gtk.Button:can-shrink]. /// See ``canShrink(_:)``.
public func canShrink(_ canShrink: Bool? = true) -> Self { public func canShrink(_ canShrink: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.canShrink = canShrink newSelf.canShrink = canShrink
@ -153,7 +135,7 @@ public struct ButtonContent: AdwaitaWidget {
/// ///
/// The mnemonic can be used to activate the parent button. /// The mnemonic can be used to activate the parent button.
/// ///
/// See [property@ButtonContent:label]. /// See ``label(_:)``.
public func useUnderline(_ useUnderline: Bool? = true) -> Self { public func useUnderline(_ useUnderline: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useUnderline = useUnderline newSelf.useUnderline = useUnderline

View File

@ -2,7 +2,7 @@
// Carousel.swift // Carousel.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,17 +10,15 @@ import LevenshteinTransformations
/// A paginated scrolling widget. /// A paginated scrolling widget.
/// ///
/// <picture><source srcset="carousel-dark.png" media="(prefers-color-scheme: dark)"><img src="carousel.png" alt="carousel"></picture> ///
/// ///
/// The `AdwCarousel` widget can be used to display a set of pages with /// The `AdwCarousel` widget can be used to display a set of pages with
/// swipe-based navigation between them. /// swipe-based navigation between them.
/// ///
/// [class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used /// `CarouselIndicatorDots` and `CarouselIndicatorLines` can be used
/// to provide page indicators for `AdwCarousel`. /// to provide page indicators for `AdwCarousel`.
/// ///
/// ## CSS nodes
/// ///
/// `AdwCarousel` has a single CSS node with name `carousel`.
public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable { public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -30,15 +28,15 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// Whether to allow swiping for more than one page at a time. /// Whether to allow swiping for more than one page at a time.
/// ///
/// If the value is `FALSE`, each swipe can only move to the adjacent pages. /// If the value is `false`, each swipe can only move to the adjacent pages.
var allowLongSwipes: Bool? var allowLongSwipes: Bool?
/// Sets whether the `AdwCarousel` can be dragged with mouse pointer. /// Sets whether the `AdwCarousel` can be dragged with mouse pointer.
/// ///
/// If the value is `FALSE`, dragging is only available on touch. /// If the value is `false`, dragging is only available on touch.
var allowMouseDrag: Bool? var allowMouseDrag: Bool?
/// Whether the widget will respond to scroll wheel events. /// Whether the widget will respond to scroll wheel events.
/// ///
/// If the value is `FALSE`, wheel events will be ignored. /// If the value is `false`, wheel events will be ignored.
var allowScrollWheel: Bool? var allowScrollWheel: Bool?
/// Whether the carousel can be navigated. /// Whether the carousel can be navigated.
/// ///
@ -58,8 +56,8 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// It can be used to implement "infinite scrolling" by amending the pages /// It can be used to implement "infinite scrolling" by amending the pages
/// after every scroll. /// after every scroll.
/// ///
/// ::: note /// > [!NOTE]
/// An empty carousel is indicated by `(int)index == -1`. /// > An empty carousel is indicated by `(int)index == -1`.
var pageChanged: (() -> Void)? var pageChanged: (() -> Void)?
/// The dynamic widget elements. /// The dynamic widget elements.
var elements: [Element] var elements: [Element]
@ -150,7 +148,7 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// Whether to allow swiping for more than one page at a time. /// Whether to allow swiping for more than one page at a time.
/// ///
/// If the value is `FALSE`, each swipe can only move to the adjacent pages. /// If the value is `false`, each swipe can only move to the adjacent pages.
public func allowLongSwipes(_ allowLongSwipes: Bool? = true) -> Self { public func allowLongSwipes(_ allowLongSwipes: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.allowLongSwipes = allowLongSwipes newSelf.allowLongSwipes = allowLongSwipes
@ -159,7 +157,7 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// Sets whether the `AdwCarousel` can be dragged with mouse pointer. /// Sets whether the `AdwCarousel` can be dragged with mouse pointer.
/// ///
/// If the value is `FALSE`, dragging is only available on touch. /// If the value is `false`, dragging is only available on touch.
public func allowMouseDrag(_ allowMouseDrag: Bool? = true) -> Self { public func allowMouseDrag(_ allowMouseDrag: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.allowMouseDrag = allowMouseDrag newSelf.allowMouseDrag = allowMouseDrag
@ -168,7 +166,7 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// Whether the widget will respond to scroll wheel events. /// Whether the widget will respond to scroll wheel events.
/// ///
/// If the value is `FALSE`, wheel events will be ignored. /// If the value is `false`, wheel events will be ignored.
public func allowScrollWheel(_ allowScrollWheel: Bool? = true) -> Self { public func allowScrollWheel(_ allowScrollWheel: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.allowScrollWheel = allowScrollWheel newSelf.allowScrollWheel = allowScrollWheel
@ -213,8 +211,8 @@ public struct Carousel<Element>: AdwaitaWidget where Element: Identifiable {
/// It can be used to implement "infinite scrolling" by amending the pages /// It can be used to implement "infinite scrolling" by amending the pages
/// after every scroll. /// after every scroll.
/// ///
/// ::: note /// > [!NOTE]
/// An empty carousel is indicated by `(int)index == -1`. /// > An empty carousel is indicated by `(int)index == -1`.
public func pageChanged(_ pageChanged: @escaping () -> Void) -> Self { public func pageChanged(_ pageChanged: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.pageChanged = pageChanged newSelf.pageChanged = pageChanged

View File

@ -2,7 +2,7 @@
// CenterBox.swift // CenterBox.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -11,38 +11,16 @@ import LevenshteinTransformations
/// Arranges three children in a row, keeping the middle child /// Arranges three children in a row, keeping the middle child
/// centered as well as possible. /// centered as well as possible.
/// ///
/// <picture><source srcset="centerbox-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkCenterBox" src="centerbox.png"></picture>
/// ///
/// To add children to `GtkCenterBox`, use [method@Gtk.CenterBox.set_start_widget], ///
/// [method@Gtk.CenterBox.set_center_widget] and /// To add children to `GtkCenterBox`, use `Gtk.CenterBox.set_start_widget`,
/// [method@Gtk.CenterBox.set_end_widget]. /// `Gtk.CenterBox.set_center_widget` and
/// `Gtk.CenterBox.set_end_widget`.
/// ///
/// The sizing and positioning of children can be influenced with the /// The sizing and positioning of children can be influenced with the
/// align and expand properties of the children. /// align and expand properties of the children.
/// ///
/// # GtkCenterBox as GtkBuildable
/// ///
/// The `GtkCenterBox` implementation of the `GtkBuildable` interface
/// supports placing children in the 3 positions by specifying start, center
/// or end as the type attribute of a `<child>` element.
///
/// # CSS nodes
///
/// `GtkCenterBox` uses a single CSS node with the name box,
///
/// The first child of the `GtkCenterBox` will be allocated depending on the
/// text direction, i.e. in left-to-right layouts it will be allocated on the
/// left and in right-to-left layouts on the right.
///
/// In vertical orientation, the nodes of the children are arranged from top to
/// bottom.
///
/// # Accessibility
///
/// Until GTK 4.10, `GtkCenterBox` used the [enum@Gtk.AccessibleRole.group] role.
///
/// Starting from GTK 4.12, `GtkCenterBox` uses the [enum@Gtk.AccessibleRole.generic]
/// role.
public struct CenterBox: AdwaitaWidget { public struct CenterBox: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// CheckButton.swift // CheckButton.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,67 +10,16 @@ import LevenshteinTransformations
/// Places a label next to an indicator. /// Places a label next to an indicator.
/// ///
/// <picture><source srcset="check-button-dark.png" media="(prefers-color-scheme: dark)"><img alt="Example GtkCheckButtons" src="check-button.png"></picture>
/// ///
/// A `GtkCheckButton` is created by calling either [ctor@Gtk.CheckButton.new] ///
/// or [ctor@Gtk.CheckButton.new_with_label]. /// A `GtkCheckButton` is created by calling either `Gtk.CheckButton.new`
/// or `Gtk.CheckButton.new_with_label`.
/// ///
/// The state of a `GtkCheckButton` can be set specifically using /// The state of a `GtkCheckButton` can be set specifically using
/// [method@Gtk.CheckButton.set_active], and retrieved using /// `Gtk.CheckButton.set_active`, and retrieved using
/// [method@Gtk.CheckButton.get_active]. /// `Gtk.CheckButton.get_active`.
/// ///
/// # Inconsistent state
/// ///
/// In addition to "on" and "off", check buttons can be an
/// "in between" state that is neither on nor off. This can be used
/// e.g. when the user has selected a range of elements (such as some
/// text or spreadsheet cells) that are affected by a check button,
/// and the current values in that range are inconsistent.
///
/// To set a `GtkCheckButton` to inconsistent state, use
/// [method@Gtk.CheckButton.set_inconsistent].
///
/// # Grouping
///
/// Check buttons can be grouped together, to form mutually exclusive
/// groups - only one of the buttons can be toggled at a time, and toggling
/// another one will switch the currently toggled one off.
///
/// Grouped check buttons use a different indicator, and are commonly referred
/// to as *radio buttons*.
///
/// <picture><source srcset="radio-button-dark.png" media="(prefers-color-scheme: dark)"><img alt="Example GtkRadioButtons" src="radio-button.png"></picture>
///
/// To add a `GtkCheckButton` to a group, use [method@Gtk.CheckButton.set_group].
///
/// When the code must keep track of the state of a group of radio buttons, it
/// is recommended to keep track of such state through a stateful
/// `GAction` with a target for each button. Using the `toggled` signals to keep
/// track of the group changes and state is discouraged.
///
/// # Shortcuts and Gestures
///
/// `GtkCheckButton` supports the following keyboard shortcuts:
///
/// - <kbd></kbd> or <kbd>Enter</kbd> activates the button.
///
/// # CSS nodes
///
/// ```
/// checkbutton[.text-button][.grouped]
/// check
/// [label]
/// ```
///
/// A `GtkCheckButton` has a main node with name checkbutton. If the
/// [property@Gtk.CheckButton:label] or [property@Gtk.CheckButton:child]
/// properties are set, it contains a child widget. The indicator node
/// is named check when no group is set, and radio if the checkbutton
/// is grouped together with other checkbuttons.
///
/// # Accessibility
///
/// `GtkCheckButton` uses the [enum@Gtk.AccessibleRole.checkbox] role.
public struct CheckButton: AdwaitaWidget { public struct CheckButton: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -86,7 +35,7 @@ public struct CheckButton: AdwaitaWidget {
var actionName: String? var actionName: String?
/// If the check button is active. /// If the check button is active.
/// ///
/// Setting `active` to %TRUE will add the `:checked:` state to both /// Setting `active` to `true` will add the `:checked:` state to both
/// the check button and the indicator CSS node. /// the check button and the indicator CSS node.
var active: Binding<Bool>? var active: Binding<Bool>?
/// The child widget. /// The child widget.
@ -107,12 +56,12 @@ public struct CheckButton: AdwaitaWidget {
/// emitting it causes the button to animate press then release. /// emitting it causes the button to animate press then release.
/// ///
/// Applications should never connect to this signal, but use the /// Applications should never connect to this signal, but use the
/// [signal@Gtk.CheckButton::toggled] signal. /// `Gtk.CheckButton::toggled` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.
var activate: (() -> Void)? var activate: (() -> Void)?
/// Emitted when the buttons's [property@Gtk.CheckButton:active] /// Emitted when the buttons's ``active(_:)``
/// property changes. /// property changes.
var toggled: (() -> Void)? var toggled: (() -> Void)?
@ -212,7 +161,7 @@ if let active, newValue != active.wrappedValue {
/// If the check button is active. /// If the check button is active.
/// ///
/// Setting `active` to %TRUE will add the `:checked:` state to both /// Setting `active` to `true` will add the `:checked:` state to both
/// the check button and the indicator CSS node. /// the check button and the indicator CSS node.
public func active(_ active: Binding<Bool>?) -> Self { public func active(_ active: Binding<Bool>?) -> Self {
var newSelf = self var newSelf = self
@ -258,7 +207,7 @@ if let active, newValue != active.wrappedValue {
/// emitting it causes the button to animate press then release. /// emitting it causes the button to animate press then release.
/// ///
/// Applications should never connect to this signal, but use the /// Applications should never connect to this signal, but use the
/// [signal@Gtk.CheckButton::toggled] signal. /// `Gtk.CheckButton::toggled` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.
@ -268,7 +217,7 @@ if let active, newValue != active.wrappedValue {
return newSelf return newSelf
} }
/// Emitted when the buttons's [property@Gtk.CheckButton:active] /// Emitted when the buttons's ``active(_:)``
/// property changes. /// property changes.
public func toggled(_ toggled: @escaping () -> Void) -> Self { public func toggled(_ toggled: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// Clamp.swift // Clamp.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// A widget constraining its child to a given size. /// A widget constraining its child to a given size.
/// ///
/// <picture><source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"><img src="clamp-wide.png" alt="clamp-wide"></picture><picture><source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"><img src="clamp-narrow.png" alt="clamp-narrow"></picture> ///
/// ///
/// The `AdwClamp` widget constrains the size of the widget it contains to a /// The `AdwClamp` widget constrains the size of the widget it contains to a
/// given maximum size. It will constrain the width if it is horizontal, or the /// given maximum size. It will constrain the width if it is horizontal, or the
@ -21,13 +21,11 @@ import LevenshteinTransformations
/// allocated the minimum size it can fit in instead. /// allocated the minimum size it can fit in instead.
/// ///
/// `AdwClamp` can scale with the text scale factor, use the /// `AdwClamp` can scale with the text scale factor, use the
/// [property@Clamp:unit] property to enable that behavior. /// ``unit(_:)`` property to enable that behavior.
/// ///
/// See also: [class@ClampLayout], [class@ClampScrollable]. /// See also: `ClampLayout`, `ClampScrollable`.
/// ///
/// ## CSS nodes
/// ///
/// `AdwClamp` has a single CSS node with name `clamp`.
public struct Clamp: AdwaitaWidget { public struct Clamp: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,15 +2,15 @@
// ComboRow.swift // ComboRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] used to choose from a list of items. /// A `Gtk.ListBoxRow` used to choose from a list of items.
///
/// ///
/// <picture><source srcset="combo-row-dark.png" media="(prefers-color-scheme: dark)"><img src="combo-row.png" alt="combo-row"></picture>
/// ///
/// The `AdwComboRow` widget allows the user to choose from a list of valid /// The `AdwComboRow` widget allows the user to choose from a list of valid
/// choices. The row displays the selected choice. When activated, the row /// choices. The row displays the selected choice. When activated, the row
@ -21,26 +21,15 @@ import LevenshteinTransformations
/// <object class="AdwComboRow"><property name="title" translatable="yes">Combo Row</property><property name="model"><object class="GtkStringList"><items><item translatable="yes">Foo</item><item translatable="yes">Bar</item><item translatable="yes">Baz</item></items></object></property></object> /// <object class="AdwComboRow"><property name="title" translatable="yes">Combo Row</property><property name="model"><object class="GtkStringList"><items><item translatable="yes">Foo</item><item translatable="yes">Bar</item><item translatable="yes">Baz</item></items></object></property></object>
/// ``` /// ```
/// ///
/// The [property@ComboRow:selected] and [property@ComboRow:selected-item] /// The ``selected(_:)`` and ``selectedItem(_:)``
/// properties can be used to keep track of the selected item and react to their /// properties can be used to keep track of the selected item and react to their
/// changes. /// changes.
/// ///
/// `AdwComboRow` mirrors [class@Gtk.DropDown], see that widget for details. /// `AdwComboRow` mirrors `Gtk.DropDown`, see that widget for details.
/// ///
/// `AdwComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set. /// `AdwComboRow` is ``activatable(_:)`` if a model is set.
/// ///
/// ## CSS nodes
/// ///
/// `AdwComboRow` has a main CSS node with name `row` and the `.combo` style
/// class.
///
/// Its popover has the node named `popover` with the `.menu` style class, it
/// contains a [class@Gtk.ScrolledWindow], which in turn contains a
/// [class@Gtk.ListView], both are accessible via their regular nodes.
///
/// ## Accessibility
///
/// `AdwComboRow` uses the `GTK_ACCESSIBLE_ROLE_COMBO_BOX` role.
public struct ComboRow: AdwaitaWidget { public struct ComboRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -51,29 +40,29 @@ public struct ComboRow: AdwaitaWidget {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
var activatableWidget: (() -> Body)? var activatableWidget: (() -> Body)?
/// Whether to show a search entry in the popup. /// Whether to show a search entry in the popup.
/// ///
/// If set to `TRUE`, a search entry will be shown in the popup that /// If set to `true`, a search entry will be shown in the popup that
/// allows to search for items in the list. /// allows to search for items in the list.
/// ///
/// Search requires [property@ComboRow:expression] to be set. /// Search requires ``expression(_:)`` to be set.
var enableSearch: Bool? var enableSearch: Bool?
/// The position of the selected item. /// The position of the selected item.
/// ///
/// If no item is selected, the property has the value /// If no item is selected, the property has the value
/// [const@Gtk.INVALID_LIST_POSITION] /// `Gtk.INVALID_LIST_POSITION`
var selected: Binding<UInt>? var selected: Binding<UInt>?
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var subtitle: String? var subtitle: String?
/// The number of lines at the end of which the subtitle label will be /// The number of lines at the end of which the subtitle label will be
/// ellipsized. /// ellipsized.
@ -82,12 +71,12 @@ public struct ComboRow: AdwaitaWidget {
var subtitleLines: Int? var subtitleLines: Int?
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var subtitleSelectable: Bool? var subtitleSelectable: Bool?
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// The number of lines at the end of which the title label will be ellipsized. /// The number of lines at the end of which the title label will be ellipsized.
/// ///
@ -95,23 +84,23 @@ public struct ComboRow: AdwaitaWidget {
var titleLines: Int? var titleLines: Int?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether to use the current value as the subtitle. /// Whether to use the current value as the subtitle.
/// ///
/// If you use a custom list item factory, you will need to give the row a /// If you use a custom list item factory, you will need to give the row a
/// name conversion expression with [property@ComboRow:expression]. /// name conversion expression with ``expression(_:)``.
/// ///
/// If set to `TRUE`, you should not access [property@ActionRow:subtitle]. /// If set to `true`, you should not access ``subtitle(_:)``.
/// ///
/// The subtitle is interpreted as Pango markup if /// The subtitle is interpreted as Pango markup if
/// [property@PreferencesRow:use-markup] is set to `TRUE`. /// ``useMarkup(_:)`` is set to `true`.
var useSubtitle: Bool? var useSubtitle: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -228,12 +217,12 @@ if let selected, newValue != selected.wrappedValue {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self { public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.activatableWidget = activatableWidget newSelf.activatableWidget = activatableWidget
@ -242,10 +231,10 @@ if let selected, newValue != selected.wrappedValue {
/// Whether to show a search entry in the popup. /// Whether to show a search entry in the popup.
/// ///
/// If set to `TRUE`, a search entry will be shown in the popup that /// If set to `true`, a search entry will be shown in the popup that
/// allows to search for items in the list. /// allows to search for items in the list.
/// ///
/// Search requires [property@ComboRow:expression] to be set. /// Search requires ``expression(_:)`` to be set.
public func enableSearch(_ enableSearch: Bool? = true) -> Self { public func enableSearch(_ enableSearch: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.enableSearch = enableSearch newSelf.enableSearch = enableSearch
@ -255,7 +244,7 @@ if let selected, newValue != selected.wrappedValue {
/// The position of the selected item. /// The position of the selected item.
/// ///
/// If no item is selected, the property has the value /// If no item is selected, the property has the value
/// [const@Gtk.INVALID_LIST_POSITION] /// `Gtk.INVALID_LIST_POSITION`
public func selected(_ selected: Binding<UInt>?) -> Self { public func selected(_ selected: Binding<UInt>?) -> Self {
var newSelf = self var newSelf = self
newSelf.selected = selected newSelf.selected = selected
@ -265,7 +254,7 @@ if let selected, newValue != selected.wrappedValue {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func subtitle(_ subtitle: String?) -> Self { public func subtitle(_ subtitle: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitle = subtitle newSelf.subtitle = subtitle
@ -284,7 +273,7 @@ if let selected, newValue != selected.wrappedValue {
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self { public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitleSelectable = subtitleSelectable newSelf.subtitleSelectable = subtitleSelectable
@ -294,7 +283,7 @@ if let selected, newValue != selected.wrappedValue {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -312,7 +301,7 @@ if let selected, newValue != selected.wrappedValue {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -323,7 +312,7 @@ if let selected, newValue != selected.wrappedValue {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup
@ -333,12 +322,12 @@ if let selected, newValue != selected.wrappedValue {
/// Whether to use the current value as the subtitle. /// Whether to use the current value as the subtitle.
/// ///
/// If you use a custom list item factory, you will need to give the row a /// If you use a custom list item factory, you will need to give the row a
/// name conversion expression with [property@ComboRow:expression]. /// name conversion expression with ``expression(_:)``.
/// ///
/// If set to `TRUE`, you should not access [property@ActionRow:subtitle]. /// If set to `true`, you should not access ``subtitle(_:)``.
/// ///
/// The subtitle is interpreted as Pango markup if /// The subtitle is interpreted as Pango markup if
/// [property@PreferencesRow:use-markup] is set to `TRUE`. /// ``useMarkup(_:)`` is set to `true`.
public func useSubtitle(_ useSubtitle: Bool? = true) -> Self { public func useSubtitle(_ useSubtitle: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useSubtitle = useSubtitle newSelf.useSubtitle = useSubtitle

View File

@ -2,7 +2,7 @@
// DropDown.swift // DropDown.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,27 +10,27 @@ import LevenshteinTransformations
/// Allows the user to choose an item from a list of options. /// Allows the user to choose an item from a list of options.
/// ///
/// <picture><source srcset="drop-down-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkDropDown" src="drop-down.png"></picture>
/// ///
/// The `GtkDropDown` displays the [selected][property@Gtk.DropDown:selected] ///
/// The `GtkDropDown` displays the [selected]``selected(_:)``
/// choice. /// choice.
/// ///
/// The options are given to `GtkDropDown` in the form of `GListModel` /// The options are given to `GtkDropDown` in the form of `GListModel`
/// and how the individual options are represented is determined by /// and how the individual options are represented is determined by
/// a [class@Gtk.ListItemFactory]. The default factory displays simple strings, /// a `Gtk.ListItemFactory`. The default factory displays simple strings,
/// and adds a checkmark to the selected item in the popup. /// and adds a checkmark to the selected item in the popup.
/// ///
/// To set your own factory, use [method@Gtk.DropDown.set_factory]. It is /// To set your own factory, use `Gtk.DropDown.set_factory`. It is
/// possible to use a separate factory for the items in the popup, with /// possible to use a separate factory for the items in the popup, with
/// [method@Gtk.DropDown.set_list_factory]. /// `Gtk.DropDown.set_list_factory`.
/// ///
/// `GtkDropDown` knows how to obtain strings from the items in a /// `GtkDropDown` knows how to obtain strings from the items in a
/// [class@Gtk.StringList]; for other models, you have to provide an expression /// `Gtk.StringList`; for other models, you have to provide an expression
/// to find the strings via [method@Gtk.DropDown.set_expression]. /// to find the strings via `Gtk.DropDown.set_expression`.
/// ///
/// `GtkDropDown` can optionally allow search in the popup, which is /// `GtkDropDown` can optionally allow search in the popup, which is
/// useful if the list of options is long. To enable the search entry, /// useful if the list of options is long. To enable the search entry,
/// use [method@Gtk.DropDown.set_enable_search]. /// use `Gtk.DropDown.set_enable_search`.
/// ///
/// Here is a UI definition example for `GtkDropDown` with a simple model: /// Here is a UI definition example for `GtkDropDown` with a simple model:
/// ///
@ -39,20 +39,13 @@ import LevenshteinTransformations
/// ``` /// ```
/// ///
/// If a `GtkDropDown` is created in this manner, or with /// If a `GtkDropDown` is created in this manner, or with
/// [ctor@Gtk.DropDown.new_from_strings], for instance, the object returned from /// `Gtk.DropDown.new_from_strings`, for instance, the object returned from
/// [method@Gtk.DropDown.get_selected_item] will be a [class@Gtk.StringObject]. /// `Gtk.DropDown.get_selected_item` will be a `Gtk.StringObject`.
/// ///
/// To learn more about the list widget framework, see the /// To learn more about the list widget framework, see the
/// [overview](section-list-widget.html). /// [overview](section-list-widget.html).
/// ///
/// ## CSS nodes
/// ///
/// `GtkDropDown` has a single CSS node with name dropdown,
/// with the button and popover nodes as children.
///
/// ## Accessibility
///
/// `GtkDropDown` uses the [enum@Gtk.AccessibleRole.combo_box] role.
public struct DropDown: AdwaitaWidget { public struct DropDown: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -66,7 +59,7 @@ public struct DropDown: AdwaitaWidget {
var accessibleRole: String? var accessibleRole: String?
/// Whether to show a search entry in the popup. /// Whether to show a search entry in the popup.
/// ///
/// Note that search requires [property@Gtk.DropDown:expression] /// Note that search requires ``expression(_:)``
/// to be set. /// to be set.
var enableSearch: Bool? var enableSearch: Bool?
/// The position of the selected item. /// The position of the selected item.
@ -153,7 +146,7 @@ if let selected, newValue != selected.wrappedValue {
/// Whether to show a search entry in the popup. /// Whether to show a search entry in the popup.
/// ///
/// Note that search requires [property@Gtk.DropDown:expression] /// Note that search requires ``expression(_:)``
/// to be set. /// to be set.
public func enableSearch(_ enableSearch: Bool? = true) -> Self { public func enableSearch(_ enableSearch: Bool? = true) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// Entry.swift // Entry.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,33 +10,33 @@ import LevenshteinTransformations
/// A single-line text entry widget. /// A single-line text entry widget.
/// ///
/// <picture><source srcset="entry-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkEntry" src="entry.png"></picture> ///
/// ///
/// A fairly large set of key bindings are supported by default. If the /// A fairly large set of key bindings are supported by default. If the
/// entered text is longer than the allocation of the widget, the widget /// entered text is longer than the allocation of the widget, the widget
/// will scroll so that the cursor position is visible. /// will scroll so that the cursor position is visible.
/// ///
/// When using an entry for passwords and other sensitive information, it /// When using an entry for passwords and other sensitive information, it
/// can be put into password mode using [method@Gtk.Entry.set_visibility]. /// can be put into password mode using `Gtk.Entry.set_visibility`.
/// In this mode, entered text is displayed using a invisible character. /// In this mode, entered text is displayed using a invisible character.
/// By default, GTK picks the best invisible character that is available /// By default, GTK picks the best invisible character that is available
/// in the current font, but it can be changed with /// in the current font, but it can be changed with
/// [method@Gtk.Entry.set_invisible_char]. /// `Gtk.Entry.set_invisible_char`.
/// ///
/// `GtkEntry` has the ability to display progress or activity /// `GtkEntry` has the ability to display progress or activity
/// information behind the text. To make an entry display such information, /// information behind the text. To make an entry display such information,
/// use [method@Gtk.Entry.set_progress_fraction] or /// use `Gtk.Entry.set_progress_fraction` or
/// [method@Gtk.Entry.set_progress_pulse_step]. /// `Gtk.Entry.set_progress_pulse_step`.
/// ///
/// Additionally, `GtkEntry` can show icons at either side of the entry. /// Additionally, `GtkEntry` can show icons at either side of the entry.
/// These icons can be activatable by clicking, can be set up as drag source /// These icons can be activatable by clicking, can be set up as drag source
/// and can have tooltips. To add an icon, use /// and can have tooltips. To add an icon, use
/// [method@Gtk.Entry.set_icon_from_gicon] or one of the various other functions /// `Gtk.Entry.set_icon_from_gicon` or one of the various other functions
/// that set an icon from an icon name or a paintable. To trigger an action when /// that set an icon from an icon name or a paintable. To trigger an action when
/// the user clicks an icon, connect to the [signal@Gtk.Entry::icon-press] signal. /// the user clicks an icon, connect to the `Gtk.Entry::icon-press` signal.
/// To allow DND operations from an icon, use /// To allow DND operations from an icon, use
/// [method@Gtk.Entry.set_icon_drag_source]. To set a tooltip on an icon, use /// `Gtk.Entry.set_icon_drag_source`. To set a tooltip on an icon, use
/// [method@Gtk.Entry.set_icon_tooltip_text] or the corresponding function /// `Gtk.Entry.set_icon_tooltip_text` or the corresponding function
/// for markup. /// for markup.
/// ///
/// Note that functionality or information that is only available by clicking /// Note that functionality or information that is only available by clicking
@ -45,51 +45,7 @@ import LevenshteinTransformations
/// that any such functionality should also be available by other means, e.g. /// that any such functionality should also be available by other means, e.g.
/// via the context menu of the entry. /// via the context menu of the entry.
/// ///
/// # CSS nodes
/// ///
/// ```
/// entry[.flat][.warning][.error]
/// text[.readonly]
/// image.left
/// image.right
/// [progress[.pulse]]
/// ```
///
/// `GtkEntry` has a main node with the name entry. Depending on the properties
/// of the entry, the style classes .read-only and .flat may appear. The style
/// classes .warning and .error may also be used with entries.
///
/// When the entry shows icons, it adds subnodes with the name image and the
/// style class .left or .right, depending on where the icon appears.
///
/// When the entry shows progress, it adds a subnode with the name progress.
/// The node has the style class .pulse when the shown progress is pulsing.
///
/// For all the subnodes added to the text node in various situations,
/// see [class@Gtk.Text].
///
/// # GtkEntry as GtkBuildable
///
/// The `GtkEntry` implementation of the `GtkBuildable` interface supports a
/// custom `<attributes>` element, which supports any number of `<attribute>`
/// elements. The `<attribute>` element has attributes named name, value,
/// start and end and allows you to specify `PangoAttribute` values for
/// this label.
///
/// An example of a UI definition fragment specifying Pango attributes:
/// ```xml
/// <object class="GtkEntry"><attributes><attribute name="weight" value="PANGO_WEIGHT_BOLD"/><attribute name="background" value="red" start="5" end="10"/></attributes></object>
/// ```
///
/// The start and end attributes specify the range of characters to which the
/// Pango attribute applies. If start and end are not specified, the attribute
/// is applied to the whole text. Note that specifying ranges does not make much
/// sense with translatable attributes. Use markup embedded in the translatable
/// content instead.
///
/// # Accessibility
///
/// `GtkEntry` uses the [enum@Gtk.AccessibleRole.text_box] role.
public struct Entry: AdwaitaWidget { public struct Entry: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -118,10 +74,10 @@ public struct Entry: AdwaitaWidget {
var hasFrame: Bool? var hasFrame: Bool?
/// Which IM (input method) module should be used for this entry. /// Which IM (input method) module should be used for this entry.
/// ///
/// See [class@Gtk.IMContext]. /// See `Gtk.IMContext`.
/// ///
/// Setting this to a non-%NULL value overrides the system-wide IM /// Setting this to a non-%NULL value overrides the system-wide IM
/// module setting. See the GtkSettings [property@Gtk.Settings:gtk-im-module] /// module setting. See the GtkSettings ``gtkImModule(_:)``
/// property. /// property.
var imModule: String? var imModule: String?
/// The character to use when masking entry contents (password mode). /// The character to use when masking entry contents (password mode).
@ -132,6 +88,32 @@ public struct Entry: AdwaitaWidget {
var maxLength: Int? var maxLength: Int?
/// The desired maximum width of the entry, in characters. /// The desired maximum width of the entry, in characters.
var maxWidthChars: Int? var maxWidthChars: Int?
/// Text for an item in the context menu to activate the primary icon action.
///
/// When the primary icon is activatable and this property has been set, a new entry
/// in the context menu of this GtkEntry will appear with this text. Selecting that
/// menu entry will result in the primary icon being activated, exactly in the same way
/// as it would be activated from a mouse click.
///
/// This simplifies adding accessibility support to applications using activatable
/// icons. The activatable icons aren't focusable when navigating the interface with
/// the keyboard This is why Gtk recommends to also add those actions in the context
/// menu. This set of methods greatly simplifies this, by adding a menu item that, when
/// enabled, calls the same callback than clicking on the icon.
var menuEntryIconPrimaryText: String?
/// Text for an item in the context menu to activate the secondary icon action.
///
/// When the primary icon is activatable and this property has been set, a new entry
/// in the context menu of this GtkEntry will appear with this text. Selecting that
/// menu entry will result in the primary icon being activated, exactly in the same way
/// as it would be activated from a mouse click.
///
/// This simplifies adding accessibility support to applications using activatable
/// icons. The activatable icons aren't focusable when navigating the interface with
/// the keyboard This is why Gtk recommends to also add those actions in the context
/// menu. This set of methods greatly simplifies this, by adding a menu item that, when
/// enabled, calls the same callback than clicking on the icon.
var menuEntryIconSecondaryText: String?
/// If text is overwritten when typing in the `GtkEntry`. /// If text is overwritten when typing in the `GtkEntry`.
var overwriteMode: Bool? var overwriteMode: Bool?
/// The text that will be displayed in the `GtkEntry` when it is empty /// The text that will be displayed in the `GtkEntry` when it is empty
@ -139,8 +121,8 @@ public struct Entry: AdwaitaWidget {
var placeholderText: String? var placeholderText: String?
/// Whether the primary icon is activatable. /// Whether the primary icon is activatable.
/// ///
/// GTK emits the [signal@Gtk.Entry::icon-press] and /// GTK emits the `Gtk.Entry::icon-press` and
/// [signal@Gtk.Entry::icon-release] signals only on sensitive, /// `Gtk.Entry::icon-release` signals only on sensitive,
/// activatable icons. /// activatable icons.
/// ///
/// Sensitive, but non-activatable icons can be used for purely /// Sensitive, but non-activatable icons can be used for purely
@ -151,7 +133,7 @@ public struct Entry: AdwaitaWidget {
/// Whether the primary icon is sensitive. /// Whether the primary icon is sensitive.
/// ///
/// An insensitive icon appears grayed out. GTK does not emit the /// An insensitive icon appears grayed out. GTK does not emit the
/// [signal@Gtk.Entry::icon-press] and [signal@Gtk.Entry::icon-release] /// `Gtk.Entry::icon-press` and `Gtk.Entry::icon-release`
/// signals and does not allow DND from insensitive icons. /// signals and does not allow DND from insensitive icons.
/// ///
/// An icon should be set insensitive if the action that would trigger /// An icon should be set insensitive if the action that would trigger
@ -159,25 +141,25 @@ public struct Entry: AdwaitaWidget {
var primaryIconSensitive: Bool? var primaryIconSensitive: Bool?
/// The contents of the tooltip on the primary icon, with markup. /// The contents of the tooltip on the primary icon, with markup.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_markup]. /// Also see `Gtk.Entry.set_icon_tooltip_markup`.
var primaryIconTooltipMarkup: String? var primaryIconTooltipMarkup: String?
/// The contents of the tooltip on the primary icon. /// The contents of the tooltip on the primary icon.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_text]. /// Also see `Gtk.Entry.set_icon_tooltip_text`.
var primaryIconTooltipText: String? var primaryIconTooltipText: String?
/// The current fraction of the task that's been completed. /// The current fraction of the task that's been completed.
var progressFraction: Double? var progressFraction: Double?
/// The fraction of total entry width to move the progress /// The fraction of total entry width to move the progress
/// bouncing block for each pulse. /// bouncing block for each pulse.
/// ///
/// See [method@Gtk.Entry.progress_pulse]. /// See `Gtk.Entry.progress_pulse`.
var progressPulseStep: Double? var progressPulseStep: Double?
/// Number of pixels of the entry scrolled off the screen to the left. /// Number of pixels of the entry scrolled off the screen to the left.
var scrollOffset: Int? var scrollOffset: Int?
/// Whether the secondary icon is activatable. /// Whether the secondary icon is activatable.
/// ///
/// GTK emits the [signal@Gtk.Entry::icon-press] and /// GTK emits the `Gtk.Entry::icon-press` and
/// [signal@Gtk.Entry::icon-release] signals only on sensitive, /// `Gtk.Entry::icon-release` signals only on sensitive,
/// activatable icons. /// activatable icons.
/// ///
/// Sensitive, but non-activatable icons can be used for purely /// Sensitive, but non-activatable icons can be used for purely
@ -188,7 +170,7 @@ public struct Entry: AdwaitaWidget {
/// Whether the secondary icon is sensitive. /// Whether the secondary icon is sensitive.
/// ///
/// An insensitive icon appears grayed out. GTK does not emit the /// An insensitive icon appears grayed out. GTK does not emit the
/// [signal@Gtk.Entry::icon-press[ and [signal@Gtk.Entry::icon-release] /// `Gtk.Entry::icon-press[ and [signal@Gtk.Entry::icon-release`
/// signals and does not allow DND from insensitive icons. /// signals and does not allow DND from insensitive icons.
/// ///
/// An icon should be set insensitive if the action that would trigger /// An icon should be set insensitive if the action that would trigger
@ -196,11 +178,11 @@ public struct Entry: AdwaitaWidget {
var secondaryIconSensitive: Bool? var secondaryIconSensitive: Bool?
/// The contents of the tooltip on the secondary icon, with markup. /// The contents of the tooltip on the secondary icon, with markup.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_markup]. /// Also see `Gtk.Entry.set_icon_tooltip_markup`.
var secondaryIconTooltipMarkup: String? var secondaryIconTooltipMarkup: String?
/// The contents of the tooltip on the secondary icon. /// The contents of the tooltip on the secondary icon.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_text]. /// Also see `Gtk.Entry.set_icon_tooltip_text`.
var secondaryIconTooltipText: String? var secondaryIconTooltipText: String?
/// The position of the opposite end of the selection from the cursor in chars. /// The position of the opposite end of the selection from the cursor in chars.
var selectionBound: Int? var selectionBound: Int?
@ -211,7 +193,7 @@ public struct Entry: AdwaitaWidget {
var text: Binding<String>? var text: Binding<String>?
/// The length of the text in the `GtkEntry`. /// The length of the text in the `GtkEntry`.
var textLength: UInt? var textLength: UInt?
/// When %TRUE, pasted multi-line text is truncated to the first line. /// When `true`, pasted multi-line text is truncated to the first line.
var truncateMultiline: Bool? var truncateMultiline: Bool?
/// Whether the entry should show the invisible char instead of the /// Whether the entry should show the invisible char instead of the
/// actual text (password mode). /// actual text (password mode).
@ -243,7 +225,7 @@ public struct Entry: AdwaitaWidget {
/// range of deleted text, or prevent it from being deleted entirely. /// range of deleted text, or prevent it from being deleted entirely.
/// ///
/// The @start_pos and @end_pos parameters are interpreted as for /// The @start_pos and @end_pos parameters are interpreted as for
/// [method@Gtk.Editable.delete_text]. /// `Gtk.Editable.delete_text`.
var deleteText: (() -> Void)? var deleteText: (() -> Void)?
/// This signal is a sign for the cell renderer to update its /// This signal is a sign for the cell renderer to update its
/// value from the @cell_editable. /// value from the @cell_editable.
@ -484,10 +466,10 @@ if let text, newValue != text.wrappedValue {
/// Which IM (input method) module should be used for this entry. /// Which IM (input method) module should be used for this entry.
/// ///
/// See [class@Gtk.IMContext]. /// See `Gtk.IMContext`.
/// ///
/// Setting this to a non-%NULL value overrides the system-wide IM /// Setting this to a non-%NULL value overrides the system-wide IM
/// module setting. See the GtkSettings [property@Gtk.Settings:gtk-im-module] /// module setting. See the GtkSettings ``gtkImModule(_:)``
/// property. /// property.
public func imModule(_ imModule: String?) -> Self { public func imModule(_ imModule: String?) -> Self {
var newSelf = self var newSelf = self
@ -523,6 +505,42 @@ if let text, newValue != text.wrappedValue {
return newSelf return newSelf
} }
/// Text for an item in the context menu to activate the primary icon action.
///
/// When the primary icon is activatable and this property has been set, a new entry
/// in the context menu of this GtkEntry will appear with this text. Selecting that
/// menu entry will result in the primary icon being activated, exactly in the same way
/// as it would be activated from a mouse click.
///
/// This simplifies adding accessibility support to applications using activatable
/// icons. The activatable icons aren't focusable when navigating the interface with
/// the keyboard This is why Gtk recommends to also add those actions in the context
/// menu. This set of methods greatly simplifies this, by adding a menu item that, when
/// enabled, calls the same callback than clicking on the icon.
public func menuEntryIconPrimaryText(_ menuEntryIconPrimaryText: String?) -> Self {
var newSelf = self
newSelf.menuEntryIconPrimaryText = menuEntryIconPrimaryText
return newSelf
}
/// Text for an item in the context menu to activate the secondary icon action.
///
/// When the primary icon is activatable and this property has been set, a new entry
/// in the context menu of this GtkEntry will appear with this text. Selecting that
/// menu entry will result in the primary icon being activated, exactly in the same way
/// as it would be activated from a mouse click.
///
/// This simplifies adding accessibility support to applications using activatable
/// icons. The activatable icons aren't focusable when navigating the interface with
/// the keyboard This is why Gtk recommends to also add those actions in the context
/// menu. This set of methods greatly simplifies this, by adding a menu item that, when
/// enabled, calls the same callback than clicking on the icon.
public func menuEntryIconSecondaryText(_ menuEntryIconSecondaryText: String?) -> Self {
var newSelf = self
newSelf.menuEntryIconSecondaryText = menuEntryIconSecondaryText
return newSelf
}
/// If text is overwritten when typing in the `GtkEntry`. /// If text is overwritten when typing in the `GtkEntry`.
public func overwriteMode(_ overwriteMode: Bool? = true) -> Self { public func overwriteMode(_ overwriteMode: Bool? = true) -> Self {
var newSelf = self var newSelf = self
@ -540,8 +558,8 @@ if let text, newValue != text.wrappedValue {
/// Whether the primary icon is activatable. /// Whether the primary icon is activatable.
/// ///
/// GTK emits the [signal@Gtk.Entry::icon-press] and /// GTK emits the `Gtk.Entry::icon-press` and
/// [signal@Gtk.Entry::icon-release] signals only on sensitive, /// `Gtk.Entry::icon-release` signals only on sensitive,
/// activatable icons. /// activatable icons.
/// ///
/// Sensitive, but non-activatable icons can be used for purely /// Sensitive, but non-activatable icons can be used for purely
@ -562,7 +580,7 @@ if let text, newValue != text.wrappedValue {
/// Whether the primary icon is sensitive. /// Whether the primary icon is sensitive.
/// ///
/// An insensitive icon appears grayed out. GTK does not emit the /// An insensitive icon appears grayed out. GTK does not emit the
/// [signal@Gtk.Entry::icon-press] and [signal@Gtk.Entry::icon-release] /// `Gtk.Entry::icon-press` and `Gtk.Entry::icon-release`
/// signals and does not allow DND from insensitive icons. /// signals and does not allow DND from insensitive icons.
/// ///
/// An icon should be set insensitive if the action that would trigger /// An icon should be set insensitive if the action that would trigger
@ -575,7 +593,7 @@ if let text, newValue != text.wrappedValue {
/// The contents of the tooltip on the primary icon, with markup. /// The contents of the tooltip on the primary icon, with markup.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_markup]. /// Also see `Gtk.Entry.set_icon_tooltip_markup`.
public func primaryIconTooltipMarkup(_ primaryIconTooltipMarkup: String?) -> Self { public func primaryIconTooltipMarkup(_ primaryIconTooltipMarkup: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.primaryIconTooltipMarkup = primaryIconTooltipMarkup newSelf.primaryIconTooltipMarkup = primaryIconTooltipMarkup
@ -584,7 +602,7 @@ if let text, newValue != text.wrappedValue {
/// The contents of the tooltip on the primary icon. /// The contents of the tooltip on the primary icon.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_text]. /// Also see `Gtk.Entry.set_icon_tooltip_text`.
public func primaryIconTooltipText(_ primaryIconTooltipText: String?) -> Self { public func primaryIconTooltipText(_ primaryIconTooltipText: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.primaryIconTooltipText = primaryIconTooltipText newSelf.primaryIconTooltipText = primaryIconTooltipText
@ -601,7 +619,7 @@ if let text, newValue != text.wrappedValue {
/// The fraction of total entry width to move the progress /// The fraction of total entry width to move the progress
/// bouncing block for each pulse. /// bouncing block for each pulse.
/// ///
/// See [method@Gtk.Entry.progress_pulse]. /// See `Gtk.Entry.progress_pulse`.
public func progressPulseStep(_ progressPulseStep: Double?) -> Self { public func progressPulseStep(_ progressPulseStep: Double?) -> Self {
var newSelf = self var newSelf = self
newSelf.progressPulseStep = progressPulseStep newSelf.progressPulseStep = progressPulseStep
@ -617,8 +635,8 @@ if let text, newValue != text.wrappedValue {
/// Whether the secondary icon is activatable. /// Whether the secondary icon is activatable.
/// ///
/// GTK emits the [signal@Gtk.Entry::icon-press] and /// GTK emits the `Gtk.Entry::icon-press` and
/// [signal@Gtk.Entry::icon-release] signals only on sensitive, /// `Gtk.Entry::icon-release` signals only on sensitive,
/// activatable icons. /// activatable icons.
/// ///
/// Sensitive, but non-activatable icons can be used for purely /// Sensitive, but non-activatable icons can be used for purely
@ -639,7 +657,7 @@ if let text, newValue != text.wrappedValue {
/// Whether the secondary icon is sensitive. /// Whether the secondary icon is sensitive.
/// ///
/// An insensitive icon appears grayed out. GTK does not emit the /// An insensitive icon appears grayed out. GTK does not emit the
/// [signal@Gtk.Entry::icon-press[ and [signal@Gtk.Entry::icon-release] /// `Gtk.Entry::icon-press[ and [signal@Gtk.Entry::icon-release`
/// signals and does not allow DND from insensitive icons. /// signals and does not allow DND from insensitive icons.
/// ///
/// An icon should be set insensitive if the action that would trigger /// An icon should be set insensitive if the action that would trigger
@ -652,7 +670,7 @@ if let text, newValue != text.wrappedValue {
/// The contents of the tooltip on the secondary icon, with markup. /// The contents of the tooltip on the secondary icon, with markup.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_markup]. /// Also see `Gtk.Entry.set_icon_tooltip_markup`.
public func secondaryIconTooltipMarkup(_ secondaryIconTooltipMarkup: String?) -> Self { public func secondaryIconTooltipMarkup(_ secondaryIconTooltipMarkup: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.secondaryIconTooltipMarkup = secondaryIconTooltipMarkup newSelf.secondaryIconTooltipMarkup = secondaryIconTooltipMarkup
@ -661,7 +679,7 @@ if let text, newValue != text.wrappedValue {
/// The contents of the tooltip on the secondary icon. /// The contents of the tooltip on the secondary icon.
/// ///
/// Also see [method@Gtk.Entry.set_icon_tooltip_text]. /// Also see `Gtk.Entry.set_icon_tooltip_text`.
public func secondaryIconTooltipText(_ secondaryIconTooltipText: String?) -> Self { public func secondaryIconTooltipText(_ secondaryIconTooltipText: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.secondaryIconTooltipText = secondaryIconTooltipText newSelf.secondaryIconTooltipText = secondaryIconTooltipText
@ -697,7 +715,7 @@ if let text, newValue != text.wrappedValue {
return newSelf return newSelf
} }
/// When %TRUE, pasted multi-line text is truncated to the first line. /// When `true`, pasted multi-line text is truncated to the first line.
public func truncateMultiline(_ truncateMultiline: Bool? = true) -> Self { public func truncateMultiline(_ truncateMultiline: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.truncateMultiline = truncateMultiline newSelf.truncateMultiline = truncateMultiline
@ -759,7 +777,7 @@ if let text, newValue != text.wrappedValue {
/// range of deleted text, or prevent it from being deleted entirely. /// range of deleted text, or prevent it from being deleted entirely.
/// ///
/// The @start_pos and @end_pos parameters are interpreted as for /// The @start_pos and @end_pos parameters are interpreted as for
/// [method@Gtk.Editable.delete_text]. /// `Gtk.Editable.delete_text`.
public func deleteText(_ deleteText: @escaping () -> Void) -> Self { public func deleteText(_ deleteText: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.deleteText = deleteText newSelf.deleteText = deleteText

View File

@ -2,43 +2,31 @@
// EntryRow.swift // EntryRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] with an embedded text entry. /// A `Gtk.ListBoxRow` with an embedded text entry.
///
/// ///
/// <picture><source srcset="entry-row-dark.png" media="(prefers-color-scheme: dark)"><img src="entry-row.png" alt="entry-row"></picture>
/// ///
/// `AdwEntryRow` has a title that doubles as placeholder text. It shows an icon /// `AdwEntryRow` has a title that doubles as placeholder text. It shows an icon
/// indicating that it's editable and can receive additional widgets before or /// indicating that it's editable and can receive additional widgets before or
/// after the editable part. /// after the editable part.
/// ///
/// If [property@EntryRow:show-apply-button] is set to `TRUE`, `AdwEntryRow` can /// If ``showApplyButton(_:)`` is set to `true`, `AdwEntryRow` can
/// show an apply button when editing its contents. This can be useful if /// show an apply button when editing its contents. This can be useful if
/// changing its contents can result in an expensive operation, such as network /// changing its contents can result in an expensive operation, such as network
/// activity. /// activity.
/// ///
/// `AdwEntryRow` provides only minimal API and should be used with the /// `AdwEntryRow` provides only minimal API and should be used with the
/// [iface@Gtk.Editable] API. /// `Gtk.Editable` API.
/// ///
/// See also [class@PasswordEntryRow]. /// See also `PasswordEntryRow`.
/// ///
/// ## AdwEntryRow as GtkBuildable
/// ///
/// The `AdwEntryRow` implementation of the [iface@Gtk.Buildable] interface
/// supports adding a child at its end by specifying suffix or omitting the
/// type attribute of a <child> element.
///
/// It also supports adding a child as a prefix widget by specifying prefix as
/// the type attribute of a <child> element.
///
/// ## CSS nodes
///
/// `AdwEntryRow` has a single CSS node with name `row` and the `.entry` style
/// class.
public struct EntryRow: AdwaitaWidget { public struct EntryRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -56,9 +44,9 @@ public struct EntryRow: AdwaitaWidget {
var maxLength: Int? var maxLength: Int?
/// Whether to show the apply button. /// Whether to show the apply button.
/// ///
/// When set to `TRUE`, typing text in the entry will reveal an apply button. /// When set to `true`, typing text in the entry will reveal an apply button.
/// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and /// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and
/// emit the [signal@EntryRow::apply] signal. /// emit the `EntryRow::apply` signal.
/// ///
/// This is useful if changing the entry contents can trigger an expensive /// This is useful if changing the entry contents can trigger an expensive
/// operation, e.g. network activity, to avoid triggering it after typing every /// operation, e.g. network activity, to avoid triggering it after typing every
@ -69,23 +57,23 @@ public struct EntryRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
/// Emitted when the apply button is pressed. /// Emitted when the apply button is pressed.
/// ///
/// See [property@EntryRow:show-apply-button]. /// See ``showApplyButton(_:)``.
var apply: (() -> Void)? var apply: (() -> Void)?
/// Emitted when the embedded entry is activated. /// Emitted when the embedded entry is activated.
var entryActivated: (() -> Void)? var entryActivated: (() -> Void)?
@ -229,9 +217,9 @@ public struct EntryRow: AdwaitaWidget {
/// Whether to show the apply button. /// Whether to show the apply button.
/// ///
/// When set to `TRUE`, typing text in the entry will reveal an apply button. /// When set to `true`, typing text in the entry will reveal an apply button.
/// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and /// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and
/// emit the [signal@EntryRow::apply] signal. /// emit the `EntryRow::apply` signal.
/// ///
/// This is useful if changing the entry contents can trigger an expensive /// This is useful if changing the entry contents can trigger an expensive
/// operation, e.g. network activity, to avoid triggering it after typing every /// operation, e.g. network activity, to avoid triggering it after typing every
@ -252,7 +240,7 @@ public struct EntryRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -261,7 +249,7 @@ public struct EntryRow: AdwaitaWidget {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -272,7 +260,7 @@ public struct EntryRow: AdwaitaWidget {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup
@ -288,7 +276,7 @@ public struct EntryRow: AdwaitaWidget {
/// Emitted when the apply button is pressed. /// Emitted when the apply button is pressed.
/// ///
/// See [property@EntryRow:show-apply-button]. /// See ``showApplyButton(_:)``.
public func apply(_ apply: @escaping () -> Void) -> Self { public func apply(_ apply: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.apply = apply newSelf.apply = apply

View File

@ -2,46 +2,21 @@
// ExpanderRow.swift // ExpanderRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] used to reveal widgets. /// A `Gtk.ListBoxRow` used to reveal widgets.
///
/// ///
/// <picture><source srcset="expander-row-dark.png" media="(prefers-color-scheme: dark)"><img src="expander-row.png" alt="expander-row"></picture>
/// ///
/// The `AdwExpanderRow` widget allows the user to reveal or hide widgets below /// The `AdwExpanderRow` widget allows the user to reveal or hide widgets below
/// it. It also allows the user to enable the expansion of the row, allowing to /// it. It also allows the user to enable the expansion of the row, allowing to
/// disable all that the row contains. /// disable all that the row contains.
/// ///
/// ## AdwExpanderRow as GtkBuildable
/// ///
/// The `AdwExpanderRow` implementation of the [iface@Gtk.Buildable] interface
/// supports adding a child as an suffix widget by specifying suffix as the
/// type attribute of a <child> element.
///
/// It also supports adding it as a prefix widget by specifying prefix as the
/// type attribute of a <child> element.
///
/// ## CSS nodes
///
/// `AdwExpanderRow` has a main CSS node with name `row` and the `.expander`
/// style class. It has the `.empty` style class when it contains no children.
///
/// It contains the subnodes `row.header` for its main embedded row,
/// `list.nested` for the list it can expand, and `image.expander-row-arrow` for
/// its arrow.
///
/// ## Style classes
///
/// `AdwExpanderRow` can use the [`.`](style-classes.html#property-rows)
/// style class to emphasize the row subtitle instead of the row title, which is
/// useful for displaying read-only properties.
///
/// When used together with the `.monospace` style class, only the subtitle
/// becomes monospace, not the title or any extra widgets.
public struct ExpanderRow: AdwaitaWidget { public struct ExpanderRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -58,7 +33,7 @@ public struct ExpanderRow: AdwaitaWidget {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var subtitle: String? var subtitle: String?
/// The number of lines at the end of which the subtitle label will be /// The number of lines at the end of which the subtitle label will be
/// ellipsized. /// ellipsized.
@ -68,7 +43,7 @@ public struct ExpanderRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// The number of lines at the end of which the title label will be ellipsized. /// The number of lines at the end of which the title label will be ellipsized.
/// ///
@ -76,13 +51,13 @@ public struct ExpanderRow: AdwaitaWidget {
var titleLines: Int? var titleLines: Int?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -253,7 +228,7 @@ if let expanded, newValue != expanded.wrappedValue {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func subtitle(_ subtitle: String?) -> Self { public func subtitle(_ subtitle: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitle = subtitle newSelf.subtitle = subtitle
@ -273,7 +248,7 @@ if let expanded, newValue != expanded.wrappedValue {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -291,7 +266,7 @@ if let expanded, newValue != expanded.wrappedValue {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -302,7 +277,7 @@ if let expanded, newValue != expanded.wrappedValue {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup

View File

@ -2,7 +2,7 @@
// Fixed.swift // Fixed.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw

View File

@ -2,7 +2,7 @@
// FlowBox.swift // FlowBox.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// Puts child widgets in a reflowing grid. /// Puts child widgets in a reflowing grid.
/// ///
/// <picture><source srcset="flow-box-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkFlowBox" src="flow-box.png"></picture> ///
/// ///
/// For instance, with the horizontal orientation, the widgets will be /// For instance, with the horizontal orientation, the widgets will be
/// arranged from left to right, starting a new row under the previous /// arranged from left to right, starting a new row under the previous
@ -30,39 +30,13 @@ import LevenshteinTransformations
/// The children of a `GtkFlowBox` can be dynamically sorted and filtered. /// The children of a `GtkFlowBox` can be dynamically sorted and filtered.
/// ///
/// Although a `GtkFlowBox` must have only `GtkFlowBoxChild` children, you /// Although a `GtkFlowBox` must have only `GtkFlowBoxChild` children, you
/// can add any kind of widget to it via [method@Gtk.FlowBox.insert], and a /// can add any kind of widget to it via `Gtk.FlowBox.insert`, and a
/// `GtkFlowBoxChild` widget will automatically be inserted between the box /// `GtkFlowBoxChild` widget will automatically be inserted between the box
/// and the widget. /// and the widget.
/// ///
/// Also see [class@Gtk.ListBox]. /// Also see `Gtk.ListBox`.
/// ///
/// # Shortcuts and Gestures
/// ///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.FlowBox::move-cursor]
/// - [signal@Gtk.FlowBox::select-all]
/// - [signal@Gtk.FlowBox::toggle-cursor-child]
/// - [signal@Gtk.FlowBox::unselect-all]
///
/// # CSS nodes
///
/// ```
/// flowbox
/// flowboxchild
/// <child> flowboxchild
/// <child>
/// [rubberband]
/// ```
///
/// `GtkFlowBox` uses a single CSS node with name flowbox. `GtkFlowBoxChild`
/// uses a single CSS node with name flowboxchild. For rubberband selection,
/// a subnode with name rubberband is used.
///
/// # Accessibility
///
/// `GtkFlowBox` uses the [enum@Gtk.AccessibleRole.grid] role, and `GtkFlowBoxChild`
/// uses the [enum@Gtk.AccessibleRole.grid_cell] role.
public struct FlowBox<Element>: AdwaitaWidget where Element: Identifiable { public struct FlowBox<Element>: AdwaitaWidget where Element: Identifiable {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -128,8 +102,8 @@ public struct FlowBox<Element>: AdwaitaWidget where Element: Identifiable {
var selectAll: (() -> Void)? var selectAll: (() -> Void)?
/// Emitted when the set of selected children changes. /// Emitted when the set of selected children changes.
/// ///
/// Use [method@Gtk.FlowBox.selected_foreach] or /// Use `Gtk.FlowBox.selected_foreach` or
/// [method@Gtk.FlowBox.get_selected_children] to obtain the /// `Gtk.FlowBox.get_selected_children` to obtain the
/// selected children. /// selected children.
var selectedChildrenChanged: (() -> Void)? var selectedChildrenChanged: (() -> Void)?
/// Emitted to toggle the selection of the child that has the focus. /// Emitted to toggle the selection of the child that has the focus.
@ -380,8 +354,8 @@ public struct FlowBox<Element>: AdwaitaWidget where Element: Identifiable {
/// Emitted when the set of selected children changes. /// Emitted when the set of selected children changes.
/// ///
/// Use [method@Gtk.FlowBox.selected_foreach] or /// Use `Gtk.FlowBox.selected_foreach` or
/// [method@Gtk.FlowBox.get_selected_children] to obtain the /// `Gtk.FlowBox.get_selected_children` to obtain the
/// selected children. /// selected children.
public func selectedChildrenChanged(_ selectedChildrenChanged: @escaping () -> Void) -> Self { public func selectedChildrenChanged(_ selectedChildrenChanged: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// HeaderBar.swift // HeaderBar.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,95 +10,13 @@ import LevenshteinTransformations
/// A title bar widget. /// A title bar widget.
/// ///
/// <picture><source srcset="header-bar-dark.png" media="(prefers-color-scheme: dark)"><img src="header-bar.png" alt="header-bar"></picture>
/// ///
/// `AdwHeaderBar` is similar to [class@Gtk.HeaderBar], but provides additional ///
/// `AdwHeaderBar` is similar to `Gtk.HeaderBar`, but provides additional
/// features compared to it. Refer to `GtkHeaderBar` for details. It is typically /// features compared to it. Refer to `GtkHeaderBar` for details. It is typically
/// used as a top bar within [class@ToolbarView]. /// used as a top bar within `ToolbarView`.
/// ///
/// ## Dialog Integration
/// ///
/// When placed inside an [class@Dialog], `AdwHeaderBar` will display the dialog
/// title instead of window title. It will also adjust the decoration layout to
/// ensure it always has a close button and nothing else. Set
/// [property@HeaderBar:show-start-title-buttons] and
/// [property@HeaderBar:show-end-title-buttons] to `FALSE` to remove it if it's
/// unwanted.
///
/// ## Navigation View Integration
///
/// When placed inside an [class@NavigationPage], `AdwHeaderBar` will display the
/// page title instead of window title.
///
/// When used together with [class@NavigationView] or [class@NavigationSplitView],
/// it will also display a back button that can be used to go back to the previous
/// page. The button also has a context menu, allowing to pop multiple pages at
/// once, potentially across multiple navigation views.
///
/// Set [property@HeaderBar:show-back-button] to `FALSE` to disable this behavior
/// in rare scenarios where it's unwanted.
///
/// ## Split View Integration
///
/// When placed inside [class@NavigationSplitView] or [class@OverlaySplitView],
/// `AdwHeaderBar` will automatically hide the title buttons other than at the
/// edges of the window.
///
/// ## Bottom Sheet Integration
///
/// When played inside [class@BottomSheet], `AdwHeaderBar` will not show the title
/// unless [property@BottomSheet:show-drag-handle] is set to `FALSE`, regardless
/// of [property@HeaderBar:show-title]. This only applies to the default title,
/// titles set with [property@HeaderBar:title-widget] will still be shown.
///
/// ## Centering Policy
///
/// [property@HeaderBar:centering-policy] allows to enforce strict centering of
/// the title widget. This can be useful for entries inside [class@Clamp].
///
/// ## Title Buttons
///
/// Unlike `GtkHeaderBar`, `AdwHeaderBar` allows to toggle title button
/// visibility for each side individually, using the
/// [property@HeaderBar:show-start-title-buttons] and
/// [property@HeaderBar:show-end-title-buttons] properties.
///
/// ## CSS nodes
///
/// ```
/// headerbar
/// windowhandle
/// box
/// widget
/// box.start
/// windowcontrols.start
/// widget
/// [button.back]
/// [other children]
/// widget
/// [Title Widget]
/// widget
/// box.end
/// [other children]
/// windowcontrols.end
/// ```
///
/// `AdwHeaderBar`'s CSS node is called `headerbar`. It contains a `windowhandle`
/// subnode, which contains a `box` subnode, which contains three `widget`
/// subnodes at the start, center and end of the header bar. The start and end
/// subnodes contain a `box` subnode with the `.start` and `.end` style classes
/// respectively, and the center node contains a node that represents the title.
///
/// Each of the boxes contains a `windowcontrols` subnode, see
/// [class@Gtk.WindowControls] for details, as well as other children.
///
/// When [property@HeaderBar:show-back-button] is `TRUE`, the start box also
/// contains a node with the name `widget` that contains a node with the name
/// `button` and `.back` style class.
///
/// ## Accessibility
///
/// `AdwHeaderBar` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct HeaderBar: AdwaitaWidget { public struct HeaderBar: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -109,7 +27,7 @@ public struct HeaderBar: AdwaitaWidget {
/// The decoration layout for buttons. /// The decoration layout for buttons.
/// ///
/// If this property is not set, the /// If this property is not set, the
/// [property@Gtk.Settings:gtk-decoration-layout] setting is used. /// ``gtkDecorationLayout(_:)`` setting is used.
/// ///
/// The format of the string is button names, separated by commas. A colon /// The format of the string is button names, separated by commas. A colon
/// separates the buttons that should appear at the start from those at the /// separates the buttons that should appear at the start from those at the
@ -122,23 +40,23 @@ public struct HeaderBar: AdwaitaWidget {
/// Whether the header bar can show the back button. /// Whether the header bar can show the back button.
/// ///
/// The back button will never be shown unless the header bar is placed inside an /// The back button will never be shown unless the header bar is placed inside an
/// [class@NavigationView]. Usually, there is no reason to set this to `FALSE`. /// `NavigationView`. Usually, there is no reason to set this to `false`.
var showBackButton: Bool? var showBackButton: Bool?
/// Whether to show title buttons at the end of the header bar. /// Whether to show title buttons at the end of the header bar.
/// ///
/// See [property@HeaderBar:show-start-title-buttons] for the other side. /// See ``showStartTitleButtons(_:)`` for the other side.
/// ///
/// Which buttons are actually shown and where is determined by the /// Which buttons are actually shown and where is determined by the
/// [property@HeaderBar:decoration-layout] property, and by the state of the /// ``decorationLayout(_:)`` property, and by the state of the
/// window (e.g. a close button will not be shown if the window can't be /// window (e.g. a close button will not be shown if the window can't be
/// closed). /// closed).
var showEndTitleButtons: Bool? var showEndTitleButtons: Bool?
/// Whether to show title buttons at the start of the header bar. /// Whether to show title buttons at the start of the header bar.
/// ///
/// See [property@HeaderBar:show-end-title-buttons] for the other side. /// See ``showEndTitleButtons(_:)`` for the other side.
/// ///
/// Which buttons are actually shown and where is determined by the /// Which buttons are actually shown and where is determined by the
/// [property@HeaderBar:decoration-layout] property, and by the state of the /// ``decorationLayout(_:)`` property, and by the state of the
/// window (e.g. a close button will not be shown if the window can't be /// window (e.g. a close button will not be shown if the window can't be
/// closed). /// closed).
var showStartTitleButtons: Bool? var showStartTitleButtons: Bool?
@ -149,7 +67,7 @@ public struct HeaderBar: AdwaitaWidget {
/// When set to `NULL`, the header bar will display the title of the window it /// When set to `NULL`, the header bar will display the title of the window it
/// is contained in. /// is contained in.
/// ///
/// To use a different title, use [class@WindowTitle]: /// To use a different title, use `WindowTitle`:
/// ///
/// ```xml /// ```xml
/// <object class="AdwHeaderBar"><property name="title-widget"><object class="AdwWindowTitle"><property name="title" translatable="yes">Title</property></object></property></object> /// <object class="AdwHeaderBar"><property name="title-widget"><object class="AdwWindowTitle"><property name="title" translatable="yes">Title</property></object></property></object>
@ -261,7 +179,7 @@ public struct HeaderBar: AdwaitaWidget {
/// The decoration layout for buttons. /// The decoration layout for buttons.
/// ///
/// If this property is not set, the /// If this property is not set, the
/// [property@Gtk.Settings:gtk-decoration-layout] setting is used. /// ``gtkDecorationLayout(_:)`` setting is used.
/// ///
/// The format of the string is button names, separated by commas. A colon /// The format of the string is button names, separated by commas. A colon
/// separates the buttons that should appear at the start from those at the /// separates the buttons that should appear at the start from those at the
@ -279,7 +197,7 @@ public struct HeaderBar: AdwaitaWidget {
/// Whether the header bar can show the back button. /// Whether the header bar can show the back button.
/// ///
/// The back button will never be shown unless the header bar is placed inside an /// The back button will never be shown unless the header bar is placed inside an
/// [class@NavigationView]. Usually, there is no reason to set this to `FALSE`. /// `NavigationView`. Usually, there is no reason to set this to `false`.
public func showBackButton(_ showBackButton: Bool? = true) -> Self { public func showBackButton(_ showBackButton: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.showBackButton = showBackButton newSelf.showBackButton = showBackButton
@ -288,10 +206,10 @@ public struct HeaderBar: AdwaitaWidget {
/// Whether to show title buttons at the end of the header bar. /// Whether to show title buttons at the end of the header bar.
/// ///
/// See [property@HeaderBar:show-start-title-buttons] for the other side. /// See ``showStartTitleButtons(_:)`` for the other side.
/// ///
/// Which buttons are actually shown and where is determined by the /// Which buttons are actually shown and where is determined by the
/// [property@HeaderBar:decoration-layout] property, and by the state of the /// ``decorationLayout(_:)`` property, and by the state of the
/// window (e.g. a close button will not be shown if the window can't be /// window (e.g. a close button will not be shown if the window can't be
/// closed). /// closed).
public func showEndTitleButtons(_ showEndTitleButtons: Bool? = true) -> Self { public func showEndTitleButtons(_ showEndTitleButtons: Bool? = true) -> Self {
@ -302,10 +220,10 @@ public struct HeaderBar: AdwaitaWidget {
/// Whether to show title buttons at the start of the header bar. /// Whether to show title buttons at the start of the header bar.
/// ///
/// See [property@HeaderBar:show-end-title-buttons] for the other side. /// See ``showEndTitleButtons(_:)`` for the other side.
/// ///
/// Which buttons are actually shown and where is determined by the /// Which buttons are actually shown and where is determined by the
/// [property@HeaderBar:decoration-layout] property, and by the state of the /// ``decorationLayout(_:)`` property, and by the state of the
/// window (e.g. a close button will not be shown if the window can't be /// window (e.g. a close button will not be shown if the window can't be
/// closed). /// closed).
public func showStartTitleButtons(_ showStartTitleButtons: Bool? = true) -> Self { public func showStartTitleButtons(_ showStartTitleButtons: Bool? = true) -> Self {
@ -326,7 +244,7 @@ public struct HeaderBar: AdwaitaWidget {
/// When set to `NULL`, the header bar will display the title of the window it /// When set to `NULL`, the header bar will display the title of the window it
/// is contained in. /// is contained in.
/// ///
/// To use a different title, use [class@WindowTitle]: /// To use a different title, use `WindowTitle`:
/// ///
/// ```xml /// ```xml
/// <object class="AdwHeaderBar"><property name="title-widget"><object class="AdwWindowTitle"><property name="title" translatable="yes">Title</property></object></property></object> /// <object class="AdwHeaderBar"><property name="title-widget"><object class="AdwWindowTitle"><property name="title" translatable="yes">Title</property></object></property></object>

View File

@ -2,7 +2,7 @@
// Image.swift // Image.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,11 +10,11 @@ import LevenshteinTransformations
/// Displays an image. /// Displays an image.
/// ///
/// picture><source srcset="image-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkImage" src="image.png"></picture> ///
/// ///
/// Various kinds of object can be displayed as an image; most typically, /// Various kinds of object can be displayed as an image; most typically,
/// you would load a `GdkTexture` from a file, using the convenience function /// you would load a `GdkTexture` from a file, using the convenience function
/// [ctor@Gtk.Image.new_from_file], for instance: /// `Gtk.Image.new_from_file`, for instance:
/// ///
/// ```c /// ```c
/// GtkWidget *image = gtk_image_new_from_file ("myfile.png"); /// GtkWidget *image = gtk_image_new_from_file ("myfile.png");
@ -23,30 +23,22 @@ import LevenshteinTransformations
/// If the file isnt loaded successfully, the image will contain a /// If the file isnt loaded successfully, the image will contain a
/// broken image icon similar to that used in many web browsers. /// broken image icon similar to that used in many web browsers.
/// ///
/// If you want to handle errors in loading the file yourself, /// If you want to handle errors in loading the file yourself, for example
/// for example by displaying an error message, then load the image with /// by displaying an error message, then load the image with an image
/// [ctor@Gdk.Texture.new_from_file], then create the `GtkImage` with /// loading framework such as libglycin, then create the `GtkImage` with
/// [ctor@Gtk.Image.new_from_paintable]. /// `Gtk.Image.new_from_paintable`.
/// ///
/// Sometimes an application will want to avoid depending on external data /// Sometimes an application will want to avoid depending on external data
/// files, such as image files. See the documentation of `GResource` inside /// files, such as image files. See the documentation of `GResource` inside
/// GIO, for details. In this case, [property@Gtk.Image:resource], /// GIO, for details. In this case, ``resource(_:)``,
/// [ctor@Gtk.Image.new_from_resource], and [method@Gtk.Image.set_from_resource] /// `Gtk.Image.new_from_resource`, and `Gtk.Image.set_from_resource`
/// should be used. /// should be used.
/// ///
/// `GtkImage` displays its image as an icon, with a size that is determined /// `GtkImage` displays its image as an icon, with a size that is determined
/// by the application. See [class@Gtk.Picture] if you want to show an image /// by the application. See `Gtk.Picture` if you want to show an image
/// at is actual size. /// at is actual size.
/// ///
/// ## CSS nodes
/// ///
/// `GtkImage` has a single CSS node with the name `image`. The style classes
/// `.normal-icons` or `.large-icons` may appear, depending on the
/// [property@Gtk.Image:icon-size] property.
///
/// ## Accessibility
///
/// `GtkImage` uses the [enum@Gtk.AccessibleRole.img] role.
public struct Image: AdwaitaWidget { public struct Image: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -65,7 +57,7 @@ public struct Image: AdwaitaWidget {
/// The size in pixels to display icons at. /// The size in pixels to display icons at.
/// ///
/// If set to a value != -1, this property overrides the /// If set to a value != -1, this property overrides the
/// [property@Gtk.Image:icon-size] property for images of type /// ``iconSize(_:)`` property for images of type
/// `GTK_IMAGE_ICON_NAME`. /// `GTK_IMAGE_ICON_NAME`.
var pixelSize: Int? var pixelSize: Int?
/// A path to a resource file to display. /// A path to a resource file to display.
@ -146,7 +138,7 @@ public struct Image: AdwaitaWidget {
/// The size in pixels to display icons at. /// The size in pixels to display icons at.
/// ///
/// If set to a value != -1, this property overrides the /// If set to a value != -1, this property overrides the
/// [property@Gtk.Image:icon-size] property for images of type /// ``iconSize(_:)`` property for images of type
/// `GTK_IMAGE_ICON_NAME`. /// `GTK_IMAGE_ICON_NAME`.
public func pixelSize(_ pixelSize: Int?) -> Self { public func pixelSize(_ pixelSize: Int?) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// Label.swift // Label.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,212 +10,11 @@ import LevenshteinTransformations
/// Displays a small amount of text. /// Displays a small amount of text.
/// ///
/// Most labels are used to label another widget (such as an [class@Entry]). /// Most labels are used to label another widget (such as an `Entry`).
/// ///
/// <picture><source srcset="label-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkLabel" src="label.png"></picture>
/// ///
/// ## Shortcuts and Gestures
/// ///
/// `GtkLabel` supports the following keyboard shortcuts, when the cursor is
/// visible:
/// ///
/// - <kbd>Shift</kbd>+<kbd>F10</kbd> or <kbd>Menu</kbd> opens the context menu.
/// - <kbd>Ctrl</kbd>+<kbd>A</kbd> or <kbd>Ctrl</kbd>+<kbd>&sol;</kbd>
/// selects all.
/// - <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>A</kbd> or
/// <kbd>Ctrl</kbd>+<kbd>&bsol;</kbd> unselects all.
///
/// Additionally, the following signals have default keybindings:
///
/// - [signal@Gtk.Label::activate-current-link]
/// - [signal@Gtk.Label::copy-clipboard]
/// - [signal@Gtk.Label::move-cursor]
///
/// ## Actions
///
/// `GtkLabel` defines a set of built-in actions:
///
/// - `clipboard.copy` copies the text to the clipboard.
/// - `clipboard.cut` doesn't do anything, since text in labels can't be deleted.
/// - `clipboard.paste` doesn't do anything, since text in labels can't be
/// edited.
/// - `link.open` opens the link, when activated on a link inside the label.
/// - `link.copy` copies the link to the clipboard, when activated on a link
/// inside the label.
/// - `menu.popup` opens the context menu.
/// - `selection.delete` doesn't do anything, since text in labels can't be
/// deleted.
/// - `selection.select-all` selects all of the text, if the label allows
/// selection.
///
/// ## CSS nodes
///
/// ```
/// label
/// [selection]
/// [link]
///
/// [link]
/// ```
///
/// `GtkLabel` has a single CSS node with the name label. A wide variety
/// of style classes may be applied to labels, such as .title, .subtitle,
/// .dim-label, etc. In the `GtkShortcutsWindow`, labels are used with the
/// .keycap style class.
///
/// If the label has a selection, it gets a subnode with name selection.
///
/// If the label has links, there is one subnode per link. These subnodes
/// carry the link or visited state depending on whether they have been
/// visited. In this case, label node also gets a .link style class.
///
/// ## GtkLabel as GtkBuildable
///
/// The GtkLabel implementation of the GtkBuildable interface supports a
/// custom `<attributes>` element, which supports any number of `<attribute>`
/// elements. The `<attribute>` element has attributes named name, value,
/// start and end and allows you to specify [struct@Pango.Attribute]
/// values for this label.
///
/// An example of a UI definition fragment specifying Pango attributes:
///
/// ```xml
/// <object class="GtkLabel"><attributes><attribute name="weight" value="PANGO_WEIGHT_BOLD"/><attribute name="background" value="red" start="5" end="10"/></attributes></object>
/// ```
///
/// The start and end attributes specify the range of characters to which the
/// Pango attribute applies. If start and end are not specified, the attribute is
/// applied to the whole text. Note that specifying ranges does not make much
/// sense with translatable attributes. Use markup embedded in the translatable
/// content instead.
///
/// ## Accessibility
///
/// `GtkLabel` uses the [enum@Gtk.AccessibleRole.label] role.
///
/// ## Mnemonics
///
/// Labels may contain mnemonics. Mnemonics are underlined characters in the
/// label, used for keyboard navigation. Mnemonics are created by providing a
/// string with an underscore before the mnemonic character, such as `"_File"`,
/// to the functions [ctor@Gtk.Label.new_with_mnemonic] or
/// [method@Gtk.Label.set_text_with_mnemonic].
///
/// Mnemonics automatically activate any activatable widget the label is
/// inside, such as a [class@Gtk.Button]; if the label is not inside the
/// mnemonics target widget, you have to tell the label about the target
/// using [method@Gtk.Label.set_mnemonic_widget].
///
/// Heres a simple example where the label is inside a button:
///
/// ```c
/// // Pressing Alt+H will activate this button
/// GtkWidget *button = gtk_button_new ();
/// GtkWidget *label = gtk_label_new_with_mnemonic ("_Hello");
/// gtk_button_set_child (GTK_BUTTON (button), label);
/// ```
///
/// Theres a convenience function to create buttons with a mnemonic label
/// already inside:
///
/// ```c
/// // Pressing Alt+H will activate this button
/// GtkWidget *button = gtk_button_new_with_mnemonic ("_Hello");
/// ```
///
/// To create a mnemonic for a widget alongside the label, such as a
/// [class@Gtk.Entry], you have to point the label at the entry with
/// [method@Gtk.Label.set_mnemonic_widget]:
///
/// ```c
/// // Pressing Alt+H will focus the entry
/// GtkWidget *entry = gtk_entry_new ();
/// GtkWidget *label = gtk_label_new_with_mnemonic ("_Hello");
/// gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
/// ```
///
/// ## Markup (styled text)
///
/// To make it easy to format text in a label (changing colors, fonts, etc.),
/// label text can be provided in a simple markup format:
///
/// Heres how to create a label with a small font:
/// ```c
/// GtkWidget *label = gtk_label_new (NULL);
/// gtk_label_set_markup (GTK_LABEL (label), "<small>Small text</small>");
/// ```
///
/// (See the Pango manual for complete documentation] of available
/// tags, [func@Pango.parse_markup])
///
/// The markup passed to [method@Gtk.Label.set_markup] must be valid XML; for example,
/// literal `<`, `>` and `&` characters must be escaped as `&lt;`, `&gt;`, and `&amp;`.
/// If you pass text obtained from the user, file, or a network to
/// [method@Gtk.Label.set_markup], youll want to escape it with
/// [func@GLib.markup_escape_text] or [func@GLib.markup_printf_escaped].
///
/// Markup strings are just a convenient way to set the [struct@Pango.AttrList]
/// on a label; [method@Gtk.Label.set_attributes] may be a simpler way to set
/// attributes in some cases. Be careful though; [struct@Pango.AttrList] tends
/// to cause internationalization problems, unless youre applying attributes
/// to the entire string (i.e. unless you set the range of each attribute
/// to [0, `G_MAXINT`)). The reason is that specifying the `start_index` and
/// `end_index` for a [struct@Pango.Attribute] requires knowledge of the exact
/// string being displayed, so translations will cause problems.
///
/// ## Selectable labels
///
/// Labels can be made selectable with [method@Gtk.Label.set_selectable].
/// Selectable labels allow the user to copy the label contents to the
/// clipboard. Only labels that contain useful-to-copy information such
/// as error messages should be made selectable.
///
/// ## Text layout
///
/// A label can contain any number of paragraphs, but will have
/// performance problems if it contains more than a small number.
/// Paragraphs are separated by newlines or other paragraph separators
/// understood by Pango.
///
/// Labels can automatically wrap text if you call [method@Gtk.Label.set_wrap].
///
/// [method@Gtk.Label.set_justify] sets how the lines in a label align
/// with one another. If you want to set how the label as a whole aligns
/// in its available space, see the [property@Gtk.Widget:halign] and
/// [property@Gtk.Widget:valign] properties.
///
/// The [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
/// properties can be used to control the size allocation of ellipsized or
/// wrapped labels. For ellipsizing labels, if either is specified (and less
/// than the actual text size), it is used as the minimum width, and the actual
/// text size is used as the natural width of the label. For wrapping labels,
/// width-chars is used as the minimum width, if specified, and max-width-chars
/// is used as the natural width. Even if max-width-chars specified, wrapping
/// labels will be rewrapped to use all of the available width.
///
/// ## Links
///
/// GTK supports markup for clickable hyperlinks in addition to regular Pango
/// markup. The markup for links is borrowed from HTML, using the `<a>` tag
/// with href, title and class attributes. GTK renders links similar to
/// the way they appear in web browsers, with colored, underlined text. The
/// title attribute is displayed as a tooltip on the link. The class
/// attribute is used as style class on the CSS node for the link.
///
/// An example of inline links looks like this:
///
/// ```c
/// const char *text =
/// "Go to the "
/// "<a href=\"https://www.gtk.org\" title=\"&lt;i&gt;Our&lt;/i&gt; website\">"
/// "GTK website</a> for more...";
/// GtkWidget *label = gtk_label_new (NULL);
/// gtk_label_set_markup (GTK_LABEL (label), text);
/// ```
///
/// It is possible to implement custom handling for links and their tooltips
/// with the [signal@Gtk.Label::activate-link] signal and the
/// [method@Gtk.Label.get_current_uri] function.
public struct Label: AdwaitaWidget { public struct Label: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -229,15 +28,15 @@ public struct Label: AdwaitaWidget {
var accessibleRole: String? var accessibleRole: String?
/// The contents of the label. /// The contents of the label.
/// ///
/// If the string contains Pango markup (see [func@Pango.parse_markup]), /// If the string contains Pango markup (see `Pango.parse_markup`),
/// you will have to set the [property@Gtk.Label:use-markup] property to /// you will have to set the ``useMarkup(_:)`` property to
/// true in order for the label to display the markup attributes. See also /// true in order for the label to display the markup attributes. See also
/// [method@Gtk.Label.set_markup] for a convenience function that sets both /// `Gtk.Label.set_markup` for a convenience function that sets both
/// this property and the [property@Gtk.Label:use-markup] property at the /// this property and the ``useMarkup(_:)`` property at the
/// same time. /// same time.
/// ///
/// If the string contains underlines acting as mnemonics, you will have to /// If the string contains underlines acting as mnemonics, you will have to
/// set the [property@Gtk.Label:use-underline] property to true in order /// set the ``useUnderline(_:)`` property to true in order
/// for the label to display them. /// for the label to display them.
var label: String var label: String
/// The number of lines to which an ellipsized, wrapping label /// The number of lines to which an ellipsized, wrapping label
@ -245,8 +44,8 @@ public struct Label: AdwaitaWidget {
/// from ellipsizing before this many lines are displayed, and limits the /// from ellipsizing before this many lines are displayed, and limits the
/// height request of the label to this many lines. /// height request of the label to this many lines.
/// ///
/// ::: warning /// > [!WARNING]
/// Setting this property has unintuitive and unfortunate consequences /// > Setting this property has unintuitive and unfortunate consequences
/// for the minimum _width_ of the label. Specifically, if the height /// for the minimum _width_ of the label. Specifically, if the height
/// of the label is such that it fits a smaller number of lines than /// of the label is such that it fits a smaller number of lines than
/// the value of this property, the label can not be ellipsized at all, /// the value of this property, the label can not be ellipsized at all,
@ -260,9 +59,7 @@ public struct Label: AdwaitaWidget {
/// ///
/// If this property is set to -1, the width will be calculated automatically. /// If this property is set to -1, the width will be calculated automatically.
/// ///
/// See the section on [text layout](class.Label.html#text-layout) for details /// See the section on [text layout](class.Label.html
/// of how [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
/// determine the width of ellipsized and wrapped labels.
var maxWidthChars: Int? var maxWidthChars: Int?
/// The mnemonic accelerator key for the label. /// The mnemonic accelerator key for the label.
var mnemonicKeyval: UInt? var mnemonicKeyval: UInt?
@ -279,7 +76,7 @@ public struct Label: AdwaitaWidget {
var singleLineMode: Bool? var singleLineMode: Bool?
/// True if the text of the label includes Pango markup. /// True if the text of the label includes Pango markup.
/// ///
/// See [func@Pango.parse_markup]. /// See `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// True if the text of the label indicates a mnemonic with an `_` /// True if the text of the label indicates a mnemonic with an `_`
/// before the mnemonic character. /// before the mnemonic character.
@ -288,20 +85,18 @@ public struct Label: AdwaitaWidget {
/// ///
/// If this property is set to -1, the width will be calculated automatically. /// If this property is set to -1, the width will be calculated automatically.
/// ///
/// See the section on [text layout](class.Label.html#text-layout) for details /// See the section on [text layout](class.Label.html
/// of how [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
/// determine the width of ellipsized and wrapped labels.
var widthChars: Int? var widthChars: Int?
/// True if the label text will wrap if it gets too wide. /// True if the label text will wrap if it gets too wide.
var wrap: Bool? var wrap: Bool?
/// The horizontal alignment of the label text inside its size allocation. /// The horizontal alignment of the label text inside its size allocation.
/// ///
/// Compare this to [property@Gtk.Widget:halign], which determines how the /// Compare this to ``halign(_:)``, which determines how the
/// labels size allocation is positioned in the space available for the label. /// labels size allocation is positioned in the space available for the label.
var xalign: Float? var xalign: Float?
/// The vertical alignment of the label text inside its size allocation. /// The vertical alignment of the label text inside its size allocation.
/// ///
/// Compare this to [property@Gtk.Widget:valign], which determines how the /// Compare this to ``valign(_:)``, which determines how the
/// labels size allocation is positioned in the space available for the label. /// labels size allocation is positioned in the space available for the label.
var yalign: Float? var yalign: Float?
/// Gets emitted to copy the selection to the clipboard. /// Gets emitted to copy the selection to the clipboard.
@ -408,15 +203,15 @@ public struct Label: AdwaitaWidget {
/// The contents of the label. /// The contents of the label.
/// ///
/// If the string contains Pango markup (see [func@Pango.parse_markup]), /// If the string contains Pango markup (see `Pango.parse_markup`),
/// you will have to set the [property@Gtk.Label:use-markup] property to /// you will have to set the ``useMarkup(_:)`` property to
/// true in order for the label to display the markup attributes. See also /// true in order for the label to display the markup attributes. See also
/// [method@Gtk.Label.set_markup] for a convenience function that sets both /// `Gtk.Label.set_markup` for a convenience function that sets both
/// this property and the [property@Gtk.Label:use-markup] property at the /// this property and the ``useMarkup(_:)`` property at the
/// same time. /// same time.
/// ///
/// If the string contains underlines acting as mnemonics, you will have to /// If the string contains underlines acting as mnemonics, you will have to
/// set the [property@Gtk.Label:use-underline] property to true in order /// set the ``useUnderline(_:)`` property to true in order
/// for the label to display them. /// for the label to display them.
public func label(_ label: String) -> Self { public func label(_ label: String) -> Self {
var newSelf = self var newSelf = self
@ -429,8 +224,8 @@ public struct Label: AdwaitaWidget {
/// from ellipsizing before this many lines are displayed, and limits the /// from ellipsizing before this many lines are displayed, and limits the
/// height request of the label to this many lines. /// height request of the label to this many lines.
/// ///
/// ::: warning /// > [!WARNING]
/// Setting this property has unintuitive and unfortunate consequences /// > Setting this property has unintuitive and unfortunate consequences
/// for the minimum _width_ of the label. Specifically, if the height /// for the minimum _width_ of the label. Specifically, if the height
/// of the label is such that it fits a smaller number of lines than /// of the label is such that it fits a smaller number of lines than
/// the value of this property, the label can not be ellipsized at all, /// the value of this property, the label can not be ellipsized at all,
@ -449,9 +244,7 @@ public struct Label: AdwaitaWidget {
/// ///
/// If this property is set to -1, the width will be calculated automatically. /// If this property is set to -1, the width will be calculated automatically.
/// ///
/// See the section on [text layout](class.Label.html#text-layout) for details /// See the section on [text layout](class.Label.html
/// of how [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
/// determine the width of ellipsized and wrapped labels.
public func maxWidthChars(_ maxWidthChars: Int?) -> Self { public func maxWidthChars(_ maxWidthChars: Int?) -> Self {
var newSelf = self var newSelf = self
newSelf.maxWidthChars = maxWidthChars newSelf.maxWidthChars = maxWidthChars
@ -493,7 +286,7 @@ public struct Label: AdwaitaWidget {
/// True if the text of the label includes Pango markup. /// True if the text of the label includes Pango markup.
/// ///
/// See [func@Pango.parse_markup]. /// See `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup
@ -512,9 +305,7 @@ public struct Label: AdwaitaWidget {
/// ///
/// If this property is set to -1, the width will be calculated automatically. /// If this property is set to -1, the width will be calculated automatically.
/// ///
/// See the section on [text layout](class.Label.html#text-layout) for details /// See the section on [text layout](class.Label.html
/// of how [property@Gtk.Label:width-chars] and [property@Gtk.Label:max-width-chars]
/// determine the width of ellipsized and wrapped labels.
public func widthChars(_ widthChars: Int?) -> Self { public func widthChars(_ widthChars: Int?) -> Self {
var newSelf = self var newSelf = self
newSelf.widthChars = widthChars newSelf.widthChars = widthChars
@ -530,7 +321,7 @@ public struct Label: AdwaitaWidget {
/// The horizontal alignment of the label text inside its size allocation. /// The horizontal alignment of the label text inside its size allocation.
/// ///
/// Compare this to [property@Gtk.Widget:halign], which determines how the /// Compare this to ``halign(_:)``, which determines how the
/// labels size allocation is positioned in the space available for the label. /// labels size allocation is positioned in the space available for the label.
public func xalign(_ xalign: Float?) -> Self { public func xalign(_ xalign: Float?) -> Self {
var newSelf = self var newSelf = self
@ -540,7 +331,7 @@ public struct Label: AdwaitaWidget {
/// The vertical alignment of the label text inside its size allocation. /// The vertical alignment of the label text inside its size allocation.
/// ///
/// Compare this to [property@Gtk.Widget:valign], which determines how the /// Compare this to ``valign(_:)``, which determines how the
/// labels size allocation is positioned in the space available for the label. /// labels size allocation is positioned in the space available for the label.
public func yalign(_ yalign: Float?) -> Self { public func yalign(_ yalign: Float?) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// LevelBar.swift // LevelBar.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -13,10 +13,10 @@ import LevenshteinTransformations
/// Typical use cases are displaying the strength of a password, or /// Typical use cases are displaying the strength of a password, or
/// showing the charge level of a battery. /// showing the charge level of a battery.
/// ///
/// <picture><source srcset="levelbar-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkLevelBar" src="levelbar.png"></picture>
/// ///
/// Use [method@Gtk.LevelBar.set_value] to set the current value, and ///
/// [method@Gtk.LevelBar.add_offset_value] to set the value offsets at which /// Use `Gtk.LevelBar.set_value` to set the current value, and
/// `Gtk.LevelBar.add_offset_value` to set the value offsets at which
/// the bar will be considered in a different state. GTK will add a few /// the bar will be considered in a different state. GTK will add a few
/// offsets by default on the level bar: %GTK_LEVEL_BAR_OFFSET_LOW, /// offsets by default on the level bar: %GTK_LEVEL_BAR_OFFSET_LOW,
/// %GTK_LEVEL_BAR_OFFSET_HIGH and %GTK_LEVEL_BAR_OFFSET_FULL, with /// %GTK_LEVEL_BAR_OFFSET_HIGH and %GTK_LEVEL_BAR_OFFSET_FULL, with
@ -26,85 +26,7 @@ import LevenshteinTransformations
/// when changing the minimum or maximum value. GTK will simply clamp /// when changing the minimum or maximum value. GTK will simply clamp
/// them to the new range. /// them to the new range.
/// ///
/// ## Adding a custom offset on the bar
/// ///
/// ```c
/// static GtkWidget *
/// create_level_bar (void)
/// {
/// GtkWidget *widget;
/// GtkLevelBar *bar;
///
/// widget = gtk_level_bar_new ();
/// bar = GTK_LEVEL_BAR (widget);
///
/// // This changes the value of the default low offset
///
/// gtk_level_bar_add_offset_value (bar,
/// GTK_LEVEL_BAR_OFFSET_LOW,
/// 0.10);
///
/// // This adds a new offset to the bar; the application will
/// // be able to change its color CSS like this:
/// //
/// // levelbar block.my-offset {
/// // background-color: magenta;
/// // border-style: solid;
/// // border-color: black;
/// // border-width: 1px;
/// // }
///
/// gtk_level_bar_add_offset_value (bar, "my-offset", 0.60);
///
/// return widget;
/// }
/// ```
///
/// The default interval of values is between zero and one, but its possible
/// to modify the interval using [method@Gtk.LevelBar.set_min_value] and
/// [method@Gtk.LevelBar.set_max_value]. The value will be always drawn in
/// proportion to the admissible interval, i.e. a value of 15 with a specified
/// interval between 10 and 20 is equivalent to a value of 0.5 with an interval
/// between 0 and 1. When %GTK_LEVEL_BAR_MODE_DISCRETE is used, the bar level
/// is rendered as a finite number of separated blocks instead of a single one.
/// The number of blocks that will be rendered is equal to the number of units
/// specified by the admissible interval.
///
/// For instance, to build a bar rendered with five blocks, its sufficient to
/// set the minimum value to 0 and the maximum value to 5 after changing the
/// indicator mode to discrete.
///
/// # GtkLevelBar as GtkBuildable
///
/// The `GtkLevelBar` implementation of the `GtkBuildable` interface supports a
/// custom `<offsets>` element, which can contain any number of `<offset>` elements,
/// each of which must have "name" and "value" attributes.
///
/// # CSS nodes
///
/// ```
/// levelbar[.discrete]
/// trough
/// block.filled.level-name
///
/// block.empty
///
/// ```
///
/// `GtkLevelBar` has a main CSS node with name levelbar and one of the style
/// classes .discrete or .continuous and a subnode with name trough. Below the
/// trough node are a number of nodes with name block and style class .filled
/// or .empty. In continuous mode, there is exactly one node of each, in discrete
/// mode, the number of filled and unfilled nodes corresponds to blocks that are
/// drawn. The block.filled nodes also get a style class .level-name corresponding
/// to the level for the current value.
///
/// In horizontal orientation, the nodes are always arranged from left to right,
/// regardless of text direction.
///
/// # Accessibility
///
/// `GtkLevelBar` uses the [enum@Gtk.AccessibleRole.meter] role.
public struct LevelBar: AdwaitaWidget { public struct LevelBar: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -129,7 +51,7 @@ public struct LevelBar: AdwaitaWidget {
var value: Double? var value: Double?
/// Emitted when an offset specified on the bar changes value. /// Emitted when an offset specified on the bar changes value.
/// ///
/// This typically is the result of a [method@Gtk.LevelBar.add_offset_value] /// This typically is the result of a `Gtk.LevelBar.add_offset_value`
/// call. /// call.
/// ///
/// The signal supports detailed connections; you can connect to the /// The signal supports detailed connections; you can connect to the
@ -236,7 +158,7 @@ public struct LevelBar: AdwaitaWidget {
/// Emitted when an offset specified on the bar changes value. /// Emitted when an offset specified on the bar changes value.
/// ///
/// This typically is the result of a [method@Gtk.LevelBar.add_offset_value] /// This typically is the result of a `Gtk.LevelBar.add_offset_value`
/// call. /// call.
/// ///
/// The signal supports detailed connections; you can connect to the /// The signal supports detailed connections; you can connect to the

View File

@ -2,7 +2,7 @@
// LinkButton.swift // LinkButton.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,43 +10,23 @@ import LevenshteinTransformations
/// A button with a hyperlink. /// A button with a hyperlink.
/// ///
/// <picture><source srcset="link-button-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkLinkButton" src="link-button.png"></picture> ///
/// ///
/// It is useful to show quick links to resources. /// It is useful to show quick links to resources.
/// ///
/// A link button is created by calling either [ctor@Gtk.LinkButton.new] or /// A link button is created by calling either `Gtk.LinkButton.new` or
/// [ctor@Gtk.LinkButton.new_with_label]. If using the former, the URI you /// `Gtk.LinkButton.new_with_label`. If using the former, the URI you
/// pass to the constructor is used as a label for the widget. /// pass to the constructor is used as a label for the widget.
/// ///
/// The URI bound to a `GtkLinkButton` can be set specifically using /// The URI bound to a `GtkLinkButton` can be set specifically using
/// [method@Gtk.LinkButton.set_uri]. /// `Gtk.LinkButton.set_uri`.
/// ///
/// By default, `GtkLinkButton` calls [method@Gtk.FileLauncher.launch] when the button /// By default, `GtkLinkButton` calls `Gtk.FileLauncher.launch` when the button
/// is clicked. This behaviour can be overridden by connecting to the /// is clicked. This behaviour can be overridden by connecting to the
/// [signal@Gtk.LinkButton::activate-link] signal and returning %TRUE from /// `Gtk.LinkButton::activate-link` signal and returning `true` from
/// the signal handler. /// the signal handler.
/// ///
/// # Shortcuts and Gestures
/// ///
/// `GtkLinkButton` supports the following keyboard shortcuts:
///
/// - <kbd>Shift</kbd>+<kbd>F10</kbd> or <kbd>Menu</kbd> opens the context menu.
///
/// # Actions
///
/// `GtkLinkButton` defines a set of built-in actions:
///
/// - `clipboard.copy` copies the url to the clipboard.
/// - `menu.popup` opens the context menu.
///
/// # CSS nodes
///
/// `GtkLinkButton` has a single CSS node with name button. To differentiate
/// it from a plain `GtkButton`, it gets the .link style class.
///
/// # Accessibility
///
/// `GtkLinkButton` uses the [enum@Gtk.AccessibleRole.link] role.
public struct LinkButton: AdwaitaWidget { public struct LinkButton: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -88,7 +68,7 @@ public struct LinkButton: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.
@ -262,7 +242,7 @@ public struct LinkButton: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.

View File

@ -2,7 +2,7 @@
// ListBox.swift // ListBox.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// Shows a vertical list. /// Shows a vertical list.
/// ///
/// <picture><source srcset="list-box-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkListBox" src="list-box.png"></picture> ///
/// ///
/// A `GtkListBox` only contains `GtkListBoxRow` children. These rows can /// A `GtkListBox` only contains `GtkListBoxRow` children. These rows can
/// by dynamically sorted and filtered, and headers can be added dynamically /// by dynamically sorted and filtered, and headers can be added dynamically
@ -23,55 +23,17 @@ import LevenshteinTransformations
/// button in it). /// button in it).
/// ///
/// Although a `GtkListBox` must have only `GtkListBoxRow` children, you can /// Although a `GtkListBox` must have only `GtkListBoxRow` children, you can
/// add any kind of widget to it via [method@Gtk.ListBox.prepend], /// add any kind of widget to it via `Gtk.ListBox.prepend`,
/// [method@Gtk.ListBox.append] and [method@Gtk.ListBox.insert] and a /// `Gtk.ListBox.append` and `Gtk.ListBox.insert` and a
/// `GtkListBoxRow` widget will automatically be inserted between the list /// `GtkListBoxRow` widget will automatically be inserted between the list
/// and the widget. /// and the widget.
/// ///
/// `GtkListBoxRows` can be marked as activatable or selectable. If a row is /// `GtkListBoxRows` can be marked as activatable or selectable. If a row is
/// activatable, [signal@Gtk.ListBox::row-activated] will be emitted for it when /// activatable, `Gtk.ListBox::row-activated` will be emitted for it when
/// the user tries to activate it. If it is selectable, the row will be marked /// the user tries to activate it. If it is selectable, the row will be marked
/// as selected when the user tries to select it. /// as selected when the user tries to select it.
/// ///
/// # GtkListBox as GtkBuildable
/// ///
/// The `GtkListBox` implementation of the `GtkBuildable` interface supports
/// setting a child as the placeholder by specifying placeholder as the type
/// attribute of a `<child>` element. See [method@Gtk.ListBox.set_placeholder]
/// for info.
///
/// # Shortcuts and Gestures
///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.ListBox::move-cursor]
/// - [signal@Gtk.ListBox::select-all]
/// - [signal@Gtk.ListBox::toggle-cursor-row]
/// - [signal@Gtk.ListBox::unselect-all]
///
/// # CSS nodes
///
/// ```
/// list[.separators][.rich-list][.navigation-sidebar][.boxed-list]
/// row[.activatable]
/// ```
///
/// `GtkListBox` uses a single CSS node named list. It may carry the .separators
/// style class, when the [property@Gtk.ListBox:show-separators] property is set.
/// Each `GtkListBoxRow` uses a single CSS node named row. The row nodes get the
/// .activatable style class added when appropriate.
///
/// It may also carry the .boxed-list style class. In this case, the list will be
/// automatically surrounded by a frame and have separators.
///
/// The main list node may also carry style classes to select
/// the style of [list presentation](section-list-widget.html#list-styles):
/// .rich-list, .navigation-sidebar or .data-table.
///
/// # Accessibility
///
/// `GtkListBox` uses the [enum@Gtk.AccessibleRole.list] role and `GtkListBoxRow` uses
/// the [enum@Gtk.AccessibleRole.list_item] role.
public struct ListBox<Element>: AdwaitaWidget where Element: Identifiable { public struct ListBox<Element>: AdwaitaWidget where Element: Identifiable {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -111,7 +73,7 @@ public struct ListBox<Element>: AdwaitaWidget where Element: Identifiable {
/// ///
/// When the @box is using %GTK_SELECTION_MULTIPLE, this signal will not /// When the @box is using %GTK_SELECTION_MULTIPLE, this signal will not
/// give you the full picture of selection changes, and you should use /// give you the full picture of selection changes, and you should use
/// the [signal@Gtk.ListBox::selected-rows-changed] signal instead. /// the `Gtk.ListBox::selected-rows-changed` signal instead.
var rowSelected: (() -> Void)? var rowSelected: (() -> Void)?
/// Emitted to select all children of the box, if the selection /// Emitted to select all children of the box, if the selection
/// mode permits it. /// mode permits it.
@ -311,7 +273,7 @@ public struct ListBox<Element>: AdwaitaWidget where Element: Identifiable {
/// ///
/// When the @box is using %GTK_SELECTION_MULTIPLE, this signal will not /// When the @box is using %GTK_SELECTION_MULTIPLE, this signal will not
/// give you the full picture of selection changes, and you should use /// give you the full picture of selection changes, and you should use
/// the [signal@Gtk.ListBox::selected-rows-changed] signal instead. /// the `Gtk.ListBox::selected-rows-changed` signal instead.
public func rowSelected(_ rowSelected: @escaping () -> Void) -> Self { public func rowSelected(_ rowSelected: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.rowSelected = rowSelected newSelf.rowSelected = rowSelected

View File

@ -2,7 +2,7 @@
// Menu.swift // Menu.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,22 +10,22 @@ import LevenshteinTransformations
/// Displays a popup when clicked. /// Displays a popup when clicked.
/// ///
/// <picture><source srcset="menu-button-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkMenuButton" src="menu-button.png"></picture> ///
/// ///
/// This popup can be provided either as a `GtkPopover` or as an abstract /// This popup can be provided either as a `GtkPopover` or as an abstract
/// `GMenuModel`. /// `GMenuModel`.
/// ///
/// The `GtkMenuButton` widget can show either an icon (set with the /// The `GtkMenuButton` widget can show either an icon (set with the
/// [property@Gtk.MenuButton:icon-name] property) or a label (set with the /// ``iconName(_:)`` property) or a label (set with the
/// [property@Gtk.MenuButton:label] property). If neither is explicitly set, /// ``label(_:)`` property). If neither is explicitly set,
/// a [class@Gtk.Image] is automatically created, using an arrow image oriented /// a `Gtk.Image` is automatically created, using an arrow image oriented
/// according to [property@Gtk.MenuButton:direction] or the generic /// according to ``direction(_:)`` or the generic
/// open-menu-symbolic icon if the direction is not set. /// open-menu-symbolic icon if the direction is not set.
/// ///
/// The positioning of the popup is determined by the /// The positioning of the popup is determined by the
/// [property@Gtk.MenuButton:direction] property of the menu button. /// ``direction(_:)`` property of the menu button.
/// ///
/// For menus, the [property@Gtk.Widget:halign] and [property@Gtk.Widget:valign] /// For menus, the ``halign(_:)`` and ``valign(_:)``
/// properties of the menu are also taken into account. For example, when the /// properties of the menu are also taken into account. For example, when the
/// direction is %GTK_ARROW_DOWN and the horizontal alignment is %GTK_ALIGN_START, /// direction is %GTK_ARROW_DOWN and the horizontal alignment is %GTK_ALIGN_START,
/// the menu will be positioned below the button, with the starting edge /// the menu will be positioned below the button, with the starting edge
@ -41,34 +41,7 @@ import LevenshteinTransformations
/// | **left** | ![](left-start.png) | ![](left-center.png) | ![](left-end.png) | /// | **left** | ![](left-start.png) | ![](left-center.png) | ![](left-end.png) |
/// | **right** | ![](right-start.png) | ![](right-center.png) | ![](right-end.png) | /// | **right** | ![](right-start.png) | ![](right-center.png) | ![](right-end.png) |
/// ///
/// # CSS nodes
/// ///
/// ```
/// menubutton
/// button.toggle
/// <content> [arrow]
/// ```
///
/// `GtkMenuButton` has a single CSS node with name `menubutton`
/// which contains a `button` node with a `.toggle` style class.
///
/// If the button contains an icon, it will have the `.image-button` style class,
/// if it contains text, it will have `.text-button` style class. If an arrow is
/// visible in addition to an icon, text or a custom child, it will also have
/// `.arrow-button` style class.
///
/// Inside the toggle button content, there is an `arrow` node for
/// the indicator, which will carry one of the `.none`, `.up`, `.down`,
/// `.left` or `.right` style classes to indicate the direction that
/// the menu will appear in. The CSS is expected to provide a suitable
/// image for each of these cases using the `-gtk-icon-source` property.
///
/// Optionally, the `menubutton` node can carry the `.circular` style class
/// to request a round appearance.
///
/// # Accessibility
///
/// `GtkMenuButton` uses the [enum@Gtk.AccessibleRole.button] role.
public struct Menu: AdwaitaWidget { public struct Menu: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -97,8 +70,8 @@ public struct Menu: AdwaitaWidget {
var label: String? var label: String?
/// The `GMenuModel` from which the popup will be created. /// The `GMenuModel` from which the popup will be created.
/// ///
/// See [method@Gtk.MenuButton.set_menu_model] for the interaction /// See `Gtk.MenuButton.set_menu_model` for the interaction
/// with the [property@Gtk.MenuButton:popover] property. /// with the ``popover(_:)`` property.
var menuModel: (() -> Body)? var menuModel: (() -> Body)?
/// Whether the menu button acts as a primary menu. /// Whether the menu button acts as a primary menu.
/// ///
@ -264,8 +237,8 @@ if let active, newValue != active.wrappedValue {
/// The `GMenuModel` from which the popup will be created. /// The `GMenuModel` from which the popup will be created.
/// ///
/// See [method@Gtk.MenuButton.set_menu_model] for the interaction /// See `Gtk.MenuButton.set_menu_model` for the interaction
/// with the [property@Gtk.MenuButton:popover] property. /// with the ``popover(_:)`` property.
public func menuModel(@ViewBuilder _ menuModel: @escaping (() -> Body)) -> Self { public func menuModel(@ViewBuilder _ menuModel: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.menuModel = menuModel newSelf.menuModel = menuModel

View File

@ -2,7 +2,7 @@
// NavigationView.swift // NavigationView.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,114 +10,33 @@ import LevenshteinTransformations
/// A page-based navigation container. /// A page-based navigation container.
/// ///
/// <picture><source srcset="navigation-view-dark.png" media="(prefers-color-scheme: dark)"><img src="navigation-view.png" alt="navigation-view"></picture> ///
/// ///
/// `AdwNavigationView` presents one child at a time, similar to /// `AdwNavigationView` presents one child at a time, similar to
/// [class@Gtk.Stack]. /// `Gtk.Stack`.
/// ///
/// `AdwNavigationView` can only contain [class@NavigationPage] children. /// `AdwNavigationView` can only contain `NavigationPage` children.
/// ///
/// It maintains a navigation stack that can be controlled with /// It maintains a navigation stack that can be controlled with
/// [method@NavigationView.push] and [method@NavigationView.pop]. The whole /// `NavigationView.push` and `NavigationView.pop`. The whole
/// navigation stack can also be replaced using [method@NavigationView.replace]. /// navigation stack can also be replaced using `NavigationView.replace`.
/// ///
/// `AdwNavigationView` allows to manage pages statically or dynamically. /// `AdwNavigationView` allows to manage pages statically or dynamically.
/// ///
/// Static pages can be added using the [method@NavigationView.add] method. The /// Static pages can be added using the `NavigationView.add` method. The
/// `AdwNavigationView` will keep a reference to these pages, but they aren't /// `AdwNavigationView` will keep a reference to these pages, but they aren't
/// accessible to the user until [method@NavigationView.push] is called (except /// accessible to the user until `NavigationView.push` is called (except
/// for the first page, which is pushed automatically). Use the /// for the first page, which is pushed automatically). Use the
/// [method@NavigationView.remove] method to remove them. This is useful for /// `NavigationView.remove` method to remove them. This is useful for
/// applications that have a small number of unique pages and just need /// applications that have a small number of unique pages and just need
/// navigation between them. /// navigation between them.
/// ///
/// Dynamic pages are automatically destroyed once they are popped off the /// Dynamic pages are automatically destroyed once they are popped off the
/// navigation stack. To add a page like this, push it using the /// navigation stack. To add a page like this, push it using the
/// [method@NavigationView.push] method without calling /// `NavigationView.push` method without calling
/// [method@NavigationView.add] first. /// `NavigationView.add` first.
/// ///
/// ## Tags
/// ///
/// Static pages, as well as any pages in the navigation stack, can be accessed
/// by their [property@NavigationPage:tag]. For example,
/// [method@NavigationView.push_by_tag] can be used to push a static page that's
/// not in the navigation stack without having to keep a reference to it manually.
///
/// ## Header Bar Integration
///
/// When used inside `AdwNavigationView`, [class@HeaderBar] will automatically
/// display a back button that can be used to go back to the previous page when
/// possible. The button also has a context menu, allowing to pop multiple pages
/// at once, potentially across multiple navigation views.
///
/// Set [property@HeaderBar:show-back-button] to `FALSE` to disable this behavior
/// in rare scenarios where it's unwanted.
///
/// `AdwHeaderBar` will also display the title of the `AdwNavigationPage` it's
/// placed into, so most applications shouldn't need to customize it at all.
///
/// ## Shortcuts and Gestures
///
/// `AdwNavigationView` supports the following shortcuts for going to the
/// previous page:
///
/// - <kbd>Escape</kbd> (unless [property@NavigationView:pop-on-escape] is set to
/// `FALSE`)
/// - <kbd>Alt</kbd>+<kbd></kbd>
/// - Back mouse button
///
/// Additionally, it supports interactive gestures:
///
/// - One-finger swipe towards the right on touchscreens
/// - Scrolling towards the right on touchpads (usually two-finger swipe)
///
/// These gestures have transitions enabled regardless of the
/// [property@NavigationView:animate-transitions] value.
///
/// Applications can also enable shortcuts for pushing another page onto the
/// navigation stack via connecting to the [signal@NavigationView::get-next-page]
/// signal, in that case the following shortcuts are supported:
///
/// - <kbd>Alt</kbd>+<kbd></kbd>
/// - Forward mouse button
/// - Swipe/scrolling towards the left
///
/// For right-to-left locales, the gestures and shortcuts are reversed.
///
/// [property@NavigationPage:can-pop] can be used to disable them, along with the
/// header bar back buttons.
///
/// ## Actions
///
/// `AdwNavigationView` defines actions for controlling the navigation stack.
/// actions for controlling the navigation stack:
///
/// - `navigation.push` takes a string parameter specifying the tag of the page to
/// push, and is equivalent to calling [method@NavigationView.push_by_tag].
///
/// - `navigation.pop` doesn't take any parameters and pops the current page from
/// the navigation stack, equivalent to calling [method@NavigationView.pop].
///
/// ## `AdwNavigationView` as `GtkBuildable`
///
/// `AdwNavigationView` allows to add pages as children, equivalent to using the
/// [method@NavigationView.add] method.
///
/// Example of an `AdwNavigationView` UI definition:
///
/// ```xml
/// <object class="AdwNavigationView"><child><object class="AdwNavigationPage"><property name="title" translatable="yes">Page 1</property><property name="child"><object class="AdwToolbarView"><child type="top"><object class="AdwHeaderBar"/></child><property name="content"><object class="GtkButton"><property name="label" translatable="yes">Open Page 2</property><property name="halign">center</property><property name="valign">center</property><property name="action-name">navigation.push</property><property name="action-target">'page-2'</property><style><class name="pill"/></style></object></property></object></property></object></child><child><object class="AdwNavigationPage"><property name="title" translatable="yes">Page 2</property><property name="tag">page-2</property><property name="child"><object class="AdwToolbarView"><child type="top"><object class="AdwHeaderBar"/></child><property name="content"><!-- ... --></property></object></property></object></child></object>
/// ```
///
/// <picture><source srcset="navigation-view-example-dark.png" media="(prefers-color-scheme: dark)"><img src="navigation-view-example.png" alt="navigation-view-example"></picture>
///
/// ## CSS nodes
///
/// `AdwNavigationView` has a single CSS node with the name `navigation-view`.
///
/// ## Accessibility
///
/// `AdwNavigationView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct NavigationView: AdwaitaWidget { public struct NavigationView: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -162,23 +81,23 @@ public struct NavigationView: AdwaitaWidget {
/// not make any irreversible changes in the handler, such as removing the page /// not make any irreversible changes in the handler, such as removing the page
/// from a forward stack. /// from a forward stack.
/// ///
/// Instead, it should be done in the [signal@NavigationView::pushed] handler. /// Instead, it should be done in the `NavigationView::pushed` handler.
var getNextPage: (() -> Void)? var getNextPage: (() -> Void)?
/// Emitted after @page has been popped from the navigation stack. /// Emitted after @page has been popped from the navigation stack.
/// ///
/// See [method@NavigationView.pop]. /// See `NavigationView.pop`.
/// ///
/// When using [method@NavigationView.pop_to_page] or /// When using `NavigationView.pop_to_page` or
/// [method@NavigationView.pop_to_tag], this signal is emitted for each of the /// `NavigationView.pop_to_tag`, this signal is emitted for each of the
/// popped pages. /// popped pages.
var popped: (() -> Void)? var popped: (() -> Void)?
/// Emitted after a page has been pushed to the navigation stack. /// Emitted after a page has been pushed to the navigation stack.
/// ///
/// See [method@NavigationView.push]. /// See `NavigationView.push`.
var pushed: (() -> Void)? var pushed: (() -> Void)?
/// Emitted after the navigation stack has been replaced. /// Emitted after the navigation stack has been replaced.
/// ///
/// See [method@NavigationView.replace]. /// See `NavigationView.replace`.
var replaced: (() -> Void)? var replaced: (() -> Void)?
/// Initialize `NavigationView`. /// Initialize `NavigationView`.
@ -315,7 +234,7 @@ public struct NavigationView: AdwaitaWidget {
/// not make any irreversible changes in the handler, such as removing the page /// not make any irreversible changes in the handler, such as removing the page
/// from a forward stack. /// from a forward stack.
/// ///
/// Instead, it should be done in the [signal@NavigationView::pushed] handler. /// Instead, it should be done in the `NavigationView::pushed` handler.
public func getNextPage(_ getNextPage: @escaping () -> Void) -> Self { public func getNextPage(_ getNextPage: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.getNextPage = getNextPage newSelf.getNextPage = getNextPage
@ -324,10 +243,10 @@ public struct NavigationView: AdwaitaWidget {
/// Emitted after @page has been popped from the navigation stack. /// Emitted after @page has been popped from the navigation stack.
/// ///
/// See [method@NavigationView.pop]. /// See `NavigationView.pop`.
/// ///
/// When using [method@NavigationView.pop_to_page] or /// When using `NavigationView.pop_to_page` or
/// [method@NavigationView.pop_to_tag], this signal is emitted for each of the /// `NavigationView.pop_to_tag`, this signal is emitted for each of the
/// popped pages. /// popped pages.
public func popped(_ popped: @escaping () -> Void) -> Self { public func popped(_ popped: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
@ -337,7 +256,7 @@ public struct NavigationView: AdwaitaWidget {
/// Emitted after a page has been pushed to the navigation stack. /// Emitted after a page has been pushed to the navigation stack.
/// ///
/// See [method@NavigationView.push]. /// See `NavigationView.push`.
public func pushed(_ pushed: @escaping () -> Void) -> Self { public func pushed(_ pushed: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.pushed = pushed newSelf.pushed = pushed
@ -346,7 +265,7 @@ public struct NavigationView: AdwaitaWidget {
/// Emitted after the navigation stack has been replaced. /// Emitted after the navigation stack has been replaced.
/// ///
/// See [method@NavigationView.replace]. /// See `NavigationView.replace`.
public func replaced(_ replaced: @escaping () -> Void) -> Self { public func replaced(_ replaced: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.replaced = replaced newSelf.replaced = replaced

View File

@ -2,7 +2,7 @@
// Overlay.swift // Overlay.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,10 +10,10 @@ import LevenshteinTransformations
/// Places overlay widgets on top of a single main child. /// Places overlay widgets on top of a single main child.
/// ///
/// <picture><source srcset="overlay-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkOverlay" src="overlay.png"></picture> ///
/// ///
/// The position of each overlay widget is determined by its /// The position of each overlay widget is determined by its
/// [property@Gtk.Widget:halign] and [property@Gtk.Widget:valign] /// ``halign(_:)`` and ``valign(_:)``
/// properties. E.g. a widget with both alignments set to %GTK_ALIGN_START /// properties. E.g. a widget with both alignments set to %GTK_ALIGN_START
/// will be placed at the top left corner of the `GtkOverlay` container, /// will be placed at the top left corner of the `GtkOverlay` container,
/// whereas an overlay with halign set to %GTK_ALIGN_CENTER and valign set /// whereas an overlay with halign set to %GTK_ALIGN_CENTER and valign set
@ -22,23 +22,13 @@ import LevenshteinTransformations
/// properties of the child to non-zero values. /// properties of the child to non-zero values.
/// ///
/// More complicated placement of overlays is possible by connecting /// More complicated placement of overlays is possible by connecting
/// to the [signal@Gtk.Overlay::get-child-position] signal. /// to the `Gtk.Overlay::get-child-position` signal.
/// ///
/// An overlays minimum and natural sizes are those of its main child. /// An overlays minimum and natural sizes are those of its main child.
/// The sizes of overlay children are not considered when measuring these /// The sizes of overlay children are not considered when measuring these
/// preferred sizes. /// preferred sizes.
/// ///
/// # GtkOverlay as GtkBuildable
/// ///
/// The `GtkOverlay` implementation of the `GtkBuildable` interface
/// supports placing a child as an overlay by specifying overlay as
/// the type attribute of a `<child>` element.
///
/// # CSS nodes
///
/// `GtkOverlay` has a single CSS node with the name overlay. Overlay children
/// whose alignments cause them to be positioned at an edge get the style classes
/// .left, .right, .top, and/or .bottom according to their position.
public struct Overlay: AdwaitaWidget { public struct Overlay: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// OverlaySplitView.swift // OverlaySplitView.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,34 +10,34 @@ import LevenshteinTransformations
/// A widget presenting sidebar and content side by side or as an overlay. /// A widget presenting sidebar and content side by side or as an overlay.
/// ///
/// <picture><source srcset="overlay-split-view-dark.png" media="(prefers-color-scheme: dark)"><img src="overlay-split-view.png" alt="overlay-split-view"></picture><picture><source srcset="overlay-split-view-collapsed-dark.png" media="(prefers-color-scheme: dark)"><img src="overlay-split-view-collapsed.png" alt="overlay-split-view-collapsed"></picture> ///
/// ///
/// `AdwOverlaySplitView` has two children: sidebar and content, and displays /// `AdwOverlaySplitView` has two children: sidebar and content, and displays
/// them side by side. /// them side by side.
/// ///
/// When [property@OverlaySplitView:collapsed] is set to `TRUE`, the sidebar is /// When ``collapsed(_:)`` is set to `true`, the sidebar is
/// instead shown as an overlay above the content widget. /// instead shown as an overlay above the content widget.
/// ///
/// The sidebar can be hidden or shown using the /// The sidebar can be hidden or shown using the
/// [property@OverlaySplitView:show-sidebar] property. /// ``showSidebar(_:)`` property.
/// ///
/// Sidebar can be displayed before or after the content, this can be controlled /// Sidebar can be displayed before or after the content, this can be controlled
/// with the [property@OverlaySplitView:sidebar-position] property. /// with the ``sidebarPosition(_:)`` property.
/// ///
/// Collapsing the split view automatically hides the sidebar widget, and /// Collapsing the split view automatically hides the sidebar widget, and
/// uncollapsing it shows the sidebar. If this behavior is not desired, the /// uncollapsing it shows the sidebar. If this behavior is not desired, the
/// [property@OverlaySplitView:pin-sidebar] property can be used to override it. /// ``pinSidebar(_:)`` property can be used to override it.
/// ///
/// `AdwOverlaySplitView` supports an edge swipe gesture for showing the sidebar, /// `AdwOverlaySplitView` supports an edge swipe gesture for showing the sidebar,
/// and a swipe from the sidebar for hiding it. Gestures are only supported on /// and a swipe from the sidebar for hiding it. Gestures are only supported on
/// touchscreen, but not touchpad. Gestures can be controlled with the /// touchscreen, but not touchpad. Gestures can be controlled with the
/// [property@OverlaySplitView:enable-show-gesture] and /// ``enableShowGesture(_:)`` and
/// [property@OverlaySplitView:enable-hide-gesture] properties. /// ``enableHideGesture(_:)`` properties.
/// ///
/// See also [class@NavigationSplitView]. /// See also `NavigationSplitView`.
/// ///
/// `AdwOverlaySplitView` is typically used together with an [class@Breakpoint] /// `AdwOverlaySplitView` is typically used together with an `Breakpoint`
/// setting the `collapsed` property to `TRUE` on small widths, as follows: /// setting the `collapsed` property to `true` on small widths, as follows:
/// ///
/// ```xml /// ```xml
/// <object class="AdwWindow"><property name="default-width">800</property><property name="default-height">800</property><child><object class="AdwBreakpoint"><condition>max-width: 400sp</condition><setter object="split_view" property="collapsed">True</setter></object></child><property name="content"><object class="AdwOverlaySplitView" id="split_view"><property name="sidebar"><!-- ... --></property><property name="content"><!-- ... --></property></object></property></object> /// <object class="AdwWindow"><property name="default-width">800</property><property name="default-height">800</property><child><object class="AdwBreakpoint"><condition>max-width: 400sp</condition><setter object="split_view" property="collapsed">True</setter></object></child><property name="content"><object class="AdwOverlaySplitView" id="split_view"><property name="sidebar"><!-- ... --></property><property name="content"><!-- ... --></property></object></property></object>
@ -47,72 +47,7 @@ import LevenshteinTransformations
/// [utility pane](https://developer.gnome.org/hig/patterns/containers/utility-panes.html) /// [utility pane](https://developer.gnome.org/hig/patterns/containers/utility-panes.html)
/// pattern. /// pattern.
/// ///
/// ## Sizing
/// ///
/// When not collapsed, `AdwOverlaySplitView` changes the sidebar width
/// depending on its own width.
///
/// If possible, it tries to allocate a fraction of the total width, controlled
/// with the [property@OverlaySplitView:sidebar-width-fraction] property.
///
/// The sidebar also has minimum and maximum sizes, controlled with the
/// [property@OverlaySplitView:min-sidebar-width] and
/// [property@OverlaySplitView:max-sidebar-width] properties.
///
/// The minimum and maximum sizes are using the length unit specified with the
/// [property@OverlaySplitView:sidebar-width-unit].
///
/// By default, sidebar is using 25% of the total width, with 180sp as the
/// minimum size and 280sp as the maximum size.
///
/// When collapsed, the preferred width fraction is ignored and the sidebar uses
/// [property@OverlaySplitView:max-sidebar-width] when possible.
///
/// ## Header Bar Integration
///
/// When used inside `AdwOverlaySplitView`, [class@HeaderBar] will automatically
/// hide the window buttons in the middle.
///
/// ## `AdwOverlaySplitView` as `GtkBuildable`
///
/// The `AdwOverlaySplitView` implementation of the [iface@Gtk.Buildable]
/// interface supports setting the sidebar widget by specifying sidebar as the
/// type attribute of a `<child>` element, Specifying content child type or
/// omitting it results in setting the content widget.
///
/// ## CSS nodes
///
/// `AdwOverlaySplitView` has a single CSS node with the name
/// `overlay-split-view`.
///
/// It contains two nodes with the name `widget`, containing the sidebar and
/// content children.
///
/// When not collapsed, they have the `.sidebar-view` and `.content-view` style
/// classes respectively.
///
/// ```
/// overlay-split-view
/// widget.sidebar-pane
/// [sidebar child]
/// widget.content-pane
/// [content child]
/// ```
///
/// When collapsed, the one containing the sidebar child has the `.background`
/// style class and the other one has no style classes.
///
/// ```
/// overlay-split-view
/// widget.background
/// [sidebar child]
/// widget
/// [content child]
/// ```
///
/// ## Accessibility
///
/// `AdwOverlaySplitView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct OverlaySplitView: AdwaitaWidget { public struct OverlaySplitView: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -138,7 +73,7 @@ public struct OverlaySplitView: AdwaitaWidget {
/// The maximum sidebar width. /// The maximum sidebar width.
/// ///
/// Maximum width is affected by /// Maximum width is affected by
/// [property@OverlaySplitView:sidebar-width-unit]. /// ``sidebarWidthUnit(_:)``.
/// ///
/// The sidebar widget can still be allocated with larger width if its own /// The sidebar widget can still be allocated with larger width if its own
/// minimum width exceeds it. /// minimum width exceeds it.
@ -146,7 +81,7 @@ public struct OverlaySplitView: AdwaitaWidget {
/// The minimum sidebar width. /// The minimum sidebar width.
/// ///
/// Minimum width is affected by /// Minimum width is affected by
/// [property@OverlaySplitView:sidebar-width-unit]. /// ``sidebarWidthUnit(_:)``.
/// ///
/// The sidebar widget can still be allocated with larger width if its own /// The sidebar widget can still be allocated with larger width if its own
/// minimum width exceeds it. /// minimum width exceeds it.
@ -154,7 +89,7 @@ public struct OverlaySplitView: AdwaitaWidget {
/// Whether the sidebar widget is pinned. /// Whether the sidebar widget is pinned.
/// ///
/// By default, collapsing @self automatically hides the sidebar widget, and /// By default, collapsing @self automatically hides the sidebar widget, and
/// uncollapsing it shows the sidebar. If set to `TRUE`, sidebar visibility /// uncollapsing it shows the sidebar. If set to `true`, sidebar visibility
/// never changes on its own. /// never changes on its own.
var pinSidebar: Bool? var pinSidebar: Bool?
/// Whether the sidebar widget is shown. /// Whether the sidebar widget is shown.
@ -164,8 +99,8 @@ public struct OverlaySplitView: AdwaitaWidget {
/// The preferred sidebar width as a fraction of the total width. /// The preferred sidebar width as a fraction of the total width.
/// ///
/// The preferred width is additionally limited by /// The preferred width is additionally limited by
/// [property@OverlaySplitView:min-sidebar-width] and /// ``minSidebarWidth(_:)`` and
/// [property@OverlaySplitView:max-sidebar-width]. /// ``maxSidebarWidth(_:)``.
/// ///
/// The sidebar widget can be allocated with larger width if its own minimum /// The sidebar widget can be allocated with larger width if its own minimum
/// width exceeds the preferred width. /// width exceeds the preferred width.
@ -293,7 +228,7 @@ if let showSidebar, newValue != showSidebar.wrappedValue {
/// The maximum sidebar width. /// The maximum sidebar width.
/// ///
/// Maximum width is affected by /// Maximum width is affected by
/// [property@OverlaySplitView:sidebar-width-unit]. /// ``sidebarWidthUnit(_:)``.
/// ///
/// The sidebar widget can still be allocated with larger width if its own /// The sidebar widget can still be allocated with larger width if its own
/// minimum width exceeds it. /// minimum width exceeds it.
@ -306,7 +241,7 @@ if let showSidebar, newValue != showSidebar.wrappedValue {
/// The minimum sidebar width. /// The minimum sidebar width.
/// ///
/// Minimum width is affected by /// Minimum width is affected by
/// [property@OverlaySplitView:sidebar-width-unit]. /// ``sidebarWidthUnit(_:)``.
/// ///
/// The sidebar widget can still be allocated with larger width if its own /// The sidebar widget can still be allocated with larger width if its own
/// minimum width exceeds it. /// minimum width exceeds it.
@ -319,7 +254,7 @@ if let showSidebar, newValue != showSidebar.wrappedValue {
/// Whether the sidebar widget is pinned. /// Whether the sidebar widget is pinned.
/// ///
/// By default, collapsing @self automatically hides the sidebar widget, and /// By default, collapsing @self automatically hides the sidebar widget, and
/// uncollapsing it shows the sidebar. If set to `TRUE`, sidebar visibility /// uncollapsing it shows the sidebar. If set to `true`, sidebar visibility
/// never changes on its own. /// never changes on its own.
public func pinSidebar(_ pinSidebar: Bool? = true) -> Self { public func pinSidebar(_ pinSidebar: Bool? = true) -> Self {
var newSelf = self var newSelf = self
@ -344,8 +279,8 @@ if let showSidebar, newValue != showSidebar.wrappedValue {
/// The preferred sidebar width as a fraction of the total width. /// The preferred sidebar width as a fraction of the total width.
/// ///
/// The preferred width is additionally limited by /// The preferred width is additionally limited by
/// [property@OverlaySplitView:min-sidebar-width] and /// ``minSidebarWidth(_:)`` and
/// [property@OverlaySplitView:max-sidebar-width]. /// ``maxSidebarWidth(_:)``.
/// ///
/// The sidebar widget can be allocated with larger width if its own minimum /// The sidebar widget can be allocated with larger width if its own minimum
/// width exceeds the preferred width. /// width exceeds the preferred width.

View File

@ -2,15 +2,15 @@
// PasswordEntryRow.swift // PasswordEntryRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@EntryRow] tailored for entering secrets. /// A `EntryRow` tailored for entering secrets.
///
/// ///
/// <picture><source srcset="password-entry-row-dark.png" media="(prefers-color-scheme: dark)"><img src="password-entry-row.png" alt="password-entry-row"></picture>
/// ///
/// It does not show its contents in clear text, does not allow to copy it to the /// It does not show its contents in clear text, does not allow to copy it to the
/// clipboard, and shows a warning when Caps Lock is engaged. If the underlying /// clipboard, and shows a warning when Caps Lock is engaged. If the underlying
@ -20,10 +20,7 @@ import LevenshteinTransformations
/// ///
/// It offer a way to reveal the contents in clear text. /// It offer a way to reveal the contents in clear text.
/// ///
/// ## CSS Nodes
/// ///
/// `AdwPasswordEntryRow` has a single CSS node with name `row` that carries
/// `.entry` and `.password` style classes.
public struct PasswordEntryRow: AdwaitaWidget { public struct PasswordEntryRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -41,9 +38,9 @@ public struct PasswordEntryRow: AdwaitaWidget {
var maxLength: Int? var maxLength: Int?
/// Whether to show the apply button. /// Whether to show the apply button.
/// ///
/// When set to `TRUE`, typing text in the entry will reveal an apply button. /// When set to `true`, typing text in the entry will reveal an apply button.
/// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and /// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and
/// emit the [signal@EntryRow::apply] signal. /// emit the `EntryRow::apply` signal.
/// ///
/// This is useful if changing the entry contents can trigger an expensive /// This is useful if changing the entry contents can trigger an expensive
/// operation, e.g. network activity, to avoid triggering it after typing every /// operation, e.g. network activity, to avoid triggering it after typing every
@ -54,23 +51,23 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
/// Emitted when the apply button is pressed. /// Emitted when the apply button is pressed.
/// ///
/// See [property@EntryRow:show-apply-button]. /// See ``showApplyButton(_:)``.
var apply: (() -> Void)? var apply: (() -> Void)?
/// Emitted when the embedded entry is activated. /// Emitted when the embedded entry is activated.
var entryActivated: (() -> Void)? var entryActivated: (() -> Void)?
@ -190,9 +187,9 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// Whether to show the apply button. /// Whether to show the apply button.
/// ///
/// When set to `TRUE`, typing text in the entry will reveal an apply button. /// When set to `true`, typing text in the entry will reveal an apply button.
/// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and /// Clicking it or pressing the <kbd>Enter</kbd> key will hide the button and
/// emit the [signal@EntryRow::apply] signal. /// emit the `EntryRow::apply` signal.
/// ///
/// This is useful if changing the entry contents can trigger an expensive /// This is useful if changing the entry contents can trigger an expensive
/// operation, e.g. network activity, to avoid triggering it after typing every /// operation, e.g. network activity, to avoid triggering it after typing every
@ -213,7 +210,7 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -222,7 +219,7 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -233,7 +230,7 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup
@ -249,7 +246,7 @@ public struct PasswordEntryRow: AdwaitaWidget {
/// Emitted when the apply button is pressed. /// Emitted when the apply button is pressed.
/// ///
/// See [property@EntryRow:show-apply-button]. /// See ``showApplyButton(_:)``.
public func apply(_ apply: @escaping () -> Void) -> Self { public func apply(_ apply: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.apply = apply newSelf.apply = apply

View File

@ -2,7 +2,7 @@
// Picture.swift // Picture.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// Displays a `GdkPaintable`. /// Displays a `GdkPaintable`.
/// ///
/// picture><source srcset="picture-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkPicture" src="picture.png"></picture> ///
/// ///
/// Many convenience functions are provided to make pictures simple to use. /// Many convenience functions are provided to make pictures simple to use.
/// For example, if you want to load an image from a file, and then display /// For example, if you want to load an image from a file, and then display
@ -24,36 +24,18 @@ import LevenshteinTransformations
/// broken image icon similar to that used in many web browsers. /// broken image icon similar to that used in many web browsers.
/// If you want to handle errors in loading the file yourself, /// If you want to handle errors in loading the file yourself,
/// for example by displaying an error message, then load the image with /// for example by displaying an error message, then load the image with
/// [ctor@Gdk.Texture.new_from_file], then create the `GtkPicture` with /// and image loading framework such as libglycin, then create the `GtkPicture`
/// [ctor@Gtk.Picture.new_for_paintable]. /// with `Gtk.Picture.new_for_paintable`.
/// ///
/// Sometimes an application will want to avoid depending on external data /// Sometimes an application will want to avoid depending on external data
/// files, such as image files. See the documentation of `GResource` for details. /// files, such as image files. See the documentation of `GResource` for details.
/// In this case, [ctor@Gtk.Picture.new_for_resource] and /// In this case, `Gtk.Picture.new_for_resource` and
/// [method@Gtk.Picture.set_resource] should be used. /// `Gtk.Picture.set_resource` should be used.
/// ///
/// `GtkPicture` displays an image at its natural size. See [class@Gtk.Image] /// `GtkPicture` displays an image at its natural size. See `Gtk.Image`
/// if you want to display a fixed-size image, such as an icon. /// if you want to display a fixed-size image, such as an icon.
/// ///
/// ## Sizing the paintable
/// ///
/// You can influence how the paintable is displayed inside the `GtkPicture`
/// by changing [property@Gtk.Picture:content-fit]. See [enum@Gtk.ContentFit]
/// for details. [property@Gtk.Picture:can-shrink] can be unset to make sure
/// that paintables are never made smaller than their ideal size - but
/// be careful if you do not know the size of the paintable in use (like
/// when displaying user-loaded images). This can easily cause the picture to
/// grow larger than the screen. And [property@Gtk.Widget:halign] and
/// [property@Gtk.Widget:valign] can be used to make sure the paintable doesn't
/// fill all available space but is instead displayed at its original size.
///
/// ## CSS nodes
///
/// `GtkPicture` has a single CSS node with the name `picture`.
///
/// ## Accessibility
///
/// `GtkPicture` uses the [enum@Gtk.AccessibleRole.img] role.
public struct Picture: AdwaitaWidget { public struct Picture: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// Popover.swift // Popover.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,80 +10,29 @@ import LevenshteinTransformations
/// Presents a bubble-like popup. /// Presents a bubble-like popup.
/// ///
/// <picture><source srcset="popover-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkPopover" src="popover.png"></picture> ///
/// ///
/// It is primarily meant to provide context-dependent information /// It is primarily meant to provide context-dependent information
/// or options. Popovers are attached to a parent widget. The parent widget /// or options. Popovers are attached to a parent widget. The parent widget
/// must support popover children, as [class@Gtk.MenuButton] and /// must support popover children, as `Gtk.MenuButton` and
/// [class@Gtk.PopoverMenuBar] do. If you want to make a custom widget that /// `Gtk.PopoverMenuBar` do. If you want to make a custom widget that
/// has an attached popover, you need to call [method@Gtk.Popover.present] /// has an attached popover, you need to call `Gtk.Popover.present`
/// in your [vfunc@Gtk.Widget.size_allocate] vfunc, in order to update the /// in your [vfunc@Gtk.Widget.size_allocate] vfunc, in order to update the
/// positioning of the popover. /// positioning of the popover.
/// ///
/// The position of a popover relative to the widget it is attached to /// The position of a popover relative to the widget it is attached to
/// can also be changed with [method@Gtk.Popover.set_position]. By default, /// can also be changed with `Gtk.Popover.set_position`. By default,
/// it points to the whole widget area, but it can be made to point to /// it points to the whole widget area, but it can be made to point to
/// a specific area using [method@Gtk.Popover.set_pointing_to]. /// a specific area using `Gtk.Popover.set_pointing_to`.
/// ///
/// By default, `GtkPopover` performs a grab, in order to ensure input /// By default, `GtkPopover` performs a grab, in order to ensure input
/// events get redirected to it while it is shown, and also so the popover /// events get redirected to it while it is shown, and also so the popover
/// is dismissed in the expected situations (clicks outside the popover, /// is dismissed in the expected situations (clicks outside the popover,
/// or the Escape key being pressed). If no such modal behavior is desired /// or the Escape key being pressed). If no such modal behavior is desired
/// on a popover, [method@Gtk.Popover.set_autohide] may be called on it to /// on a popover, `Gtk.Popover.set_autohide` may be called on it to
/// tweak its behavior. /// tweak its behavior.
/// ///
/// ## GtkPopover as menu replacement
/// ///
/// `GtkPopover` is often used to replace menus. The best way to do this
/// is to use the [class@Gtk.PopoverMenu] subclass which supports being
/// populated from a `GMenuModel` with [ctor@Gtk.PopoverMenu.new_from_model].
///
/// ```xml
/// <section><attribute name="display-hint">horizontal-buttons</attribute><item><attribute name="label">Cut</attribute><attribute name="action">app.cut</attribute><attribute name="verb-icon">edit-cut-symbolic</attribute></item><item><attribute name="label">Copy</attribute><attribute name="action">app.copy</attribute><attribute name="verb-icon">edit-copy-symbolic</attribute></item><item><attribute name="label">Paste</attribute><attribute name="action">app.paste</attribute><attribute name="verb-icon">edit-paste-symbolic</attribute></item></section>
/// ```
///
/// # Shortcuts and Gestures
///
/// `GtkPopover` supports the following keyboard shortcuts:
///
/// - <kbd>Escape</kbd> closes the popover.
/// - <kbd>Alt</kbd> makes the mnemonics visible.
///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.Popover::activate-default]
///
/// # CSS nodes
///
/// ```
/// popover.background[.menu]
/// arrow
/// contents
/// <child>
/// ```
///
/// `GtkPopover` has a main node with name `popover`, an arrow with name `arrow`,
/// and another node for the content named `contents`. The `popover` node always
/// gets the `.background` style class. It also gets the `.menu` style class
/// if the popover is menu-like, e.g. is a [class@Gtk.PopoverMenu].
///
/// Particular uses of `GtkPopover`, such as touch selection popups or
/// magnifiers in `GtkEntry` or `GtkTextView` get style classes like
/// `.touch-selection` or `.magnifier` to differentiate from plain popovers.
///
/// When styling a popover directly, the `popover` node should usually
/// not have any background. The visible part of the popover can have
/// a shadow. To specify it in CSS, set the box-shadow of the `contents` node.
///
/// Note that, in order to accomplish appropriate arrow visuals, `GtkPopover`
/// uses custom drawing for the `arrow` node. This makes it possible for the
/// arrow to change its shape dynamically, but it also limits the possibilities
/// of styling it using CSS. In particular, the `arrow` gets drawn over the
/// `content` node's border and shadow, so they look like one shape, which
/// means that the border width of the `content` node and the `arrow` node should
/// be the same. The arrow also does not support any border shape other than
/// solid, no border-radius, only one border width (border-bottom-width is
/// used) and no box-shadow.
public struct Popover: AdwaitaWidget { public struct Popover: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// PreferencesGroup.swift // PreferencesGroup.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,37 +10,18 @@ import LevenshteinTransformations
/// A group of preference rows. /// A group of preference rows.
/// ///
/// <picture><source srcset="preferences-group-dark.png" media="(prefers-color-scheme: dark)"><img src="preferences-group.png" alt="preferences-group"></picture> ///
/// ///
/// An `AdwPreferencesGroup` represents a group or tightly related preferences, /// An `AdwPreferencesGroup` represents a group or tightly related preferences,
/// which in turn are represented by [class@PreferencesRow]. /// which in turn are represented by `PreferencesRow`.
/// ///
/// To summarize the role of the preferences it gathers, a group can have both a /// To summarize the role of the preferences it gathers, a group can have both a
/// title and a description. The title will be used by [class@PreferencesDialog] /// title and a description. The title will be used by `PreferencesDialog`
/// to let the user look for a preference. /// to let the user look for a preference.
/// ///
/// The [property@PreferencesGroup:separate-rows] property can be used to /// The ``separateRows(_:)`` property can be used to
/// separate the rows within the group, same as when using the /// separate the rows within the group, same as when using the
/// [`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class /// [`.boxed-list-separate`](style-classes.html
/// instead of `.boxed-list`.
///
/// ## AdwPreferencesGroup as GtkBuildable
///
/// The `AdwPreferencesGroup` implementation of the [iface@Gtk.Buildable] interface
/// supports adding [class@PreferencesRow]s to the list by omitting "type". If "type"
/// is omitted and the widget isn't a [class@PreferencesRow] the child is added to
/// a box below the list.
///
/// When the "type" attribute of a child is `header-suffix`, the child
/// is set as the suffix on the end of the title and description.
///
/// ## CSS nodes
///
/// `AdwPreferencesGroup` has a single CSS node with name `preferencesgroup`.
///
/// ## Accessibility
///
/// `AdwPreferencesGroup` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct PreferencesGroup: AdwaitaWidget { public struct PreferencesGroup: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -60,8 +41,7 @@ public struct PreferencesGroup: AdwaitaWidget {
/// Whether to separate rows. /// Whether to separate rows.
/// ///
/// Equivalent to using the /// Equivalent to using the
/// [`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class /// [`.boxed-list-separate`](style-classes.html
/// on a [class@Gtk.ListBox] instead of `.boxed-list`.
var separateRows: Bool? var separateRows: Bool?
/// The title for this group of preferences. /// The title for this group of preferences.
var title: String? var title: String?
@ -164,8 +144,7 @@ public struct PreferencesGroup: AdwaitaWidget {
/// Whether to separate rows. /// Whether to separate rows.
/// ///
/// Equivalent to using the /// Equivalent to using the
/// [`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class /// [`.boxed-list-separate`](style-classes.html
/// on a [class@Gtk.ListBox] instead of `.boxed-list`.
public func separateRows(_ separateRows: Bool? = true) -> Self { public func separateRows(_ separateRows: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.separateRows = separateRows newSelf.separateRows = separateRows

View File

@ -2,26 +2,20 @@
// PreferencesPage.swift // PreferencesPage.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A page from [class@PreferencesDialog]. /// A page from `PreferencesDialog`.
///
/// ///
/// <picture><source srcset="preferences-page-dark.png" media="(prefers-color-scheme: dark)"><img src="preferences-page.png" alt="preferences-page"></picture>
/// ///
/// The `AdwPreferencesPage` widget gathers preferences groups into a single page /// The `AdwPreferencesPage` widget gathers preferences groups into a single page
/// of a preferences window. /// of a preferences window.
/// ///
/// ## CSS nodes
/// ///
/// `AdwPreferencesPage` has a single CSS node with name `preferencespage`.
///
/// ## Accessibility
///
/// `AdwPreferencesPage` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct PreferencesPage: AdwaitaWidget { public struct PreferencesPage: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,19 +2,19 @@
// PreferencesRow.swift // PreferencesRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] used to present preferences. /// A `Gtk.ListBoxRow` used to present preferences.
/// ///
/// The `AdwPreferencesRow` widget has a title that [class@PreferencesDialog] /// The `AdwPreferencesRow` widget has a title that `PreferencesDialog`
/// will use to let the user look for a preference. It doesn't present the title /// will use to let the user look for a preference. It doesn't present the title
/// in any way and lets you present the preference as you please. /// in any way and lets you present the preference as you please.
/// ///
/// [class@ActionRow] and its derivatives are convenient to use as preference /// `ActionRow` and its derivatives are convenient to use as preference
/// rows as they take care of presenting the preference's title while letting you /// rows as they take care of presenting the preference's title while letting you
/// compose the inputs of the preference around it. /// compose the inputs of the preference around it.
public struct PreferencesRow: AdwaitaWidget { public struct PreferencesRow: AdwaitaWidget {
@ -27,17 +27,17 @@ public struct PreferencesRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -97,7 +97,7 @@ public struct PreferencesRow: AdwaitaWidget {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -106,7 +106,7 @@ public struct PreferencesRow: AdwaitaWidget {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -117,7 +117,7 @@ public struct PreferencesRow: AdwaitaWidget {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup

View File

@ -2,7 +2,7 @@
// ProgressBar.swift // ProgressBar.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -13,19 +13,19 @@ import LevenshteinTransformations
/// `GtkProgressBar` provides a visual clue that processing is underway. /// `GtkProgressBar` provides a visual clue that processing is underway.
/// It can be used in two different modes: percentage mode and activity mode. /// It can be used in two different modes: percentage mode and activity mode.
/// ///
/// <picture><source srcset="progressbar-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkProgressBar" src="progressbar.png"></picture> ///
/// ///
/// When an application can determine how much work needs to take place /// When an application can determine how much work needs to take place
/// (e.g. read a fixed number of bytes from a file) and can monitor its /// (e.g. read a fixed number of bytes from a file) and can monitor its
/// progress, it can use the `GtkProgressBar` in percentage mode and the /// progress, it can use the `GtkProgressBar` in percentage mode and the
/// user sees a growing bar indicating the percentage of the work that /// user sees a growing bar indicating the percentage of the work that
/// has been completed. In this mode, the application is required to call /// has been completed. In this mode, the application is required to call
/// [method@Gtk.ProgressBar.set_fraction] periodically to update the progress bar. /// `Gtk.ProgressBar.set_fraction` periodically to update the progress bar.
/// ///
/// When an application has no accurate way of knowing the amount of work /// When an application has no accurate way of knowing the amount of work
/// to do, it can use the `GtkProgressBar` in activity mode, which shows /// to do, it can use the `GtkProgressBar` in activity mode, which shows
/// activity by a block moving back and forth within the progress area. In /// activity by a block moving back and forth within the progress area. In
/// this mode, the application is required to call [method@Gtk.ProgressBar.pulse] /// this mode, the application is required to call `Gtk.ProgressBar.pulse`
/// periodically to update the progress bar. /// periodically to update the progress bar.
/// ///
/// There is quite a bit of flexibility provided to control the appearance /// There is quite a bit of flexibility provided to control the appearance
@ -33,26 +33,7 @@ import LevenshteinTransformations
/// of the bar, optional text can be displayed along with the bar, and the /// of the bar, optional text can be displayed along with the bar, and the
/// step size used in activity mode can be set. /// step size used in activity mode can be set.
/// ///
/// # CSS nodes
/// ///
/// ```
/// progressbar[.osd]
/// [text]
/// trough[.empty][.full]
/// progress[.pulse]
/// ```
///
/// `GtkProgressBar` has a main CSS node with name progressbar and subnodes with
/// names text and trough, of which the latter has a subnode named progress. The
/// text subnode is only present if text is shown. The progress subnode has the
/// style class .pulse when in activity mode. It gets the style classes .left,
/// .right, .top or .bottom added when the progress 'touches' the corresponding
/// end of the GtkProgressBar. The .osd class on the progressbar node is for use
/// in overlays like the one Epiphany has for page loading progress.
///
/// # Accessibility
///
/// `GtkProgressBar` uses the [enum@Gtk.AccessibleRole.progress_bar] role.
public struct ProgressBar: AdwaitaWidget { public struct ProgressBar: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -73,13 +54,13 @@ public struct ProgressBar: AdwaitaWidget {
/// Sets whether the progress bar will show a text in addition /// Sets whether the progress bar will show a text in addition
/// to the bar itself. /// to the bar itself.
/// ///
/// The shown text is either the value of the [property@Gtk.ProgressBar:text] /// The shown text is either the value of the ``text(_:)``
/// property or, if that is %NULL, the [property@Gtk.ProgressBar:fraction] /// property or, if that is %NULL, the ``fraction(_:)``
/// value, as a percentage. /// value, as a percentage.
/// ///
/// To make a progress bar that is styled and sized suitably for showing text /// To make a progress bar that is styled and sized suitably for showing text
/// (even if the actual text is blank), set [property@Gtk.ProgressBar:show-text] /// (even if the actual text is blank), set ``showText(_:)``
/// to %TRUE and [property@Gtk.ProgressBar:text] to the empty string (not %NULL). /// to `true` and ``text(_:)`` to the empty string (not %NULL).
var showText: Bool? var showText: Bool?
/// Text to be displayed in the progress bar. /// Text to be displayed in the progress bar.
var text: String? var text: String?
@ -172,13 +153,13 @@ public struct ProgressBar: AdwaitaWidget {
/// Sets whether the progress bar will show a text in addition /// Sets whether the progress bar will show a text in addition
/// to the bar itself. /// to the bar itself.
/// ///
/// The shown text is either the value of the [property@Gtk.ProgressBar:text] /// The shown text is either the value of the ``text(_:)``
/// property or, if that is %NULL, the [property@Gtk.ProgressBar:fraction] /// property or, if that is %NULL, the ``fraction(_:)``
/// value, as a percentage. /// value, as a percentage.
/// ///
/// To make a progress bar that is styled and sized suitably for showing text /// To make a progress bar that is styled and sized suitably for showing text
/// (even if the actual text is blank), set [property@Gtk.ProgressBar:show-text] /// (even if the actual text is blank), set ``showText(_:)``
/// to %TRUE and [property@Gtk.ProgressBar:text] to the empty string (not %NULL). /// to `true` and ``text(_:)`` to the empty string (not %NULL).
public func showText(_ showText: Bool? = true) -> Self { public func showText(_ showText: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.showText = showText newSelf.showText = showText

View File

@ -2,7 +2,7 @@
// ScrolledWindow.swift // ScrolledWindow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,28 +10,28 @@ import LevenshteinTransformations
/// Makes its child scrollable. /// Makes its child scrollable.
/// ///
/// <picture><source srcset="scrolledwindow-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkScrolledWindow" src="scrolledwindow.png"></picture> ///
/// ///
/// It does so using either internally added scrollbars or externally /// It does so using either internally added scrollbars or externally
/// associated adjustments, and optionally draws a frame around the child. /// associated adjustments, and optionally draws a frame around the child.
/// ///
/// Widgets with native scrolling support, i.e. those whose classes implement /// Widgets with native scrolling support, i.e. those whose classes implement
/// the [iface@Gtk.Scrollable] interface, are added directly. For other types /// the `Gtk.Scrollable` interface, are added directly. For other types
/// of widget, the class [class@Gtk.Viewport] acts as an adaptor, giving /// of widget, the class `Gtk.Viewport` acts as an adaptor, giving
/// scrollability to other widgets. [method@Gtk.ScrolledWindow.set_child] /// scrollability to other widgets. `Gtk.ScrolledWindow.set_child`
/// intelligently accounts for whether or not the added child is a `GtkScrollable`. /// intelligently accounts for whether or not the added child is a `GtkScrollable`.
/// If it isnt, then it wraps the child in a `GtkViewport`. Therefore, you can /// If it isnt, then it wraps the child in a `GtkViewport`. Therefore, you can
/// just add any child widget and not worry about the details. /// just add any child widget and not worry about the details.
/// ///
/// If [method@Gtk.ScrolledWindow.set_child] has added a `GtkViewport` for you, /// If `Gtk.ScrolledWindow.set_child` has added a `GtkViewport` for you,
/// it will be automatically removed when you unset the child. /// it will be automatically removed when you unset the child.
/// Unless [property@Gtk.ScrolledWindow:hscrollbar-policy] and /// Unless ``hscrollbarPolicy(_:)`` and
/// [property@Gtk.ScrolledWindow:vscrollbar-policy] are %GTK_POLICY_NEVER or /// ``vscrollbarPolicy(_:)`` are %GTK_POLICY_NEVER or
/// %GTK_POLICY_EXTERNAL, `GtkScrolledWindow` adds internal `GtkScrollbar` widgets /// %GTK_POLICY_EXTERNAL, `GtkScrolledWindow` adds internal `GtkScrollbar` widgets
/// around its child. The scroll position of the child, and if applicable the /// around its child. The scroll position of the child, and if applicable the
/// scrollbars, is controlled by the [property@Gtk.ScrolledWindow:hadjustment] /// scrollbars, is controlled by the ``hadjustment(_:)``
/// and [property@Gtk.ScrolledWindow:vadjustment] that are associated with the /// and ``vadjustment(_:)`` that are associated with the
/// `GtkScrolledWindow`. See the docs on [class@Gtk.Scrollbar] for the details, /// `GtkScrolledWindow`. See the docs on `Gtk.Scrollbar` for the details,
/// but note that the step_increment and page_increment fields are only /// but note that the step_increment and page_increment fields are only
/// effective if the policy causes scrollbars to be present. /// effective if the policy causes scrollbars to be present.
/// ///
@ -39,52 +39,7 @@ import LevenshteinTransformations
/// doesnt have exactly the right layout, its very possible to set up /// doesnt have exactly the right layout, its very possible to set up
/// your own scrolling with `GtkScrollbar` and for example a `GtkGrid`. /// your own scrolling with `GtkScrollbar` and for example a `GtkGrid`.
/// ///
/// # Touch support
/// ///
/// `GtkScrolledWindow` has built-in support for touch devices. When a
/// touchscreen is used, swiping will move the scrolled window, and will
/// expose 'kinetic' behavior. This can be turned off with the
/// [property@Gtk.ScrolledWindow:kinetic-scrolling] property if it is undesired.
///
/// `GtkScrolledWindow` also displays visual 'overshoot' indication when
/// the content is pulled beyond the end, and this situation can be
/// captured with the [signal@Gtk.ScrolledWindow::edge-overshot] signal.
///
/// If no mouse device is present, the scrollbars will overlaid as
/// narrow, auto-hiding indicators over the content. If traditional
/// scrollbars are desired although no mouse is present, this behaviour
/// can be turned off with the [property@Gtk.ScrolledWindow:overlay-scrolling]
/// property.
///
/// # Shortcuts and Gestures
///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.ScrolledWindow::scroll-child]
///
/// # CSS nodes
///
/// `GtkScrolledWindow` has a main CSS node with name scrolledwindow.
/// It gets a .frame style class added when [property@Gtk.ScrolledWindow:has-frame]
/// is %TRUE.
///
/// It uses subnodes with names overshoot and undershoot to draw the overflow
/// and underflow indications. These nodes get the .left, .right, .top or .bottom
/// style class added depending on where the indication is drawn.
///
/// `GtkScrolledWindow` also sets the positional style classes (.left, .right,
/// .top, .bottom) and style classes related to overlay scrolling
/// (.overlay-indicator, .dragging, .hovering) on its scrollbars.
///
/// If both scrollbars are visible, the area where they meet is drawn
/// with a subnode named junction.
///
/// # Accessibility
///
/// Until GTK 4.10, `GtkScrolledWindow` used the [enum@Gtk.AccessibleRole.group] role.
///
/// Starting from GTK 4.12, `GtkScrolledWindow` uses the [enum@Gtk.AccessibleRole.generic]
/// role.
public struct ScrolledWindow: AdwaitaWidget { public struct ScrolledWindow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -99,14 +54,14 @@ public struct ScrolledWindow: AdwaitaWidget {
/// The child widget. /// The child widget.
/// ///
/// When setting this property, if the child widget does not implement /// When setting this property, if the child widget does not implement
/// [iface@Gtk.Scrollable], the scrolled window will add the child to /// `Gtk.Scrollable`, the scrolled window will add the child to
/// a [class@Gtk.Viewport] and then set the viewport as the child. /// a `Gtk.Viewport` and then set the viewport as the child.
var child: (() -> Body)? var child: (() -> Body)?
/// Whether to draw a frame around the contents. /// Whether to draw a frame around the contents.
var hasFrame: Bool? var hasFrame: Bool?
/// When the horizontal scrollbar is displayed. /// When the horizontal scrollbar is displayed.
/// ///
/// Use [method@Gtk.ScrolledWindow.set_policy] to set /// Use `Gtk.ScrolledWindow.set_policy` to set
/// this property. /// this property.
var hscrollbarPolicy: ScrollbarVisibility? var hscrollbarPolicy: ScrollbarVisibility?
/// Whether kinetic scrolling is enabled or not. /// Whether kinetic scrolling is enabled or not.
@ -128,7 +83,7 @@ public struct ScrolledWindow: AdwaitaWidget {
/// the content, as narrow indicators. /// the content, as narrow indicators.
/// ///
/// Note that overlay scrolling can also be globally disabled, with /// Note that overlay scrolling can also be globally disabled, with
/// the [property@Gtk.Settings:gtk-overlay-scrolling] setting. /// the ``gtkOverlayScrolling(_:)`` setting.
var overlayScrolling: Bool? var overlayScrolling: Bool?
/// Whether the natural height of the child should be calculated and propagated /// Whether the natural height of the child should be calculated and propagated
/// through the scrolled windows requested natural height. /// through the scrolled windows requested natural height.
@ -144,7 +99,7 @@ public struct ScrolledWindow: AdwaitaWidget {
var propagateNaturalWidth: Bool? var propagateNaturalWidth: Bool?
/// When the vertical scrollbar is displayed. /// When the vertical scrollbar is displayed.
/// ///
/// Use [method@Gtk.ScrolledWindow.set_policy] to set /// Use `Gtk.ScrolledWindow.set_policy` to set
/// this property. /// this property.
var vscrollbarPolicy: ScrollbarVisibility? var vscrollbarPolicy: ScrollbarVisibility?
/// Emitted whenever user initiated scrolling makes the scrolled /// Emitted whenever user initiated scrolling makes the scrolled
@ -152,7 +107,7 @@ public struct ScrolledWindow: AdwaitaWidget {
/// in that orientation. /// in that orientation.
/// ///
/// A similar behavior without edge resistance is provided by the /// A similar behavior without edge resistance is provided by the
/// [signal@Gtk.ScrolledWindow::edge-reached] signal. /// `Gtk.ScrolledWindow::edge-reached` signal.
/// ///
/// Note: The @pos argument is LTR/RTL aware, so callers should be /// Note: The @pos argument is LTR/RTL aware, so callers should be
/// aware too if intending to provide behavior on horizontal edges. /// aware too if intending to provide behavior on horizontal edges.
@ -162,7 +117,7 @@ public struct ScrolledWindow: AdwaitaWidget {
/// adjustment in that orientation. /// adjustment in that orientation.
/// ///
/// A similar behavior with edge resistance is provided by the /// A similar behavior with edge resistance is provided by the
/// [signal@Gtk.ScrolledWindow::edge-overshot] signal. /// `Gtk.ScrolledWindow::edge-overshot` signal.
/// ///
/// Note: The @pos argument is LTR/RTL aware, so callers should be /// Note: The @pos argument is LTR/RTL aware, so callers should be
/// aware too if intending to provide behavior on horizontal edges. /// aware too if intending to provide behavior on horizontal edges.
@ -299,8 +254,8 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// The child widget. /// The child widget.
/// ///
/// When setting this property, if the child widget does not implement /// When setting this property, if the child widget does not implement
/// [iface@Gtk.Scrollable], the scrolled window will add the child to /// `Gtk.Scrollable`, the scrolled window will add the child to
/// a [class@Gtk.Viewport] and then set the viewport as the child. /// a `Gtk.Viewport` and then set the viewport as the child.
public func child(@ViewBuilder _ child: @escaping (() -> Body)) -> Self { public func child(@ViewBuilder _ child: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.child = child newSelf.child = child
@ -316,7 +271,7 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// When the horizontal scrollbar is displayed. /// When the horizontal scrollbar is displayed.
/// ///
/// Use [method@Gtk.ScrolledWindow.set_policy] to set /// Use `Gtk.ScrolledWindow.set_policy` to set
/// this property. /// this property.
public func hscrollbarPolicy(_ hscrollbarPolicy: ScrollbarVisibility?) -> Self { public func hscrollbarPolicy(_ hscrollbarPolicy: ScrollbarVisibility?) -> Self {
var newSelf = self var newSelf = self
@ -368,7 +323,7 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// the content, as narrow indicators. /// the content, as narrow indicators.
/// ///
/// Note that overlay scrolling can also be globally disabled, with /// Note that overlay scrolling can also be globally disabled, with
/// the [property@Gtk.Settings:gtk-overlay-scrolling] setting. /// the ``gtkOverlayScrolling(_:)`` setting.
public func overlayScrolling(_ overlayScrolling: Bool? = true) -> Self { public func overlayScrolling(_ overlayScrolling: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.overlayScrolling = overlayScrolling newSelf.overlayScrolling = overlayScrolling
@ -399,7 +354,7 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// When the vertical scrollbar is displayed. /// When the vertical scrollbar is displayed.
/// ///
/// Use [method@Gtk.ScrolledWindow.set_policy] to set /// Use `Gtk.ScrolledWindow.set_policy` to set
/// this property. /// this property.
public func vscrollbarPolicy(_ vscrollbarPolicy: ScrollbarVisibility?) -> Self { public func vscrollbarPolicy(_ vscrollbarPolicy: ScrollbarVisibility?) -> Self {
var newSelf = self var newSelf = self
@ -412,7 +367,7 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// in that orientation. /// in that orientation.
/// ///
/// A similar behavior without edge resistance is provided by the /// A similar behavior without edge resistance is provided by the
/// [signal@Gtk.ScrolledWindow::edge-reached] signal. /// `Gtk.ScrolledWindow::edge-reached` signal.
/// ///
/// Note: The @pos argument is LTR/RTL aware, so callers should be /// Note: The @pos argument is LTR/RTL aware, so callers should be
/// aware too if intending to provide behavior on horizontal edges. /// aware too if intending to provide behavior on horizontal edges.
@ -427,7 +382,7 @@ if hscrollbarPolicy != (storage.previousState as? Self)?.hscrollbarPolicy
/// adjustment in that orientation. /// adjustment in that orientation.
/// ///
/// A similar behavior with edge resistance is provided by the /// A similar behavior with edge resistance is provided by the
/// [signal@Gtk.ScrolledWindow::edge-overshot] signal. /// `Gtk.ScrolledWindow::edge-overshot` signal.
/// ///
/// Note: The @pos argument is LTR/RTL aware, so callers should be /// Note: The @pos argument is LTR/RTL aware, so callers should be
/// aware too if intending to provide behavior on horizontal edges. /// aware too if intending to provide behavior on horizontal edges.

View File

@ -2,7 +2,7 @@
// SearchBar.swift // SearchBar.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// Reveals a search entry when search is started. /// Reveals a search entry when search is started.
/// ///
/// <picture><source srcset="search-bar-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkSearchBar" src="search-bar.png"></picture> ///
/// ///
/// It can also contain additional widgets, such as drop-down menus, /// It can also contain additional widgets, such as drop-down menus,
/// or buttons. The search bar would appear when a search is started /// or buttons. The search bar would appear when a search is started
@ -19,45 +19,15 @@ import LevenshteinTransformations
/// ///
/// For keyboard presses to start a search, the search bar must be told /// For keyboard presses to start a search, the search bar must be told
/// of a widget to capture key events from through /// of a widget to capture key events from through
/// [method@Gtk.SearchBar.set_key_capture_widget]. This widget will /// `Gtk.SearchBar.set_key_capture_widget`. This widget will
/// typically be the top-level window, or a parent container of the /// typically be the top-level window, or a parent container of the
/// search bar. Common shortcuts such as Ctrl+F should be handled as an /// search bar. Common shortcuts such as Ctrl+F should be handled as an
/// application action, or through the menu items. /// application action, or through the menu items.
/// ///
/// You will also need to tell the search bar about which entry you /// You will also need to tell the search bar about which entry you
/// are using as your search entry using [method@Gtk.SearchBar.connect_entry]. /// are using as your search entry using `Gtk.SearchBar.connect_entry`.
/// ///
/// ## Creating a search bar
/// ///
/// The following example shows you how to create a more complex search
/// entry.
///
/// [A simple example](https://gitlab.gnome.org/GNOME/gtk/tree/main/examples/search-bar.c)
///
/// # Shortcuts and Gestures
///
/// `GtkSearchBar` supports the following keyboard shortcuts:
///
/// - <kbd>Escape</kbd> hides the search bar.
///
/// # CSS nodes
///
/// ```
/// searchbar
/// revealer
/// box
/// [child]
/// [button.close]
/// ```
///
/// `GtkSearchBar` has a main CSS node with name searchbar. It has a child
/// node with name revealer that contains a node with name box. The box node
/// contains both the CSS node of the child widget as well as an optional button
/// node which gets the .close style class applied.
///
/// # Accessibility
///
/// `GtkSearchBar` uses the [enum@Gtk.AccessibleRole.search] role.
public struct SearchBar: AdwaitaWidget { public struct SearchBar: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// SearchEntry.swift // SearchEntry.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -13,7 +13,7 @@ import LevenshteinTransformations
/// The main API for interacting with a `GtkSearchEntry` as entry /// The main API for interacting with a `GtkSearchEntry` as entry
/// is the `GtkEditable` interface. /// is the `GtkEditable` interface.
/// ///
/// <picture><source srcset="search-entry-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkSearchEntry" src="search-entry.png"></picture> ///
/// ///
/// It will show an inactive symbolic find icon when the search /// It will show an inactive symbolic find icon when the search
/// entry is empty, and a symbolic clear icon when there is text. /// entry is empty, and a symbolic clear icon when there is text.
@ -22,44 +22,23 @@ import LevenshteinTransformations
/// To make filtering appear more reactive, it is a good idea to /// To make filtering appear more reactive, it is a good idea to
/// not react to every change in the entry text immediately, but /// not react to every change in the entry text immediately, but
/// only after a short delay. To support this, `GtkSearchEntry` /// only after a short delay. To support this, `GtkSearchEntry`
/// emits the [signal@Gtk.SearchEntry::search-changed] signal which /// emits the `Gtk.SearchEntry::search-changed` signal which
/// can be used instead of the [signal@Gtk.Editable::changed] signal. /// can be used instead of the `Gtk.Editable::changed` signal.
/// ///
/// The [signal@Gtk.SearchEntry::previous-match], /// The `Gtk.SearchEntry::previous-match`,
/// [signal@Gtk.SearchEntry::next-match] and /// `Gtk.SearchEntry::next-match` and
/// [signal@Gtk.SearchEntry::stop-search] signals can be used to /// `Gtk.SearchEntry::stop-search` signals can be used to
/// implement moving between search results and ending the search. /// implement moving between search results and ending the search.
/// ///
/// Often, `GtkSearchEntry` will be fed events by means of being /// Often, `GtkSearchEntry` will be fed events by means of being
/// placed inside a [class@Gtk.SearchBar]. If that is not the case, /// placed inside a `Gtk.SearchBar`. If that is not the case,
/// you can use [method@Gtk.SearchEntry.set_key_capture_widget] to /// you can use `Gtk.SearchEntry.set_key_capture_widget` to
/// let it capture key input from another widget. /// let it capture key input from another widget.
/// ///
/// `GtkSearchEntry` provides only minimal API and should be used with /// `GtkSearchEntry` provides only minimal API and should be used with
/// the [iface@Gtk.Editable] API. /// the `Gtk.Editable` API.
/// ///
/// ## Shortcuts and Gestures
/// ///
/// The following signals have default keybindings:
///
/// - [signal@Gtk.SearchEntry::activate]
/// - [signal@Gtk.SearchEntry::next-match]
/// - [signal@Gtk.SearchEntry::previous-match]
/// - [signal@Gtk.SearchEntry::stop-search]
///
/// ## CSS Nodes
///
/// ```
/// entry.search
/// text
/// ```
///
/// `GtkSearchEntry` has a single CSS node with name entry that carries
/// a `.search` style class, and the text node is a child of that.
///
/// ## Accessibility
///
/// `GtkSearchEntry` uses the [enum@Gtk.AccessibleRole.search_box] role.
public struct SearchEntry: AdwaitaWidget { public struct SearchEntry: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -118,7 +97,7 @@ public struct SearchEntry: AdwaitaWidget {
/// range of deleted text, or prevent it from being deleted entirely. /// range of deleted text, or prevent it from being deleted entirely.
/// ///
/// The @start_pos and @end_pos parameters are interpreted as for /// The @start_pos and @end_pos parameters are interpreted as for
/// [method@Gtk.Editable.delete_text]. /// `Gtk.Editable.delete_text`.
var deleteText: (() -> Void)? var deleteText: (() -> Void)?
/// Emitted when text is inserted into the widget by the user. /// Emitted when text is inserted into the widget by the user.
/// ///
@ -149,7 +128,7 @@ public struct SearchEntry: AdwaitaWidget {
/// <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>g</kbd>. /// <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>g</kbd>.
var previousMatch: (() -> Void)? var previousMatch: (() -> Void)?
/// Emitted with a delay. The length of the delay can be /// Emitted with a delay. The length of the delay can be
/// changed with the [property@Gtk.SearchEntry:search-delay] /// changed with the ``searchDelay(_:)``
/// property. /// property.
var searchChanged: (() -> Void)? var searchChanged: (() -> Void)?
/// Emitted when the user initiated a search on the entry. /// Emitted when the user initiated a search on the entry.
@ -403,7 +382,7 @@ if let text, newValue != text.wrappedValue {
/// range of deleted text, or prevent it from being deleted entirely. /// range of deleted text, or prevent it from being deleted entirely.
/// ///
/// The @start_pos and @end_pos parameters are interpreted as for /// The @start_pos and @end_pos parameters are interpreted as for
/// [method@Gtk.Editable.delete_text]. /// `Gtk.Editable.delete_text`.
public func deleteText(_ deleteText: @escaping () -> Void) -> Self { public func deleteText(_ deleteText: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.deleteText = deleteText newSelf.deleteText = deleteText
@ -454,7 +433,7 @@ if let text, newValue != text.wrappedValue {
} }
/// Emitted with a delay. The length of the delay can be /// Emitted with a delay. The length of the delay can be
/// changed with the [property@Gtk.SearchEntry:search-delay] /// changed with the ``searchDelay(_:)``
/// property. /// property.
public func searchChanged(_ searchChanged: @escaping () -> Void) -> Self { public func searchChanged(_ searchChanged: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self

View File

@ -2,7 +2,7 @@
// Separator.swift // Separator.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,20 +10,13 @@ import LevenshteinTransformations
/// Draws a horizontal or vertical line to separate other widgets. /// Draws a horizontal or vertical line to separate other widgets.
/// ///
/// <picture><source srcset="separator-dark.png" media="(prefers-color-scheme: dark)"><img alt="An example GtkSeparator" src="separator.png"></picture> ///
/// ///
/// A `GtkSeparator` can be used to group the widgets within a window. /// A `GtkSeparator` can be used to group the widgets within a window.
/// It displays a line with a shadow to make it appear sunken into the /// It displays a line with a shadow to make it appear sunken into the
/// interface. /// interface.
/// ///
/// # CSS nodes
/// ///
/// `GtkSeparator` has a single CSS node with name separator. The node
/// gets one of the .horizontal or .vertical style classes.
///
/// # Accessibility
///
/// `GtkSeparator` uses the [enum@Gtk.AccessibleRole.separator] role.
public struct Separator: AdwaitaWidget { public struct Separator: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,15 +2,15 @@
// SpinRow.swift // SpinRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// An [class@ActionRow] with an embedded spin button. /// An `ActionRow` with an embedded spin button.
///
/// ///
/// <picture><source srcset="spin-row-dark.png" media="(prefers-color-scheme: dark)"><img src="spin-row.png" alt="spin-row"></picture>
/// ///
/// Example of an `AdwSpinRow` UI definition: /// Example of an `AdwSpinRow` UI definition:
/// ///
@ -18,17 +18,9 @@ import LevenshteinTransformations
/// <object class="AdwSpinRow"><property name="title" translatable="yes">Spin Row</property><property name="adjustment"><object class="GtkAdjustment"><property name="lower">0</property><property name="upper">100</property><property name="value">50</property><property name="page-increment">10</property><property name="step-increment">1</property></object></property></object> /// <object class="AdwSpinRow"><property name="title" translatable="yes">Spin Row</property><property name="adjustment"><object class="GtkAdjustment"><property name="lower">0</property><property name="upper">100</property><property name="value">50</property><property name="page-increment">10</property><property name="step-increment">1</property></object></property></object>
/// ``` /// ```
/// ///
/// See [class@Gtk.SpinButton] for details. /// See `Gtk.SpinButton` for details.
/// ///
/// ## CSS nodes
/// ///
/// `AdwSpinRow` has the same structure as [class@ActionRow], as well as the
/// `.spin` style class on the main node.
///
/// ## Accessibility
///
/// `AdwSpinRow` uses an internal `GtkSpinButton` with the
/// `GTK_ACCESSIBLE_ROLE_SPIN_BUTTON` role.
public struct SpinRow: AdwaitaWidget { public struct SpinRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -39,12 +31,12 @@ public struct SpinRow: AdwaitaWidget {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
var activatableWidget: (() -> Body)? var activatableWidget: (() -> Body)?
/// The acceleration rate when you hold down a button or key. /// The acceleration rate when you hold down a button or key.
var climbRate: Double var climbRate: Double
@ -57,7 +49,7 @@ public struct SpinRow: AdwaitaWidget {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var subtitle: String? var subtitle: String?
/// The number of lines at the end of which the subtitle label will be /// The number of lines at the end of which the subtitle label will be
/// ellipsized. /// ellipsized.
@ -66,12 +58,12 @@ public struct SpinRow: AdwaitaWidget {
var subtitleLines: Int? var subtitleLines: Int?
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var subtitleSelectable: Bool? var subtitleSelectable: Bool?
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// The number of lines at the end of which the title label will be ellipsized. /// The number of lines at the end of which the title label will be ellipsized.
/// ///
@ -79,13 +71,13 @@ public struct SpinRow: AdwaitaWidget {
var titleLines: Int? var titleLines: Int?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -97,20 +89,20 @@ public struct SpinRow: AdwaitaWidget {
var activated: (() -> Void)? var activated: (() -> Void)?
/// Emitted to convert the user's input into a double value. /// Emitted to convert the user's input into a double value.
/// ///
/// The signal handler is expected to use [method@Gtk.Editable.get_text] to /// The signal handler is expected to use `Gtk.Editable.get_text` to
/// retrieve the text of the spinbutton and set new_value to the new value. /// retrieve the text of the spinbutton and set new_value to the new value.
/// ///
/// The default conversion uses [func@GLib.strtod]. /// The default conversion uses `GLib.strtod`.
/// ///
/// See [signal@Gtk.SpinButton::input]. /// See `Gtk.SpinButton::input`.
var input: (() -> Void)? var input: (() -> Void)?
/// Emitted to tweak the formatting of the value for display. /// Emitted to tweak the formatting of the value for display.
/// ///
/// See [signal@Gtk.SpinButton::output]. /// See `Gtk.SpinButton::output`.
var output: (() -> Void)? var output: (() -> Void)?
/// Emitted right after the spinbutton wraps. /// Emitted right after the spinbutton wraps.
/// ///
/// See [signal@Gtk.SpinButton::wrapped]. /// See `Gtk.SpinButton::wrapped`.
var wrapped: (() -> Void)? var wrapped: (() -> Void)?
/// The body for the widget "suffix". /// The body for the widget "suffix".
var suffix: () -> Body = { [] } var suffix: () -> Body = { [] }
@ -249,12 +241,12 @@ if let value, newValue != value.wrappedValue {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self { public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.activatableWidget = activatableWidget newSelf.activatableWidget = activatableWidget
@ -292,7 +284,7 @@ if let value, newValue != value.wrappedValue {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func subtitle(_ subtitle: String?) -> Self { public func subtitle(_ subtitle: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitle = subtitle newSelf.subtitle = subtitle
@ -311,7 +303,7 @@ if let value, newValue != value.wrappedValue {
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self { public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitleSelectable = subtitleSelectable newSelf.subtitleSelectable = subtitleSelectable
@ -321,7 +313,7 @@ if let value, newValue != value.wrappedValue {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -339,7 +331,7 @@ if let value, newValue != value.wrappedValue {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -350,7 +342,7 @@ if let value, newValue != value.wrappedValue {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup
@ -387,12 +379,12 @@ if let value, newValue != value.wrappedValue {
/// Emitted to convert the user's input into a double value. /// Emitted to convert the user's input into a double value.
/// ///
/// The signal handler is expected to use [method@Gtk.Editable.get_text] to /// The signal handler is expected to use `Gtk.Editable.get_text` to
/// retrieve the text of the spinbutton and set new_value to the new value. /// retrieve the text of the spinbutton and set new_value to the new value.
/// ///
/// The default conversion uses [func@GLib.strtod]. /// The default conversion uses `GLib.strtod`.
/// ///
/// See [signal@Gtk.SpinButton::input]. /// See `Gtk.SpinButton::input`.
public func input(_ input: @escaping () -> Void) -> Self { public func input(_ input: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.input = input newSelf.input = input
@ -401,7 +393,7 @@ if let value, newValue != value.wrappedValue {
/// Emitted to tweak the formatting of the value for display. /// Emitted to tweak the formatting of the value for display.
/// ///
/// See [signal@Gtk.SpinButton::output]. /// See `Gtk.SpinButton::output`.
public func output(_ output: @escaping () -> Void) -> Self { public func output(_ output: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.output = output newSelf.output = output
@ -410,7 +402,7 @@ if let value, newValue != value.wrappedValue {
/// Emitted right after the spinbutton wraps. /// Emitted right after the spinbutton wraps.
/// ///
/// See [signal@Gtk.SpinButton::wrapped]. /// See `Gtk.SpinButton::wrapped`.
public func wrapped(_ wrapped: @escaping () -> Void) -> Self { public func wrapped(_ wrapped: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.wrapped = wrapped newSelf.wrapped = wrapped

View File

@ -2,7 +2,7 @@
// Spinner.swift // Spinner.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,14 +10,14 @@ import LevenshteinTransformations
/// A widget showing a loading spinner. /// A widget showing a loading spinner.
/// ///
/// <picture><source srcset="spinner-dark.png" media="(prefers-color-scheme: dark)"><img src="spinner.png" alt="spinner"></picture> ///
/// ///
/// The size of the spinner depends on the available size, never smaller than /// The size of the spinner depends on the available size, never smaller than
/// 16×16 pixels and never larger than 64×64 pixels. /// 16×16 pixels and never larger than 64×64 pixels.
/// ///
/// Use the [property@Gtk.Widget:halign] and [property@Gtk.Widget:valign] /// Use the ``halign(_:)`` and ``valign(_:)``
/// properties in combination with [property@Gtk.Widget:width-request] and /// properties in combination with ``widthRequest(_:)`` and
/// [property@Gtk.Widget:height-request] for fine sizing control. /// ``heightRequest(_:)`` for fine sizing control.
/// ///
/// For example, the following snippet shows the spinner at 48×48 pixels: /// For example, the following snippet shows the spinner at 48×48 pixels:
/// ///
@ -25,17 +25,10 @@ import LevenshteinTransformations
/// <object class="AdwSpinner"><property name="halign">center</property><property name="valign">center</property><property name="width-request">48</property><property name="height-request">48</property></object> /// <object class="AdwSpinner"><property name="halign">center</property><property name="valign">center</property><property name="width-request">48</property><property name="height-request">48</property></object>
/// ``` /// ```
/// ///
/// See [class@SpinnerPaintable] for cases where using a widget is impractical or /// See `SpinnerPaintable` for cases where using a widget is impractical or
/// impossible, such as [property@StatusPage:paintable]. /// impossible, such as ``paintable(_:)``.
/// ///
/// ## CSS nodes
/// ///
/// `AdwSpinner` has a single node with the name `image` and the style class
/// `.spinner`.
///
/// ## Accessibility
///
/// `AdwSpinner` uses the [enum@Gtk.AccessibleRole.progress-bar] role.
public struct Spinner: AdwaitaWidget { public struct Spinner: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// SplitButton.swift // SplitButton.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,47 +10,15 @@ import LevenshteinTransformations
/// A combined button and dropdown widget. /// A combined button and dropdown widget.
/// ///
/// <picture><source srcset="split-button-dark.png" media="(prefers-color-scheme: dark)"><img src="split-button.png" alt="split-button"></picture> ///
/// ///
/// `AdwSplitButton` is typically used to present a set of actions in a menu, /// `AdwSplitButton` is typically used to present a set of actions in a menu,
/// but allow access to one of them with a single click. /// but allow access to one of them with a single click.
/// ///
/// The API is very similar to [class@Gtk.Button] and [class@Gtk.MenuButton], see /// The API is very similar to `Gtk.Button` and `Gtk.MenuButton`, see
/// their documentation for details. /// their documentation for details.
/// ///
/// ## CSS nodes
/// ///
/// ```
/// splitbutton[.image-button][.text-button]
/// button
/// <content> separator
/// menubutton
/// button.toggle
/// arrow
/// ```
///
/// `AdwSplitButton`'s CSS node is called `splitbutton`. It contains the css
/// nodes: `button`, `separator`, `menubutton`. See [class@Gtk.MenuButton]
/// documentation for the `menubutton` contents.
///
/// The main CSS node will contain the `.image-button` or `.text-button` style
/// classes matching the button contents. The nested button nodes will never
/// contain them.
///
/// ## Style classes
///
/// `AdwSplitButton` can use some of the same style classes as [class@Gtk.Button]:
///
/// - [`.suggested-action`](style-classes.html#suggested-action)
/// - [`.destructive-action`](style-classes.html#destructive-action)
/// - [`.flat`](style-classes.html#flat)
/// - [`.raised`](style-classes.html#raised)
///
/// Other style classes, like `.pill`, cannot be used.
///
/// ## Accessibility
///
/// `AdwSplitButton` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct SplitButton: AdwaitaWidget { public struct SplitButton: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -60,15 +28,15 @@ public struct SplitButton: AdwaitaWidget {
/// Whether the button can be smaller than the natural size of its contents. /// Whether the button can be smaller than the natural size of its contents.
/// ///
/// If set to `TRUE`, the label will ellipsize. /// If set to `true`, the label will ellipsize.
/// ///
/// See [property@Gtk.Button:can-shrink] and /// See ``canShrink(_:)`` and
/// [property@Gtk.MenuButton:can-shrink]. /// ``canShrink(_:)``.
var canShrink: Bool? var canShrink: Bool?
/// The child widget. /// The child widget.
/// ///
/// Setting the child widget will set [property@SplitButton:label] and /// Setting the child widget will set ``label(_:)`` and
/// [property@SplitButton:icon-name] to `NULL`. /// ``iconName(_:)`` to `NULL`.
var child: (() -> Body)? var child: (() -> Body)?
/// The tooltip of the dropdown button. /// The tooltip of the dropdown button.
/// ///
@ -76,33 +44,33 @@ public struct SplitButton: AdwaitaWidget {
var dropdownTooltip: String? var dropdownTooltip: String?
/// The name of the icon used to automatically populate the button. /// The name of the icon used to automatically populate the button.
/// ///
/// Setting the icon name will set [property@SplitButton:label] and /// Setting the icon name will set ``label(_:)`` and
/// [property@SplitButton:child] to `NULL`. /// ``child(_:)`` to `NULL`.
var iconName: String? var iconName: String?
/// The label for the button. /// The label for the button.
/// ///
/// Setting the label will set [property@SplitButton:icon-name] and /// Setting the label will set ``iconName(_:)`` and
/// [property@SplitButton:child] to `NULL`. /// ``child(_:)`` to `NULL`.
var label: String? var label: String?
/// The `GMenuModel` from which the popup will be created. /// The `GMenuModel` from which the popup will be created.
/// ///
/// If the menu model is `NULL`, the dropdown is disabled. /// If the menu model is `NULL`, the dropdown is disabled.
/// ///
/// A [class@Gtk.Popover] will be created from the menu model with /// A `Gtk.Popover` will be created from the menu model with
/// [ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as /// `Gtk.PopoverMenu.new_from_model`. Actions will be connected as
/// documented for this function. /// documented for this function.
/// ///
/// If [property@SplitButton:popover] is already set, it will be dissociated /// If ``popover(_:)`` is already set, it will be dissociated
/// from the button, and the property is set to `NULL`. /// from the button, and the property is set to `NULL`.
var menuModel: (() -> Body)? var menuModel: (() -> Body)?
/// Whether an underline in the text indicates a mnemonic. /// Whether an underline in the text indicates a mnemonic.
/// ///
/// See [property@SplitButton:label]. /// See ``label(_:)``.
var useUnderline: Bool? var useUnderline: Bool?
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect to this signal, /// This is an action signal. Applications should never connect to this signal,
/// but use the [signal@SplitButton::clicked] signal. /// but use the `SplitButton::clicked` signal.
var activate: (() -> Void)? var activate: (() -> Void)?
/// Emitted when the button has been activated (pressed and released). /// Emitted when the button has been activated (pressed and released).
var clicked: (() -> Void)? var clicked: (() -> Void)?
@ -190,10 +158,10 @@ public struct SplitButton: AdwaitaWidget {
/// Whether the button can be smaller than the natural size of its contents. /// Whether the button can be smaller than the natural size of its contents.
/// ///
/// If set to `TRUE`, the label will ellipsize. /// If set to `true`, the label will ellipsize.
/// ///
/// See [property@Gtk.Button:can-shrink] and /// See ``canShrink(_:)`` and
/// [property@Gtk.MenuButton:can-shrink]. /// ``canShrink(_:)``.
public func canShrink(_ canShrink: Bool? = true) -> Self { public func canShrink(_ canShrink: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.canShrink = canShrink newSelf.canShrink = canShrink
@ -202,8 +170,8 @@ public struct SplitButton: AdwaitaWidget {
/// The child widget. /// The child widget.
/// ///
/// Setting the child widget will set [property@SplitButton:label] and /// Setting the child widget will set ``label(_:)`` and
/// [property@SplitButton:icon-name] to `NULL`. /// ``iconName(_:)`` to `NULL`.
public func child(@ViewBuilder _ child: @escaping (() -> Body)) -> Self { public func child(@ViewBuilder _ child: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.child = child newSelf.child = child
@ -221,8 +189,8 @@ public struct SplitButton: AdwaitaWidget {
/// The name of the icon used to automatically populate the button. /// The name of the icon used to automatically populate the button.
/// ///
/// Setting the icon name will set [property@SplitButton:label] and /// Setting the icon name will set ``label(_:)`` and
/// [property@SplitButton:child] to `NULL`. /// ``child(_:)`` to `NULL`.
public func iconName(_ iconName: String?) -> Self { public func iconName(_ iconName: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.iconName = iconName newSelf.iconName = iconName
@ -231,8 +199,8 @@ public struct SplitButton: AdwaitaWidget {
/// The label for the button. /// The label for the button.
/// ///
/// Setting the label will set [property@SplitButton:icon-name] and /// Setting the label will set ``iconName(_:)`` and
/// [property@SplitButton:child] to `NULL`. /// ``child(_:)`` to `NULL`.
public func label(_ label: String?) -> Self { public func label(_ label: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.label = label newSelf.label = label
@ -243,11 +211,11 @@ public struct SplitButton: AdwaitaWidget {
/// ///
/// If the menu model is `NULL`, the dropdown is disabled. /// If the menu model is `NULL`, the dropdown is disabled.
/// ///
/// A [class@Gtk.Popover] will be created from the menu model with /// A `Gtk.Popover` will be created from the menu model with
/// [ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as /// `Gtk.PopoverMenu.new_from_model`. Actions will be connected as
/// documented for this function. /// documented for this function.
/// ///
/// If [property@SplitButton:popover] is already set, it will be dissociated /// If ``popover(_:)`` is already set, it will be dissociated
/// from the button, and the property is set to `NULL`. /// from the button, and the property is set to `NULL`.
public func menuModel(@ViewBuilder _ menuModel: @escaping (() -> Body)) -> Self { public func menuModel(@ViewBuilder _ menuModel: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
@ -257,7 +225,7 @@ public struct SplitButton: AdwaitaWidget {
/// Whether an underline in the text indicates a mnemonic. /// Whether an underline in the text indicates a mnemonic.
/// ///
/// See [property@SplitButton:label]. /// See ``label(_:)``.
public func useUnderline(_ useUnderline: Bool? = true) -> Self { public func useUnderline(_ useUnderline: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useUnderline = useUnderline newSelf.useUnderline = useUnderline
@ -267,7 +235,7 @@ public struct SplitButton: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect to this signal, /// This is an action signal. Applications should never connect to this signal,
/// but use the [signal@SplitButton::clicked] signal. /// but use the `SplitButton::clicked` signal.
public func activate(_ activate: @escaping () -> Void) -> Self { public func activate(_ activate: @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.activate = activate newSelf.activate = activate

View File

@ -2,7 +2,7 @@
// StatusPage.swift // StatusPage.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,27 +10,12 @@ import LevenshteinTransformations
/// A page used for empty/error states and similar use-cases. /// A page used for empty/error states and similar use-cases.
/// ///
/// <picture><source srcset="status-page-dark.png" media="(prefers-color-scheme: dark)"><img src="status-page.png" alt="status-page"></picture> ///
/// ///
/// The `AdwStatusPage` widget can have an icon, a title, a description and a /// The `AdwStatusPage` widget can have an icon, a title, a description and a
/// custom widget which is displayed below them. /// custom widget which is displayed below them.
/// ///
/// ## CSS nodes
/// ///
/// `AdwStatusPage` has a main CSS node with name `statuspage`.
///
/// When setting an [class@SpinnerPaintable] as [property@StatusPage:paintable],
/// the main nodes gains the `.spinner` style class for a more compact
/// appearance.
///
/// ## Style classes
///
/// `AdwStatusPage` can use the
/// [`.compact`](style-classes.html#compact-status-page) style class for when it
/// needs to fit into a small space such a sidebar or a popover, similar to when
/// using a spinner as the paintable.
///
/// <picture><source srcset="status-page-compact-dark.png" media="(prefers-color-scheme: dark)"><img src="status-page-compact.png" alt="status-page-compact"></picture>
public struct StatusPage: AdwaitaWidget { public struct StatusPage: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -44,7 +29,7 @@ public struct StatusPage: AdwaitaWidget {
var description: String? var description: String?
/// The name of the icon to be used. /// The name of the icon to be used.
/// ///
/// Changing this will set [property@StatusPage:paintable] to `NULL`. /// Changing this will set ``paintable(_:)`` to `NULL`.
var iconName: String? var iconName: String?
/// The title to be displayed below the icon. /// The title to be displayed below the icon.
/// ///
@ -123,7 +108,7 @@ public struct StatusPage: AdwaitaWidget {
/// The name of the icon to be used. /// The name of the icon to be used.
/// ///
/// Changing this will set [property@StatusPage:paintable] to `NULL`. /// Changing this will set ``paintable(_:)`` to `NULL`.
public func iconName(_ iconName: String?) -> Self { public func iconName(_ iconName: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.iconName = iconName newSelf.iconName = iconName

View File

@ -2,36 +2,34 @@
// SwitchRow.swift // SwitchRow.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
/// A [class@Gtk.ListBoxRow] used to represent two states. /// A `Gtk.ListBoxRow` used to represent two states.
/// ///
/// <picture><source srcset="switch-row-dark.png" media="(prefers-color-scheme: dark)"><img src="switch-row.png" alt="switch-row"></picture>
/// ///
/// The `AdwSwitchRow` widget contains a [class@Gtk.Switch] that allows the user ///
/// The `AdwSwitchRow` widget contains a `Gtk.Switch` that allows the user
/// to select between two states: "on" or "off". When activated, the row will /// to select between two states: "on" or "off". When activated, the row will
/// invert its active state. /// invert its active state.
/// ///
/// The user can control the switch by activating the row or by dragging on the /// The user can control the switch by activating the row or by dragging on the
/// switch handle. /// switch handle.
/// ///
/// See [class@Gtk.Switch] for details. /// See `Gtk.Switch` for details.
/// ///
/// Example of an `AdwSwitchRow` UI definition: /// Example of an `AdwSwitchRow` UI definition:
/// ```xml /// ```xml
/// <object class="AdwSwitchRow"><property name="title" translatable="yes">Switch Row</property><signal name="notify::active" handler="switch_row_notify_active_cb"/></object> /// <object class="AdwSwitchRow"><property name="title" translatable="yes">Switch Row</property><signal name="notify::active" handler="switch_row_notify_active_cb"/></object>
/// ``` /// ```
/// ///
/// The [property@SwitchRow:active] property should be connected to in order to /// The ``active(_:)`` property should be connected to in order to
/// monitor changes to the active state. /// monitor changes to the active state.
/// ///
/// ## Accessibility
/// ///
/// `AdwSwitchRow` uses the `GTK_ACCESSIBLE_ROLE_SWITCH` role.
public struct SwitchRow: AdwaitaWidget { public struct SwitchRow: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -42,19 +40,19 @@ public struct SwitchRow: AdwaitaWidget {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
var activatableWidget: (() -> Body)? var activatableWidget: (() -> Body)?
/// Whether the switch row is in the "on" or "off" position. /// Whether the switch row is in the "on" or "off" position.
var active: Binding<Bool>? var active: Binding<Bool>?
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var subtitle: String? var subtitle: String?
/// The number of lines at the end of which the subtitle label will be /// The number of lines at the end of which the subtitle label will be
/// ellipsized. /// ellipsized.
@ -63,12 +61,12 @@ public struct SwitchRow: AdwaitaWidget {
var subtitleLines: Int? var subtitleLines: Int?
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var subtitleSelectable: Bool? var subtitleSelectable: Bool?
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
var title: String? var title: String?
/// The number of lines at the end of which the title label will be ellipsized. /// The number of lines at the end of which the title label will be ellipsized.
/// ///
@ -76,13 +74,13 @@ public struct SwitchRow: AdwaitaWidget {
var titleLines: Int? var titleLines: Int?
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
var titleSelectable: Bool? var titleSelectable: Bool?
/// Whether to use Pango markup for the title label. /// Whether to use Pango markup for the title label.
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
var useMarkup: Bool? var useMarkup: Bool?
/// Whether an embedded underline in the title indicates a mnemonic. /// Whether an embedded underline in the title indicates a mnemonic.
var useUnderline: Bool? var useUnderline: Bool?
@ -193,12 +191,12 @@ if let active, newValue != active.wrappedValue {
/// The widget to activate when the row is activated. /// The widget to activate when the row is activated.
/// ///
/// The row can be activated either by clicking on it, calling /// The row can be activated either by clicking on it, calling
/// [method@ActionRow.activate], or via mnemonics in the title. /// `ActionRow.activate`, or via mnemonics in the title.
/// See the [property@PreferencesRow:use-underline] property to enable /// See the ``useUnderline(_:)`` property to enable
/// mnemonics. /// mnemonics.
/// ///
/// The target widget will be activated by emitting the /// The target widget will be activated by emitting the
/// [signal@Gtk.Widget::mnemonic-activate] signal on it. /// `Gtk.Widget::mnemonic-activate` signal on it.
public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self { public func activatableWidget(@ViewBuilder _ activatableWidget: @escaping (() -> Body)) -> Self {
var newSelf = self var newSelf = self
newSelf.activatableWidget = activatableWidget newSelf.activatableWidget = activatableWidget
@ -215,7 +213,7 @@ if let active, newValue != active.wrappedValue {
/// The subtitle for this row. /// The subtitle for this row.
/// ///
/// The subtitle is interpreted as Pango markup unless /// The subtitle is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func subtitle(_ subtitle: String?) -> Self { public func subtitle(_ subtitle: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitle = subtitle newSelf.subtitle = subtitle
@ -234,7 +232,7 @@ if let active, newValue != active.wrappedValue {
/// Whether the user can copy the subtitle from the label. /// Whether the user can copy the subtitle from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self { public func subtitleSelectable(_ subtitleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.subtitleSelectable = subtitleSelectable newSelf.subtitleSelectable = subtitleSelectable
@ -244,7 +242,7 @@ if let active, newValue != active.wrappedValue {
/// The title of the preference represented by this row. /// The title of the preference represented by this row.
/// ///
/// The title is interpreted as Pango markup unless /// The title is interpreted as Pango markup unless
/// [property@PreferencesRow:use-markup] is set to `FALSE`. /// ``useMarkup(_:)`` is set to `false`.
public func title(_ title: String?) -> Self { public func title(_ title: String?) -> Self {
var newSelf = self var newSelf = self
newSelf.title = title newSelf.title = title
@ -262,7 +260,7 @@ if let active, newValue != active.wrappedValue {
/// Whether the user can copy the title from the label. /// Whether the user can copy the title from the label.
/// ///
/// See also [property@Gtk.Label:selectable]. /// See also ``selectable(_:)``.
public func titleSelectable(_ titleSelectable: Bool? = true) -> Self { public func titleSelectable(_ titleSelectable: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.titleSelectable = titleSelectable newSelf.titleSelectable = titleSelectable
@ -273,7 +271,7 @@ if let active, newValue != active.wrappedValue {
/// ///
/// Subclasses may also use it for other labels, such as subtitle. /// Subclasses may also use it for other labels, such as subtitle.
/// ///
/// See also [func@Pango.parse_markup]. /// See also `Pango.parse_markup`.
public func useMarkup(_ useMarkup: Bool? = true) -> Self { public func useMarkup(_ useMarkup: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.useMarkup = useMarkup newSelf.useMarkup = useMarkup

View File

@ -2,7 +2,7 @@
// ToastOverlay.swift // ToastOverlay.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,43 +10,18 @@ import LevenshteinTransformations
/// A widget showing toasts above its content. /// A widget showing toasts above its content.
/// ///
/// <picture><source srcset="toast-overlay-dark.png" media="(prefers-color-scheme: dark)"><img src="toast-overlay.png" alt="toast-overlay"></picture>
/// ///
/// Much like [class@Gtk.Overlay], `AdwToastOverlay` is a container with a single
/// main child, on top of which it can display a [class@Toast], overlaid.
/// Toasts can be shown with [method@ToastOverlay.add_toast].
/// ///
/// Use [method@ToastOverlay.dismiss_all] to dismiss all toasts at once, or /// Much like `Gtk.Overlay`, `AdwToastOverlay` is a container with a single
/// [method@Toast.dismiss] to dismiss a single toast. /// main child, on top of which it can display a `Toast`, overlaid.
/// Toasts can be shown with `ToastOverlay.add_toast`.
/// ///
/// See [class@Toast] for details. /// Use `ToastOverlay.dismiss_all` to dismiss all toasts at once, or
/// `Toast.dismiss` to dismiss a single toast.
/// ///
/// ## CSS nodes /// See `Toast` for details.
/// ///
/// ```
/// toastoverlay
/// [child]
/// toast
/// widget
/// [label.heading]
/// [custom title]
/// [button]
/// button.circular.flat
/// ```
/// ///
/// `AdwToastOverlay`'s CSS node is called `toastoverlay`. It contains the child,
/// as well as zero or more `toast` subnodes.
///
/// Each of the `toast` nodes contains a `widget` subnode, optionally a `button`
/// subnode, and another `button` subnode with `.circular` and `.flat` style
/// classes.
///
/// The `widget` subnode contains a `label` subnode with the `.heading` style
/// class, or a custom widget provided by the application.
///
/// ## Accessibility
///
/// `AdwToastOverlay` uses the [enum@Gtk.AccessibleRole.GROUP] role.
public struct ToastOverlay: AdwaitaWidget { public struct ToastOverlay: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -2,7 +2,7 @@
// ToggleButton.swift // ToggleButton.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,77 +10,20 @@ import LevenshteinTransformations
/// Shows a button which remains pressed-in when clicked. /// Shows a button which remains pressed-in when clicked.
/// ///
/// <picture><source srcset="toggle-button-dark.png" media="(prefers-color-scheme: dark)"><img alt="Example GtkToggleButtons" src="toggle-button.png"></picture> ///
/// ///
/// Clicking again will cause the toggle button to return to its normal state. /// Clicking again will cause the toggle button to return to its normal state.
/// ///
/// A toggle button is created by calling either [ctor@Gtk.ToggleButton.new] or /// A toggle button is created by calling either `Gtk.ToggleButton.new` or
/// [ctor@Gtk.ToggleButton.new_with_label]. If using the former, it is advisable /// `Gtk.ToggleButton.new_with_label`. If using the former, it is advisable
/// to pack a widget, (such as a `GtkLabel` and/or a `GtkImage`), into the toggle /// to pack a widget, (such as a `GtkLabel` and/or a `GtkImage`), into the toggle
/// buttons container. (See [class@Gtk.Button] for more information). /// buttons container. (See `Gtk.Button` for more information).
/// ///
/// The state of a `GtkToggleButton` can be set specifically using /// The state of a `GtkToggleButton` can be set specifically using
/// [method@Gtk.ToggleButton.set_active], and retrieved using /// `Gtk.ToggleButton.set_active`, and retrieved using
/// [method@Gtk.ToggleButton.get_active]. /// `Gtk.ToggleButton.get_active`.
/// ///
/// ## Grouping
/// ///
/// Toggle buttons can be grouped together, to form mutually exclusive
/// groups - only one of the buttons can be toggled at a time, and toggling
/// another one will switch the currently toggled one off.
///
/// To add a `GtkToggleButton` to a group, use [method@Gtk.ToggleButton.set_group].
///
/// ## CSS nodes
///
/// `GtkToggleButton` has a single CSS node with name button. To differentiate
/// it from a plain `GtkButton`, it gets the `.toggle` style class.
///
/// ## Accessibility
///
/// `GtkToggleButton` uses the [enum@Gtk.AccessibleRole.toggle_button] role.
///
/// ## Creating two `GtkToggleButton` widgets.
///
/// ```c
/// static void
/// output_state (GtkToggleButton *source,
/// gpointer user_data)
/// {
/// g_print ("Toggle button "%s" is active: %s",
/// gtk_button_get_label (GTK_BUTTON (source)),
/// gtk_toggle_button_get_active (source) ? "Yes" : "No");
/// }
///
/// static void
/// make_toggles (void)
/// {
/// GtkWidget *window, *toggle1, *toggle2;
/// GtkWidget *box;
/// const char *text;
///
/// window = gtk_window_new ();
/// box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
///
/// text = "Hi, Im toggle button one";
/// toggle1 = gtk_toggle_button_new_with_label (text);
///
/// g_signal_connect (toggle1, "toggled",
/// G_CALLBACK (output_state),
/// NULL);
/// gtk_box_append (GTK_BOX (box), toggle1);
///
/// text = "Hi, Im toggle button two";
/// toggle2 = gtk_toggle_button_new_with_label (text);
/// g_signal_connect (toggle2, "toggled",
/// G_CALLBACK (output_state),
/// NULL);
/// gtk_box_append (GTK_BOX (box), toggle2);
///
/// gtk_window_set_child (GTK_WINDOW (window), box);
/// gtk_window_present (GTK_WINDOW (window));
/// }
/// ```
public struct ToggleButton: AdwaitaWidget { public struct ToggleButton: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -118,7 +61,7 @@ public struct ToggleButton: AdwaitaWidget {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.
@ -292,7 +235,7 @@ if let active, newValue != active.wrappedValue {
/// Emitted to animate press then release. /// Emitted to animate press then release.
/// ///
/// This is an action signal. Applications should never connect /// This is an action signal. Applications should never connect
/// to this signal, but use the [signal@Gtk.Button::clicked] signal. /// to this signal, but use the `Gtk.Button::clicked` signal.
/// ///
/// The default bindings for this signal are all forms of the /// The default bindings for this signal are all forms of the
/// <kbd></kbd> and <kbd>Enter</kbd> keys. /// <kbd></kbd> and <kbd>Enter</kbd> keys.

View File

@ -2,7 +2,7 @@
// ToolbarView.swift // ToolbarView.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,7 +10,7 @@ import LevenshteinTransformations
/// A widget containing a page, as well as top and/or bottom bars. /// A widget containing a page, as well as top and/or bottom bars.
/// ///
/// <picture><source srcset="toolbar-view-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view.png" alt="toolbar-view"></picture> ///
/// ///
/// `AdwToolbarView` has a single content widget and one or multiple top and /// `AdwToolbarView` has a single content widget and one or multiple top and
/// bottom bars, shown at the top and bottom sides respectively. /// bottom bars, shown at the top and bottom sides respectively.
@ -22,60 +22,15 @@ import LevenshteinTransformations
/// ///
/// The following kinds of top and bottom bars are supported: /// The following kinds of top and bottom bars are supported:
/// ///
/// - [class@HeaderBar] /// - `HeaderBar`
/// - [class@TabBar] /// - `TabBar`
/// - [class@ViewSwitcherBar] /// - `ViewSwitcherBar`
/// - [class@Gtk.ActionBar] /// - `Gtk.ActionBar`
/// - [class@Gtk.HeaderBar] /// - `Gtk.HeaderBar`
/// - [class@Gtk.PopoverMenuBar] /// - `Gtk.PopoverMenuBar`
/// - [class@Gtk.SearchBar] /// - `Gtk.SearchBar`
/// - Any [class@Gtk.Box] or a similar widget with the /// - Any `Gtk.Box` or a similar widget with the
/// [`.toolbar`](style-classes.html#toolbars) style class /// [`.toolbar`](style-classes.html
///
/// By default, top and bottom bars are flat and scrolling content has a subtle
/// undershoot shadow, same as when using the
/// [`.undershoot-top`](style-classes.html#undershoot-indicators) and
/// [`.undershoot-bottom`](style-classes.html#undershoot-indicators) style
/// classes. This works well in most cases, e.g. with [class@StatusPage] or
/// [class@PreferencesPage], where the background at the top and bottom parts of
/// the page is uniform. Additionally, windows with sidebars should always use
/// this style.
///
/// [property@ToolbarView:top-bar-style] and
/// [property@ToolbarView:bottom-bar-style] properties can be used add an opaque
/// background and a persistent shadow to top and bottom bars, this can be useful
/// for content such as [utility panes](https://developer.gnome.org/hig/patterns/containers/utility-panes.html),
/// where some elements are adjacent to the top/bottom bars, or [class@TabView],
/// where each page can have a different background.
///
/// <picture style="min-width: 33%; display: inline-block;"><source srcset="toolbar-view-flat-1-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view-flat-1.png" alt="toolbar-view-flat-1"></picture><picture style="min-width: 33%; display: inline-block;"><source srcset="toolbar-view-flat-2-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view-flat-2.png" alt="toolbar-view-flat-2"></picture><picture style="min-width: 33%; display: inline-block;"><source srcset="toolbar-view-raised-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view-raised.png" alt="toolbar-view-raised"></picture>
///
/// `AdwToolbarView` ensures the top and bottom bars have consistent backdrop
/// styles and vertical spacing. For comparison:
///
/// <picture style="min-width: 40%; display: inline-block;"><source srcset="toolbar-view-spacing-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view-spacing.png" alt="toolbar-view-spacing"></picture><picture style="min-width: 40%; display: inline-block;"><source srcset="toolbar-view-spacing-box-dark.png" media="(prefers-color-scheme: dark)"><img src="toolbar-view-spacing-box.png" alt="toolbar-view-spacing-box"></picture>
///
/// Any top and bottom bars can also be dragged to move the window, equivalent
/// to putting them into a [class@Gtk.WindowHandle].
///
/// Content is typically place between top and bottom bars, but can also extend
/// behind them. This is controlled with the
/// [property@ToolbarView:extend-content-to-top-edge] and
/// [property@ToolbarView:extend-content-to-bottom-edge] properties.
///
/// Top and bottom bars can be hidden and revealed with an animation using the
/// [property@ToolbarView:reveal-top-bars] and
/// [property@ToolbarView:reveal-bottom-bars] properties.
///
/// ## `AdwToolbarView` as `GtkBuildable`
///
/// The `AdwToolbarView` implementation of the [iface@Gtk.Buildable] interface
/// supports adding a top bar by specifying top as the type attribute of a
/// `<child>` element, or adding a bottom bar by specifying bottom.
///
/// ## Accessibility
///
/// `AdwToolbarView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
public struct ToolbarView: AdwaitaWidget { public struct ToolbarView: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.
@ -86,103 +41,65 @@ public struct ToolbarView: AdwaitaWidget {
/// The current bottom bar height. /// The current bottom bar height.
/// ///
/// Bottom bar height does change depending on /// Bottom bar height does change depending on
/// [property@ToolbarView:reveal-bottom-bars], including during the transition. /// ``revealBottomBars(_:)``, including during the transition.
/// ///
/// See [property@ToolbarView:top-bar-height]. /// See ``topBarHeight(_:)``.
var bottomBarHeight: Int? var bottomBarHeight: Int?
/// Appearance of the bottom bars. /// Appearance of the bottom bars.
/// ///
/// If set to `ADW_TOOLBAR_FLAT`, bottom bars are flat and scrolling content /// If set to `ADW_TOOLBAR_FLAT`, bottom bars are flat and scrolling content
/// has a subtle undershoot shadow when touching them, same as the /// has a subtle undershoot shadow when touching them, same as the
/// [`.undershoot-bottom`](style-classes.html#undershoot-indicators) /// [`.undershoot-bottom`](style-classes.html
/// style class. This works well for simple content, e.g. [class@StatusPage] or
/// [class@PreferencesPage], where the background at the bottom of the page is
/// uniform. Additionally, windows with sidebars should always use this style.
///
/// Undershoot shadow is only present if a bottom bar is actually present and
/// visible. It is also never present if
/// [property@ToolbarView:extend-content-to-bottom-edge] is set to `TRUE`.
///
/// If set to `ADW_TOOLBAR_RAISED`, bottom bars have an opaque background and a
/// persistent shadow, this is suitable for content such as
/// [utility panes](https://developer.gnome.org/hig/patterns/containers/utility-panes.html),
/// where some elements are directly adjacent to the bottom bars, or
/// [class@TabView], where each page can have a different background.
///
/// `ADW_TOOLBAR_RAISED_BORDER` is similar to `ADW_TOOLBAR_RAISED`, but the
/// shadow is replaced with a more subtle border. This can be useful for
/// applications like image viewers.
///
/// See also [property@ToolbarView:top-bar-style].
var bottomBarStyle: ToolbarStyle? var bottomBarStyle: ToolbarStyle?
/// The content widget. /// The content widget.
var content: (() -> Body)? var content: (() -> Body)?
/// Whether the content widget can extend behind bottom bars. /// Whether the content widget can extend behind bottom bars.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:reveal-bottom-bars] to show and hide toolbars in /// ``revealBottomBars(_:)`` to show and hide toolbars in
/// fullscreen. /// fullscreen.
/// ///
/// See [property@ToolbarView:extend-content-to-top-edge]. /// See ``extendContentToTopEdge(_:)``.
var extendContentToBottomEdge: Bool? var extendContentToBottomEdge: Bool?
/// Whether the content widget can extend behind top bars. /// Whether the content widget can extend behind top bars.
/// ///
/// This can be used in combination with [property@ToolbarView:reveal-top-bars] /// This can be used in combination with ``revealTopBars(_:)``
/// to show and hide toolbars in fullscreen. /// to show and hide toolbars in fullscreen.
/// ///
/// See [property@ToolbarView:extend-content-to-bottom-edge]. /// See ``extendContentToBottomEdge(_:)``.
var extendContentToTopEdge: Bool? var extendContentToTopEdge: Bool?
/// Whether bottom bars are visible. /// Whether bottom bars are visible.
/// ///
/// The transition will be animated. /// The transition will be animated.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:extend-content-to-bottom-edge] to show and hide /// ``extendContentToBottomEdge(_:)`` to show and hide
/// toolbars in fullscreen. /// toolbars in fullscreen.
/// ///
/// See [property@ToolbarView:reveal-top-bars]. /// See ``revealTopBars(_:)``.
var revealBottomBars: Bool? var revealBottomBars: Bool?
/// Whether top bars are revealed. /// Whether top bars are revealed.
/// ///
/// The transition will be animated. /// The transition will be animated.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:extend-content-to-top-edge] to show and hide toolbars /// ``extendContentToTopEdge(_:)`` to show and hide toolbars
/// in fullscreen. /// in fullscreen.
/// ///
/// See [property@ToolbarView:reveal-bottom-bars]. /// See ``revealBottomBars(_:)``.
var revealTopBars: Bool? var revealTopBars: Bool?
/// The current top bar height. /// The current top bar height.
/// ///
/// Top bar height does change depending [property@ToolbarView:reveal-top-bars], /// Top bar height does change depending ``revealTopBars(_:)``,
/// including during the transition. /// including during the transition.
/// ///
/// See [property@ToolbarView:bottom-bar-height]. /// See ``bottomBarHeight(_:)``.
var topBarHeight: Int? var topBarHeight: Int?
/// Appearance of the top bars. /// Appearance of the top bars.
/// ///
/// If set to `ADW_TOOLBAR_FLAT`, top bars are flat and scrolling content has a /// If set to `ADW_TOOLBAR_FLAT`, top bars are flat and scrolling content has a
/// subtle undershoot shadow when touching them, same as the /// subtle undershoot shadow when touching them, same as the
/// [`.undershoot-top`](style-classes.html#undershoot-indicators) /// [`.undershoot-top`](style-classes.html
/// style class. This works well for simple content, e.g. [class@StatusPage] or
/// [class@PreferencesPage], where the background at the top of the page is
/// uniform. Additionally, windows with sidebars should always use this style.
///
/// Undershoot shadow is only present if a top bar is actually present and
/// visible. It is also never present if
/// [property@ToolbarView:extend-content-to-top-edge] is set to `TRUE`.
///
/// If set to `ADW_TOOLBAR_RAISED`, top bars have an opaque background and a
/// persistent shadow, this is suitable for content such as
/// [utility panes](https://developer.gnome.org/hig/patterns/containers/utility-panes.html),
/// where some elements are directly adjacent to the top bars, or
/// [class@TabView], where each page can have a different background.
///
/// `ADW_TOOLBAR_RAISED_BORDER` is similar to `ADW_TOOLBAR_RAISED`, but the
/// shadow is replaced with a more subtle border. This can be useful for
/// applications like image viewers.
///
/// See also [property@ToolbarView:bottom-bar-style].
var topBarStyle: ToolbarStyle? var topBarStyle: ToolbarStyle?
/// The body for the widget "bottom". /// The body for the widget "bottom".
var bottom: () -> Body = { [] } var bottom: () -> Body = { [] }
@ -293,9 +210,9 @@ public struct ToolbarView: AdwaitaWidget {
/// The current bottom bar height. /// The current bottom bar height.
/// ///
/// Bottom bar height does change depending on /// Bottom bar height does change depending on
/// [property@ToolbarView:reveal-bottom-bars], including during the transition. /// ``revealBottomBars(_:)``, including during the transition.
/// ///
/// See [property@ToolbarView:top-bar-height]. /// See ``topBarHeight(_:)``.
public func bottomBarHeight(_ bottomBarHeight: Int?) -> Self { public func bottomBarHeight(_ bottomBarHeight: Int?) -> Self {
var newSelf = self var newSelf = self
newSelf.bottomBarHeight = bottomBarHeight newSelf.bottomBarHeight = bottomBarHeight
@ -306,26 +223,7 @@ public struct ToolbarView: AdwaitaWidget {
/// ///
/// If set to `ADW_TOOLBAR_FLAT`, bottom bars are flat and scrolling content /// If set to `ADW_TOOLBAR_FLAT`, bottom bars are flat and scrolling content
/// has a subtle undershoot shadow when touching them, same as the /// has a subtle undershoot shadow when touching them, same as the
/// [`.undershoot-bottom`](style-classes.html#undershoot-indicators) /// [`.undershoot-bottom`](style-classes.html
/// style class. This works well for simple content, e.g. [class@StatusPage] or
/// [class@PreferencesPage], where the background at the bottom of the page is
/// uniform. Additionally, windows with sidebars should always use this style.
///
/// Undershoot shadow is only present if a bottom bar is actually present and
/// visible. It is also never present if
/// [property@ToolbarView:extend-content-to-bottom-edge] is set to `TRUE`.
///
/// If set to `ADW_TOOLBAR_RAISED`, bottom bars have an opaque background and a
/// persistent shadow, this is suitable for content such as
/// [utility panes](https://developer.gnome.org/hig/patterns/containers/utility-panes.html),
/// where some elements are directly adjacent to the bottom bars, or
/// [class@TabView], where each page can have a different background.
///
/// `ADW_TOOLBAR_RAISED_BORDER` is similar to `ADW_TOOLBAR_RAISED`, but the
/// shadow is replaced with a more subtle border. This can be useful for
/// applications like image viewers.
///
/// See also [property@ToolbarView:top-bar-style].
public func bottomBarStyle(_ bottomBarStyle: ToolbarStyle?) -> Self { public func bottomBarStyle(_ bottomBarStyle: ToolbarStyle?) -> Self {
var newSelf = self var newSelf = self
newSelf.bottomBarStyle = bottomBarStyle newSelf.bottomBarStyle = bottomBarStyle
@ -342,10 +240,10 @@ public struct ToolbarView: AdwaitaWidget {
/// Whether the content widget can extend behind bottom bars. /// Whether the content widget can extend behind bottom bars.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:reveal-bottom-bars] to show and hide toolbars in /// ``revealBottomBars(_:)`` to show and hide toolbars in
/// fullscreen. /// fullscreen.
/// ///
/// See [property@ToolbarView:extend-content-to-top-edge]. /// See ``extendContentToTopEdge(_:)``.
public func extendContentToBottomEdge(_ extendContentToBottomEdge: Bool? = true) -> Self { public func extendContentToBottomEdge(_ extendContentToBottomEdge: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.extendContentToBottomEdge = extendContentToBottomEdge newSelf.extendContentToBottomEdge = extendContentToBottomEdge
@ -354,10 +252,10 @@ public struct ToolbarView: AdwaitaWidget {
/// Whether the content widget can extend behind top bars. /// Whether the content widget can extend behind top bars.
/// ///
/// This can be used in combination with [property@ToolbarView:reveal-top-bars] /// This can be used in combination with ``revealTopBars(_:)``
/// to show and hide toolbars in fullscreen. /// to show and hide toolbars in fullscreen.
/// ///
/// See [property@ToolbarView:extend-content-to-bottom-edge]. /// See ``extendContentToBottomEdge(_:)``.
public func extendContentToTopEdge(_ extendContentToTopEdge: Bool? = true) -> Self { public func extendContentToTopEdge(_ extendContentToTopEdge: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.extendContentToTopEdge = extendContentToTopEdge newSelf.extendContentToTopEdge = extendContentToTopEdge
@ -369,10 +267,10 @@ public struct ToolbarView: AdwaitaWidget {
/// The transition will be animated. /// The transition will be animated.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:extend-content-to-bottom-edge] to show and hide /// ``extendContentToBottomEdge(_:)`` to show and hide
/// toolbars in fullscreen. /// toolbars in fullscreen.
/// ///
/// See [property@ToolbarView:reveal-top-bars]. /// See ``revealTopBars(_:)``.
public func revealBottomBars(_ revealBottomBars: Bool? = true) -> Self { public func revealBottomBars(_ revealBottomBars: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.revealBottomBars = revealBottomBars newSelf.revealBottomBars = revealBottomBars
@ -384,10 +282,10 @@ public struct ToolbarView: AdwaitaWidget {
/// The transition will be animated. /// The transition will be animated.
/// ///
/// This can be used in combination with /// This can be used in combination with
/// [property@ToolbarView:extend-content-to-top-edge] to show and hide toolbars /// ``extendContentToTopEdge(_:)`` to show and hide toolbars
/// in fullscreen. /// in fullscreen.
/// ///
/// See [property@ToolbarView:reveal-bottom-bars]. /// See ``revealBottomBars(_:)``.
public func revealTopBars(_ revealTopBars: Bool? = true) -> Self { public func revealTopBars(_ revealTopBars: Bool? = true) -> Self {
var newSelf = self var newSelf = self
newSelf.revealTopBars = revealTopBars newSelf.revealTopBars = revealTopBars
@ -396,10 +294,10 @@ public struct ToolbarView: AdwaitaWidget {
/// The current top bar height. /// The current top bar height.
/// ///
/// Top bar height does change depending [property@ToolbarView:reveal-top-bars], /// Top bar height does change depending ``revealTopBars(_:)``,
/// including during the transition. /// including during the transition.
/// ///
/// See [property@ToolbarView:bottom-bar-height]. /// See ``bottomBarHeight(_:)``.
public func topBarHeight(_ topBarHeight: Int?) -> Self { public func topBarHeight(_ topBarHeight: Int?) -> Self {
var newSelf = self var newSelf = self
newSelf.topBarHeight = topBarHeight newSelf.topBarHeight = topBarHeight
@ -410,26 +308,7 @@ public struct ToolbarView: AdwaitaWidget {
/// ///
/// If set to `ADW_TOOLBAR_FLAT`, top bars are flat and scrolling content has a /// If set to `ADW_TOOLBAR_FLAT`, top bars are flat and scrolling content has a
/// subtle undershoot shadow when touching them, same as the /// subtle undershoot shadow when touching them, same as the
/// [`.undershoot-top`](style-classes.html#undershoot-indicators) /// [`.undershoot-top`](style-classes.html
/// style class. This works well for simple content, e.g. [class@StatusPage] or
/// [class@PreferencesPage], where the background at the top of the page is
/// uniform. Additionally, windows with sidebars should always use this style.
///
/// Undershoot shadow is only present if a top bar is actually present and
/// visible. It is also never present if
/// [property@ToolbarView:extend-content-to-top-edge] is set to `TRUE`.
///
/// If set to `ADW_TOOLBAR_RAISED`, top bars have an opaque background and a
/// persistent shadow, this is suitable for content such as
/// [utility panes](https://developer.gnome.org/hig/patterns/containers/utility-panes.html),
/// where some elements are directly adjacent to the top bars, or
/// [class@TabView], where each page can have a different background.
///
/// `ADW_TOOLBAR_RAISED_BORDER` is similar to `ADW_TOOLBAR_RAISED`, but the
/// shadow is replaced with a more subtle border. This can be useful for
/// applications like image viewers.
///
/// See also [property@ToolbarView:bottom-bar-style].
public func topBarStyle(_ topBarStyle: ToolbarStyle?) -> Self { public func topBarStyle(_ topBarStyle: ToolbarStyle?) -> Self {
var newSelf = self var newSelf = self
newSelf.topBarStyle = topBarStyle newSelf.topBarStyle = topBarStyle

View File

@ -2,7 +2,7 @@
// WindowTitle.swift // WindowTitle.swift
// Adwaita // Adwaita
// //
// Created by auto-generation on 23.10.25. // Created by auto-generation on 30.10.25.
// //
import CAdw import CAdw
@ -10,14 +10,12 @@ import LevenshteinTransformations
/// A helper widget for setting a window's title and subtitle. /// A helper widget for setting a window's title and subtitle.
/// ///
/// <picture><source srcset="window-title-dark.png" media="(prefers-color-scheme: dark)"><img src="window-title.png" alt="window-title"></picture> ///
/// ///
/// `AdwWindowTitle` shows a title and subtitle. It's intended to be used as the /// `AdwWindowTitle` shows a title and subtitle. It's intended to be used as the
/// title child of [class@Gtk.HeaderBar] or [class@HeaderBar]. /// title child of `Gtk.HeaderBar` or `HeaderBar`.
/// ///
/// ## CSS nodes
/// ///
/// `AdwWindowTitle` has a single CSS node with name `windowtitle`.
public struct WindowTitle: AdwaitaWidget { public struct WindowTitle: AdwaitaWidget {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -30,10 +30,13 @@ extension String: @retroactive CodingKey {
} }
/// Generate a doc comment out of the string. /// Generate a doc comment out of the string.
/// - Parameter indent: Indentation added at the beginning of every line. /// - Parameters:
/// - configuration: The generation configuration.
/// - indent: Indentation added at the beginning of every line.
/// - Returns: The comment. /// - Returns: The comment.
func docComment(indent: String = "") -> String { func docComment(configuration: GenerationConfiguration, indent: String = "") -> String {
split(separator: "\n", omittingEmptySubsequences: false) applyDocRegex(configuration: configuration)
.split(separator: "\n", omittingEmptySubsequences: false)
.map { $0.trimmingCharacters(in: .whitespaces) } .map { $0.trimmingCharacters(in: .whitespaces) }
.enumerated() .enumerated()
.map { $0.offset == 0 ? $0.element.prefix(1).capitalized + $0.element.dropFirst() : $0.element } .map { $0.offset == 0 ? $0.element.prefix(1).capitalized + $0.element.dropFirst() : $0.element }
@ -77,4 +80,84 @@ extension String: @retroactive CodingKey {
return type return type
} }
/// Apply the documentation regex.
/// - Parameter configuration: The generation configuration.
/// - Returns: The documentation with the regex applied.
func applyDocRegex(configuration: GenerationConfiguration) -> String {
var modified = self
do {
modified = try modified.applyExtraContentRegex()
modified = try modified.applySimpleRegex()
modified = try modified.applyPropertyRegex(configuration: configuration)
modified = try modified.applyBooleanRegex()
modified = try modified.applyHTMLRegex()
modified = try modified.applyNoteRegex()
return modified
} catch {
print("FAIL!")
return modified
}
}
/// Apply the regex to remove additional documentation content.
/// - Returns: The documentation with the regex applied.
func applyExtraContentRegex() throws -> String {
let extraContent = try Regex("##?(.|\\n)*")
return replacing(extraContent, with: "")
}
/// Translate simple definitions into Markdown inline code.
/// - Returns: The documentation with the regex applied.
func applySimpleRegex() throws -> String {
let regex = try Regex("\\[(class|func|method|ctor|signal|const|iface)@(.*?)\\]")
return replacing(regex) { match in
"`\(match.output[2].substring ?? "")`"
}
}
/// Translate property definitions into Swift references.
/// - Parameter configuration: The generation configuration.
/// - Returns: The documentation with the regex applied.
func applyPropertyRegex(configuration: GenerationConfiguration) throws -> String {
let property = try Regex("\\[property@(.*?)\\:(.*?)\\]")
return replacing(property) { match in
let method = String(match.output[2].substring ?? "")
.convertDelimitedCasingToCamel(delimiter: "-", configuration: configuration, unshorten: true)
return "``\(method)(_:)``"
}
}
/// Translate booleans into inline Markdown code with Swift booleans.
/// - Returns: The documentation with the regex applied.
func applyBooleanRegex() throws -> String {
var modified = self
let `false` = try Regex("(`|%)FALSE`?")
modified = modified.replacing(`false`, with: "`false`")
let `true` = try Regex("(`|%)TRUE`?")
modified = modified.replacing(`true`, with: "`true`")
return modified
}
/// Remove broken HTML tags.
/// - Returns: The documentation with the regex applied.
func applyHTMLRegex() throws -> String {
let picture = try Regex("<picture>.*?</picture>")
return replacing(picture, with: "")
}
/// Interpret note/warning blocks.
/// - Returns: The documentation with the regex applied.
func applyNoteRegex() throws -> String {
var modified = self
let note = try Regex("::: note\\n((.|\\n)*?)(\\n\\n)?")
modified = modified.replacing(note) { match in
"> [!NOTE]\n> \(match.output[1].substring ?? "")"
}
let warning = try Regex("::: warning\\n((.|\\n)*?)(\\n\\n)?")
modified = modified.replacing(warning) { match in
"> [!WARNING]\n> \(match.output[1].substring ?? "")"
}
return modified
}
} }

View File

@ -80,7 +80,7 @@ struct Class: ClassLike, Decodable {
import CAdw import CAdw
import LevenshteinTransformations import LevenshteinTransformations
\(doc.docComment()) \(doc.docComment(configuration: genConfig))
public struct \(definition) { public struct \(definition) {
/// Additional update functions for type extensions. /// Additional update functions for type extensions.

View File

@ -74,7 +74,7 @@ struct Property: Decodable {
func generate(config: WidgetConfiguration, genConfig: GenerationConfiguration) -> String { func generate(config: WidgetConfiguration, genConfig: GenerationConfiguration) -> String {
""" """
\(doc?.docComment(indent: " ") ?? "/// \(name)") \(doc?.docComment(configuration: genConfig, indent: " ") ?? "/// \(name)")
var \(parameter(config: config, genConfig: genConfig)) var \(parameter(config: config, genConfig: genConfig))
""" """
} }
@ -91,7 +91,7 @@ struct Property: Decodable {
let mainParameter = parameter(config: config, genConfig: genConfig, modifier: true, defaultValue: true) let mainParameter = parameter(config: config, genConfig: genConfig, modifier: true, defaultValue: true)
return """ return """
\(doc?.docComment(indent: " ") ?? "/// \(name)") \(doc?.docComment(configuration: genConfig, indent: " ") ?? "/// \(name)")
public func \(convertPropertyName(configuration: genConfig))(\(builder)_ \(mainParameter)) -> Self { public func \(convertPropertyName(configuration: genConfig))(\(builder)_ \(mainParameter)) -> Self {
var newSelf = self var newSelf = self
newSelf.\(property) = \(property) newSelf.\(property) = \(property)

View File

@ -24,7 +24,7 @@ struct Signal: Decodable {
let name = name.convertDelimitedCasingToCamel(delimiter: "-", configuration: genConfig, unshorten: true) let name = name.convertDelimitedCasingToCamel(delimiter: "-", configuration: genConfig, unshorten: true)
return """ return """
\(doc?.docComment(indent: " ") ?? " /// \(name)") \(doc?.docComment(configuration: genConfig, indent: " ") ?? " /// \(name)")
var \(name): (() -> Void)? var \(name): (() -> Void)?
""" """
} }
@ -38,7 +38,7 @@ struct Signal: Decodable {
let name = name.convertDelimitedCasingToCamel(delimiter: "-", configuration: genConfig, unshorten: true) let name = name.convertDelimitedCasingToCamel(delimiter: "-", configuration: genConfig, unshorten: true)
return """ return """
\(doc?.docComment(indent: " ") ?? " /// \(name)") \(doc?.docComment(configuration: genConfig, indent: " ") ?? " /// \(name)")
public func \(name)(_ \(name): @escaping () -> Void) -> Self { public func \(name)(_ \(name): @escaping () -> Void) -> Self {
var newSelf = self var newSelf = self
newSelf.\(name) = \(name) newSelf.\(name) = \(name)

View File

@ -1,7 +1,7 @@
{ {
"app-id": "io.github.AparokshaUI.Demo", "app-id": "io.github.AparokshaUI.Demo",
"runtime": "org.gnome.Platform", "runtime": "org.gnome.Platform",
"runtime-version": "48", "runtime-version": "49",
"sdk": "org.gnome.Sdk", "sdk": "org.gnome.Sdk",
"sdk-extensions": [ "sdk-extensions": [
"org.freedesktop.Sdk.Extension.swift6" "org.freedesktop.Sdk.Extension.swift6"