54 lines
1.5 KiB
Swift
54 lines
1.5 KiB
Swift
//
|
|
// AnyView+Overflow.swift
|
|
//
|
|
// Copyright 2026 Brendan Szymanski <hello@bscubed.dev>
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
//
|
|
|
|
import Adwaita
|
|
import CAdw
|
|
|
|
/// The overflow behavior for a widget.
|
|
public enum Overflow: Int {
|
|
|
|
/// Content is not clipped.
|
|
case visible
|
|
/// Content is clipped to the widget's bounds.
|
|
case hidden
|
|
|
|
/// Get the GtkOverflow value.
|
|
public var cValue: GtkOverflow {
|
|
switch self {
|
|
case .visible:
|
|
CAdw.GTK_OVERFLOW_VISIBLE
|
|
case .hidden:
|
|
CAdw.GTK_OVERFLOW_HIDDEN
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension AnyView {
|
|
|
|
/// Set the overflow behavior of the widget.
|
|
public func overflow(_ overflow: Overflow) -> AnyView {
|
|
wrapModifier(properties: [overflow]) { storage in
|
|
gtk_widget_set_overflow(storage.opaquePointer?.cast(), overflow.cValue)
|
|
}
|
|
}
|
|
|
|
}
|