diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 000000000..fc6daf739
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,5 @@
+.git
+target
+libphosh-rs
+phosh/_build
+*.log
diff --git a/.github/Dockerfile b/.github/Dockerfile
index 707da5203..dec715b69 100644
--- a/.github/Dockerfile
+++ b/.github/Dockerfile
@@ -2,32 +2,56 @@
FROM registry.gitlab.gnome.org/world/phosh/phosh/debian:v0.0.2025-11-06
-ARG PHOSH_REMOTE=https://gitlab.gnome.org/World/Phosh/phosh.git
-ARG PHOSH_REF=v0.51.0
+# GTK with the custom surface / GtkPlain work that the GTK4 phosh build needs.
+# Pinned to a commit rather than a branch so image builds stay reproducible.
+# Bump this together with the phosh/ subtree in the phrog repo.
+ARG GTK_REMOTE=https://gitlab.gnome.org/guidog/gtk.git
+ARG GTK_REF=a4cba2e3c84fafc4745c7d4cacbe062b32774e0e
-ARG PHOC_REMOTE=https://gitlab.gnome.org/World/Phosh/phoc.git
-ARG PHOC_REF=v0.51.0
+# The shared and embedded modes use the same checked-in Phosh subtree,
+# including downstream GTK4 compatibility fixes.
+# The custom GTK in /usr/local must win over the distro GTK for building and
+# running phrog. phoc comes from the base image (phosh's own CI image ships
+# it); building it here would drag in wlroots, which Debian does not package.
+ENV PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+ENV LD_LIBRARY_PATH=/usr/local/lib
+
+# Keep dependency installation and native builds in separate layers so a Phosh
+# setup failure does not discard a successfully built custom GTK.
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y update \
&& apt-get -y install --no-install-recommends \
- curl \
- dh-cargo \
- foot \
- wf-recorder \
- && eatmydata git clone ${PHOC_REMOTE} \
- && cd phoc \
- && git checkout ${PHOC_REF} \
- && DEB_BUILD_PROFILES=pkg.phoc.embedwlroots eatmydata apt-get --no-install-recommends -y build-dep . \
- && eatmydata meson setup --prefix=/usr -Dembed-wlroots=enabled _build . \
- && eatmydata meson compile -C _build \
- && eatmydata meson install -C _build \
- && cd .. \
- && eatmydata git clone ${PHOSH_REMOTE} \
- && cd phosh \
- && git checkout ${PHOSH_REF} \
+ curl dh-cargo foot wf-recorder \
+ meson ninja-build pkg-config glslc \
+ libglib2.0-dev libgdk-pixbuf-2.0-dev libpango1.0-dev libcairo2-dev \
+ libgraphene-1.0-dev libepoxy-dev libegl1-mesa-dev libwayland-dev \
+ wayland-protocols libxkbcommon-dev iso-codes shared-mime-info
+
+RUN eatmydata git clone ${GTK_REMOTE} /gtk \
+ && git -C /gtk checkout ${GTK_REF}
+
+RUN apt-get -y install --no-install-recommends libdrm-dev libgbm-dev
+
+RUN eatmydata meson setup --prefix=/usr/local -Dlibdir=lib \
+ -Dbuild-tests=false -Dbuild-demos=false -Dbuild-examples=false \
+ -Ddocumentation=false -Dintrospection=disabled -Dmedia-gstreamer=disabled \
+ /gtk/_build /gtk \
+ && eatmydata meson compile -C /gtk/_build \
+ && eatmydata meson install -C /gtk/_build
+
+COPY phosh /phosh
+
+RUN export DEBIAN_FRONTEND=noninteractive \
+ && apt-get -y update \
+ && cd /phosh \
&& eatmydata apt-get --no-install-recommends -y build-dep . \
- && eatmydata meson setup --prefix=/usr -Dbindings-lib=true _build . \
- && eatmydata meson compile -C _build \
- && eatmydata meson install -C _build \
+ && apt-get --no-install-recommends -y install \
+ libgcr-4-dev libgnome-desktop-4-dev libgnome-bg-4-dev phoc
+
+RUN eatmydata meson setup --prefix=/usr -Dbindings-lib=true -Dtests=false \
+ -Dphoc_tests=disabled -Dlockscreen-plugins=false -Dquick-setting-plugins=false \
+ /phosh/_build /phosh \
+ && eatmydata meson compile -C /phosh/_build \
+ && eatmydata meson install -C /phosh/_build \
&& eatmydata apt-get clean
diff --git a/.github/workflows/alpine.yml b/.github/workflows/alpine.yml
index da9f5c678..12a1dce11 100644
--- a/.github/workflows/alpine.yml
+++ b/.github/workflows/alpine.yml
@@ -21,7 +21,8 @@ permissions:
jobs:
alpine:
- if: inputs.release_mode == 'pr' || inputs.release_mode == 'tag' || github.event_name != 'pull_request' || (contains(github.event.pull_request.labels.*.name, 'apk') && !startsWith(github.event.pull_request.head.ref || '', 'release/v'))
+ # Re-enable with a distro repository providing the pinned GTK4/Phosh stack.
+ if: ${{ false }}
runs-on: ubuntu-24.04${{ matrix.arch == 'aarch64' && '-arm' || '' }}
strategy:
fail-fast: false
diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml
index 5dc489de8..ca4bbb0fc 100644
--- a/.github/workflows/build-image.yml
+++ b/.github/workflows/build-image.yml
@@ -28,11 +28,11 @@ jobs:
id: hash
run: |
set -uexo pipefail
- echo "value=${{ hashFiles('.github/Dockerfile') }}" >> $GITHUB_OUTPUT
+ echo "value=${{ hashFiles('.github/Dockerfile', '.dockerignore', 'phosh/**') }}" >> $GITHUB_OUTPUT
- name: Build and push
uses: docker/build-push-action@v6
with:
- context: .github/
+ context: .
file: .github/Dockerfile
push: true
tags: ghcr.io/samcday/phrog-ci:${{ steps.hash.outputs.value }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 72546a29d..90bf5e3e4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -9,14 +9,14 @@ on:
type: boolean
default: false
push:
- branches: [main]
+ branches: [gtk4]
pull_request_target:
- branches: [main, vendor-base]
+ branches: [gtk4, main, vendor-base]
types: [labeled, opened, reopened, synchronize]
workflow_dispatch: {}
concurrency:
- group: ${{ github.workflow }}-${{ github.event.pull_request.head.sha || github.sha }}
+ group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.head.sha || github.sha }}
cancel-in-progress: true
env:
@@ -42,7 +42,7 @@ jobs:
id: hash
run: |
set -uexo pipefail
- echo "value=${{ hashFiles('.github/Dockerfile') }}" >> $GITHUB_OUTPUT
+ echo "value=${{ hashFiles('.github/Dockerfile', '.dockerignore', 'phosh/**') }}" >> $GITHUB_OUTPUT
build:
if: inputs.release_mode || github.event_name != 'pull_request_target' || !startsWith(github.event.pull_request.head.ref || '', 'release/v')
needs: image-hash
@@ -99,15 +99,15 @@ jobs:
- name: Lint
run: |
${{ matrix.cargo }} clippy --locked --all-targets --no-deps --verbose -- -D warnings
+ - name: Check Rust/C ABI
+ if: matrix.libphosh == 'system'
+ run: cargo test --locked --manifest-path libphosh-rs/Cargo.toml -p libphosh-sys --test abi
- name: Test embedding build support
if: matrix.libphosh == 'bundled'
run: cargo vendored-phosh test --locked --manifest-path libphosh-rs/Cargo.toml -p libphosh-sys --test native_source
- - name: Verify registry package
- if: matrix.libphosh == 'system'
- run: cargo package --locked --no-verify
- name: Lint (fmt)
run: |
- ${{ matrix.cargo }} fmt --all --check
+ ${{ matrix.cargo }} fmt -p phrog -p xtask --check
- uses: actions/upload-artifact@v4
with:
name: x86-64-debug${{ matrix.libphosh == 'bundled' && '-bundled' || '' }}
diff --git a/.github/workflows/debian-unstable.yml b/.github/workflows/debian-unstable.yml
index 58087e7e8..c78025a05 100644
--- a/.github/workflows/debian-unstable.yml
+++ b/.github/workflows/debian-unstable.yml
@@ -20,7 +20,8 @@ concurrency:
jobs:
build:
- if: inputs.release_mode == 'pr' || inputs.release_mode == 'tag' || github.event_name != 'pull_request' || (contains(github.event.pull_request.labels.*.name, 'debs') && !startsWith(github.event.pull_request.head.ref || '', 'release/v'))
+ # Re-enable with a distro repository providing the pinned GTK4/Phosh stack.
+ if: ${{ false }}
name: Build unstable .debs
runs-on: ${{ matrix.runner }}
container: debian:unstable
diff --git a/.github/workflows/next-rc-on-merge.yml b/.github/workflows/next-rc-on-merge.yml
index dc6867379..e0b7be03e 100644
--- a/.github/workflows/next-rc-on-merge.yml
+++ b/.github/workflows/next-rc-on-merge.yml
@@ -10,7 +10,7 @@ permissions:
jobs:
tag-release-pr:
- if: github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && startsWith(github.event.pull_request.head.ref, 'release/v')
+ if: github.event.pull_request.base.ref == 'main' && github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && startsWith(github.event.pull_request.head.ref, 'release/v')
runs-on: ubuntu-latest
steps:
- name: Require release automation token
@@ -66,7 +66,7 @@ jobs:
-f sha="$MERGE_SHA" >/dev/null
next-rc:
- if: github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && startsWith(github.event.pull_request.head.ref, 'release/v')
+ if: github.event.pull_request.base.ref == 'main' && github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && startsWith(github.event.pull_request.head.ref, 'release/v')
runs-on: ubuntu-latest
steps:
- name: Parse next rc version from merged release branch
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 702827895..976c5df40 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,6 +14,8 @@ permissions:
jobs:
gate:
+ # GTK4 snapshots are CI artifacts; stable/RC publication belongs to main.
+ if: ${{ false }}
runs-on: ubuntu-latest
outputs:
enabled: ${{ steps.detect.outputs.enabled }}
diff --git a/.packit.yaml b/.packit.yaml
index 6ff7d8a34..a4d7b62b2 100644
--- a/.packit.yaml
+++ b/.packit.yaml
@@ -16,35 +16,6 @@ actions:
- cargo vendor --locked --versioned-dirs vendor
- tar -H pax --create --gzip --sort=name --owner=0 --group=0 --numeric-owner --file phrog-vendor.tar.gz vendor
-jobs:
- # Build PRs against the non-vendor path, leaning on the gtk3-rs RPMs
- # resurrected in samcday/phrog-nightly.
- - job: copr_build
- manual_trigger: true
- trigger: pull_request
- additional_repos:
- - copr://samcday/phosh-nightly
- - copr://samcday/phrog-nightly
- targets:
- fedora-41-aarch64: &opts
- without_opts:
- - vendor
- fedora-41-x86_64: *opts
- fedora-rawhide-aarch64: *opts
- fedora-rawhide-x86_64: *opts
-
- # Build main commits in samcday/phrog-nightly COPR via the vendor path,
- # mirroring what ships in Fedora dist-git.
- - job: copr_build
- trigger: commit
- branch: main
- owner: samcday
- project: phrog-nightly
- additional_repos:
- - copr://samcday/phosh-nightly
-
- # Build tagged releases in samcday/phrog COPR via the vendor path.
- - job: copr_build
- trigger: release
- owner: samcday
- project: phrog
+# GTK4 depends on unreleased GTK/Phosh. Existing stable and nightly COPRs
+# remain GTK3 channels managed from main; GTK4 currently produces CI artifacts.
+jobs: []
diff --git a/Cargo.lock b/Cargo.lock
index e0e27bc43..c22543092 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -212,29 +212,6 @@ dependencies = [
"syn 2.0.118",
]
-[[package]]
-name = "atk"
-version = "0.18.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b"
-dependencies = [
- "atk-sys",
- "glib 0.18.5",
- "libc",
-]
-
-[[package]]
-name = "atk-sys"
-version = "0.18.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086"
-dependencies = [
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
- "libc",
- "system-deps 6.2.2",
-]
-
[[package]]
name = "atomic-waker"
version = "1.1.2"
@@ -280,27 +257,25 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
[[package]]
name = "cairo-rs"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+checksum = "df683f1d30b457964673a5541a4603208ef95ab6873d2a55871895cf310f3b56"
dependencies = [
"bitflags",
"cairo-sys-rs",
- "glib 0.18.5",
+ "glib",
"libc",
- "once_cell",
- "thiserror",
]
[[package]]
name = "cairo-sys-rs"
-version = "0.18.2"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+checksum = "ee548131103ad8f698c6725669647b9c757b3b66992dd6a026037596417bee21"
dependencies = [
- "glib-sys 0.18.1",
+ "glib-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
@@ -313,16 +288,6 @@ dependencies = [
"shlex",
]
-[[package]]
-name = "cfg-expr"
-version = "0.15.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
-dependencies = [
- "smallvec",
- "target-lexicon 0.12.16",
-]
-
[[package]]
name = "cfg-expr"
version = "0.20.8"
@@ -330,7 +295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb693542bcafa528e198be0ebd9d3632ca5b7c93dbe7237460e199910835997c"
dependencies = [
"smallvec",
- "target-lexicon 0.13.5",
+ "target-lexicon",
]
[[package]]
@@ -373,7 +338,7 @@ version = "4.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9"
dependencies = [
- "heck 0.5.0",
+ "heck",
"proc-macro2",
"quote",
"syn 2.0.118",
@@ -580,61 +545,60 @@ dependencies = [
]
[[package]]
-name = "gdk"
-version = "0.18.2"
+name = "gdk-pixbuf"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691"
+checksum = "25f420376dbee041b2db374ce4573892a36222bb3f6c0c43e24f0d67eae9b646"
dependencies = [
- "cairo-rs",
- "gdk-pixbuf",
- "gdk-sys",
- "gio 0.18.4",
- "glib 0.18.5",
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
"libc",
- "pango",
]
[[package]]
-name = "gdk-pixbuf"
-version = "0.18.5"
+name = "gdk-pixbuf-sys"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
+checksum = "9d5209294ba3775f9b650bf78bfadeba4332089f2329b3e2f6ce0a4957a45bff"
dependencies = [
- "gdk-pixbuf-sys",
- "gio 0.18.4",
- "glib 0.18.5",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
"libc",
- "once_cell",
+ "system-deps 9.0.0",
]
[[package]]
-name = "gdk-pixbuf-sys"
-version = "0.18.0"
+name = "gdk4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+checksum = "d81e2a6c6ecba2aab60633a98df1868b03fa0bfdce8105edc27c1bccf71f0e39"
dependencies = [
- "gio-sys 0.18.1",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
"libc",
- "system-deps 6.2.2",
+ "pango",
]
[[package]]
-name = "gdk-sys"
-version = "0.18.2"
+name = "gdk4-sys"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7"
+checksum = "3d8f608d8d7d229975c4d0d026f5d3071598c4ddab3c5262b0a31840fec78d13"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
- "gio-sys 0.18.1",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
"libc",
"pango-sys",
"pkg-config",
- "system-deps 6.2.2",
+ "system-deps 7.0.8",
]
[[package]]
@@ -672,35 +636,16 @@ dependencies = [
[[package]]
name = "gio"
-version = "0.18.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-util",
- "gio-sys 0.18.1",
- "glib 0.18.5",
- "libc",
- "once_cell",
- "pin-project-lite",
- "smallvec",
- "thiserror",
-]
-
-[[package]]
-name = "gio"
-version = "0.21.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5ff48bf600c68b476e61dc6b7c762f2f4eb91deef66583ba8bb815c30b5811a"
+checksum = "b399f4650bb52c051f3fdf49a234e8a27ab5725c8cd774556c55eee64b2c0350"
dependencies = [
"futures-channel",
"futures-core",
"futures-io",
"futures-util",
- "gio-sys 0.21.5",
- "glib 0.21.5",
+ "gio-sys",
+ "glib",
"libc",
"pin-project-lite",
"smallvec",
@@ -708,35 +653,22 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
-dependencies = [
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
- "libc",
- "system-deps 6.2.2",
- "winapi",
-]
-
-[[package]]
-name = "gio-sys"
-version = "0.21.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0071fe88dba8e40086c8ff9bbb62622999f49628344b1d1bf490a48a29d80f22"
+checksum = "6c28739f914c15b87a9856000bed9cbd5b3a8afbca5e982d9a299e1601422cb5"
dependencies = [
- "glib-sys 0.21.5",
- "gobject-sys 0.21.5",
+ "glib-sys",
+ "gobject-sys",
"libc",
- "system-deps 7.0.8",
+ "system-deps 9.0.0",
"windows-sys",
]
[[package]]
name = "glib"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+checksum = "18b9b8d350db41f690ec1b87109f202782748bbd8ab2f2ede17cb40d29e2838c"
dependencies = [
"bitflags",
"futures-channel",
@@ -744,93 +676,42 @@ dependencies = [
"futures-executor",
"futures-task",
"futures-util",
- "gio-sys 0.18.1",
- "glib-macros 0.18.5",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
"libc",
"log",
"memchr",
- "once_cell",
- "smallvec",
- "thiserror",
-]
-
-[[package]]
-name = "glib"
-version = "0.21.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16de123c2e6c90ce3b573b7330de19be649080ec612033d397d72da265f1bd8b"
-dependencies = [
- "bitflags",
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-task",
- "futures-util",
- "gio-sys 0.21.5",
- "glib-macros 0.21.5",
- "glib-sys 0.21.5",
- "gobject-sys 0.21.5",
- "libc",
- "memchr",
"smallvec",
]
[[package]]
name = "glib-build-tools"
-version = "0.21.0"
+version = "0.22.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86aebe63bb050d4918cb1d629880cb35fcba7ccda6f6fc0ec1beffdaa1b9d5c3"
-dependencies = [
- "gio 0.21.5",
-]
+checksum = "f9871f38b67853c358b8190f77b9f878eb27d933a950f1045b244c4559a9f5f0"
[[package]]
name = "glib-macros"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+checksum = "c9597c68fa7bdf4154a3079642cd21c4dccac0b0bdd2897d82861523bf91e7b9"
dependencies = [
- "heck 0.4.1",
- "proc-macro-crate 2.0.2",
- "proc-macro-error",
+ "heck",
"proc-macro2",
"quote",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "glib-macros"
-version = "0.21.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf59b675301228a696fe01c3073974643365080a76cc3ed5bc2cbc466ad87f17"
-dependencies = [
- "heck 0.5.0",
- "proc-macro-crate 3.5.0",
- "proc-macro2",
- "quote",
- "syn 2.0.118",
-]
-
-[[package]]
-name = "glib-sys"
-version = "0.18.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
-dependencies = [
- "libc",
- "system-deps 6.2.2",
+ "syn 3.0.6",
]
[[package]]
name = "glib-sys"
-version = "0.21.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d95e1a3a19ae464a7286e14af9a90683c64d70c02532d88d87ce95056af3e6c"
+checksum = "99b38907e67e40dec9b60f858bcada952598719cb512a13eb13d6cdcd16f8295"
dependencies = [
"libc",
- "system-deps 7.0.8",
+ "system-deps 9.0.0",
]
[[package]]
@@ -841,24 +722,34 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
name = "gobject-sys"
-version = "0.18.0"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+checksum = "07595c9ba696bd9819cb6a8df39f08078f3dd679508fe052dd558492c2053834"
dependencies = [
- "glib-sys 0.18.1",
+ "glib-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
-name = "gobject-sys"
-version = "0.21.5"
+name = "graphene-rs"
+version = "0.22.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dca35da0d19a18f4575f3cb99fe1c9e029a2941af5662f326f738a21edaf294"
+checksum = "eb856b9c558971c3f13ab692358926da710b046932a4e087aedcc35b040d7dff"
dependencies = [
- "glib-sys 0.21.5",
+ "glib",
+ "graphene-sys",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97842c7543828f98aa5583aa54fcda28aa84fa2b0f8c556142177f7bbb638057"
+dependencies = [
+ "glib-sys",
"libc",
- "system-deps 7.0.8",
+ "system-deps 9.0.0",
]
[[package]]
@@ -873,57 +764,88 @@ dependencies = [
]
[[package]]
-name = "gtk"
-version = "0.18.2"
+name = "gsk4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a"
+checksum = "b867be1c5f14dcb8f552c0eff6e9a9b1da5f8b43943e8efc3a63c889d84952ff"
dependencies = [
- "atk",
"cairo-rs",
- "field-offset",
- "futures-channel",
- "gdk",
- "gdk-pixbuf",
- "gio 0.18.4",
- "glib 0.18.5",
- "gtk-sys",
- "gtk3-macros",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
"libc",
"pango",
- "pkg-config",
]
[[package]]
-name = "gtk-sys"
-version = "0.18.2"
+name = "gsk4-sys"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414"
+checksum = "5b7c7eb2e681ee896646cfb8872b431f24d09f53ba9283289d9b10caa6707088"
dependencies = [
- "atk-sys",
"cairo-sys-rs",
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys 0.18.1",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
+ "gdk4-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
"libc",
"pango-sys",
- "system-deps 6.2.2",
+ "system-deps 7.0.8",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98a0a0466484f64b07b5b8184d43fa46be78eb0b8e04ae4e179af31d770b76d9"
+dependencies = [
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "pango",
]
[[package]]
-name = "gtk3-macros"
-version = "0.18.2"
+name = "gtk4-macros"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d"
+checksum = "5ac7179400a36a04de039c24206bb841c5596992b907b43b23ee8d5bdc40d00e"
dependencies = [
- "proc-macro-crate 1.3.1",
- "proc-macro-error",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.118",
]
+[[package]]
+name = "gtk4-sys"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b8f954786af0b1984425c4446b77f5ff6594346181316be3f850caab1c6f01"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps 7.0.8",
+]
+
[[package]]
name = "hashbrown"
version = "0.15.5"
@@ -939,12 +861,6 @@ version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
-[[package]]
-name = "heck"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
[[package]]
name = "heck"
version = "0.5.0"
@@ -1023,55 +939,49 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
-name = "libc"
-version = "0.2.186"
+name = "libadwaita"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
-
-[[package]]
-name = "libhandy"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "215ba3371132b1535b8359b99ada6d2a538d53fdea498da91b4d62e1d0289dad"
+checksum = "85b9900e67182a4b5b1f157b448d94f0715c8b9770cce21cf000801917f53bfa"
dependencies = [
- "gdk",
- "gdk-pixbuf",
- "gio 0.18.4",
- "glib 0.18.5",
- "gtk",
- "libc",
- "libhandy-sys",
+ "gdk4",
+ "gio",
+ "glib",
+ "gtk4",
+ "libadwaita-sys",
"pango",
]
[[package]]
-name = "libhandy-sys"
-version = "0.11.1"
+name = "libadwaita-sys"
+version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d814ea1e409715aef1dd9885994cb6801f52129ba2898bfe74591b9547b998ad"
+checksum = "28d3c27642b389852aa99341bd4a4c19ec6f8a2b63ebdd7f5ba1952198079ccd"
dependencies = [
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys 0.18.1",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
- "gtk-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk4-sys",
"libc",
"pango-sys",
- "pkg-config",
- "system-deps 6.2.2",
+ "system-deps 7.0.8",
]
+[[package]]
+name = "libc"
+version = "0.2.186"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
+
[[package]]
name = "libphosh"
version = "0.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2a115470102198de201dfdeb81ee085fe1f890bf7c022449eda6c5218cbf26c"
dependencies = [
- "gdk",
- "gio 0.18.4",
- "glib 0.18.5",
- "gtk",
+ "gdk4",
+ "gio",
+ "glib",
+ "gtk4",
"libc",
"libphosh-sys",
]
@@ -1079,19 +989,17 @@ dependencies = [
[[package]]
name = "libphosh-sys"
version = "0.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a836446772e32d3e9d15c236745e22b1f84436dbcecbf740a37469535298456d"
dependencies = [
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys 0.18.1",
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
- "gtk-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk4-sys",
"libc",
- "libhandy-sys",
- "pango-sys",
+ "pkg-config",
+ "shell-words",
"system-deps 7.0.8",
+ "tempfile",
]
[[package]]
@@ -1208,27 +1116,25 @@ dependencies = [
[[package]]
name = "pango"
-version = "0.18.3"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+checksum = "0b2022dbbd82e1c42bd950a6f1df9b98c796e725dce5ec275e03cbf9772e4efa"
dependencies = [
- "gio 0.18.4",
- "glib 0.18.5",
- "libc",
- "once_cell",
+ "gio",
+ "glib",
"pango-sys",
]
[[package]]
name = "pango-sys"
-version = "0.18.0"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+checksum = "ca02d64761b74d56cdd4b437db6d73dc95e6c0d40f27e1c707952c0f09052948"
dependencies = [
- "glib-sys 0.18.1",
- "gobject-sys 0.18.0",
+ "glib-sys",
+ "gobject-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
@@ -1247,18 +1153,19 @@ dependencies = [
"clap",
"futures-util",
"gettext-rs",
- "glib 0.18.5",
+ "glib",
"glib-build-tools",
"glob",
"greetd_ipc",
- "gtk",
+ "gtk4",
"input-event-codes",
"lazy_static",
- "libhandy",
+ "libadwaita",
"libphosh",
"log",
"nix",
"serde",
+ "signal-hook",
"tempfile",
"wayland-client",
"wayland-protocols",
@@ -1286,9 +1193,9 @@ dependencies = [
[[package]]
name = "pkg-config"
-version = "0.3.33"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
+checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
[[package]]
name = "polling"
@@ -1314,57 +1221,13 @@ dependencies = [
"syn 2.0.118",
]
-[[package]]
-name = "proc-macro-crate"
-version = "1.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
-dependencies = [
- "once_cell",
- "toml_edit 0.19.15",
-]
-
-[[package]]
-name = "proc-macro-crate"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
-dependencies = [
- "toml_datetime 0.6.3",
- "toml_edit 0.20.2",
-]
-
[[package]]
name = "proc-macro-crate"
version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
dependencies = [
- "toml_edit 0.25.12+spec-1.1.0",
-]
-
-[[package]]
-name = "proc-macro-error"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-dependencies = [
- "proc-macro-error-attr",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro-error-attr"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-dependencies = [
- "proc-macro2",
- "quote",
- "version_check",
+ "toml_edit",
]
[[package]]
@@ -1519,21 +1382,18 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.9"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
dependencies = [
- "serde",
+ "serde_core",
]
[[package]]
-name = "serde_spanned"
+name = "shell-words"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
-dependencies = [
- "serde_core",
-]
+checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77"
[[package]]
name = "shlex"
@@ -1541,6 +1401,16 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
+[[package]]
+name = "signal-hook"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2"
+dependencies = [
+ "libc",
+ "signal-hook-registry",
+]
+
[[package]]
name = "signal-hook-registry"
version = "1.4.8"
@@ -1571,19 +1441,20 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "syn"
-version = "1.0.109"
+version = "2.0.118"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
dependencies = [
"proc-macro2",
+ "quote",
"unicode-ident",
]
[[package]]
name = "syn"
-version = "2.0.118"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
+checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
dependencies = [
"proc-macro2",
"quote",
@@ -1592,36 +1463,30 @@ dependencies = [
[[package]]
name = "system-deps"
-version = "6.2.2"
+version = "7.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+checksum = "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da127796e7"
dependencies = [
- "cfg-expr 0.15.8",
- "heck 0.5.0",
+ "cfg-expr",
+ "heck",
"pkg-config",
- "toml 0.8.2",
+ "toml",
"version-compare",
]
[[package]]
name = "system-deps"
-version = "7.0.8"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "396a35feb67335377e0251fcbc1092fc85c484bd4e3a7a54319399da127796e7"
+checksum = "8a0dae2cbca1f0ff93795713cfe0a4c02f760e3c0b8ae2ab4ec4045808ff429f"
dependencies = [
- "cfg-expr 0.20.8",
- "heck 0.5.0",
+ "cfg-expr",
+ "heck",
"pkg-config",
- "toml 1.1.2+spec-1.1.0",
+ "toml",
"version-compare",
]
-[[package]]
-name = "target-lexicon"
-version = "0.12.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
-
[[package]]
name = "target-lexicon"
version = "0.13.5"
@@ -1667,18 +1532,6 @@ dependencies = [
"syn 2.0.118",
]
-[[package]]
-name = "toml"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
-dependencies = [
- "serde",
- "serde_spanned 0.6.9",
- "toml_datetime 0.6.3",
- "toml_edit 0.20.2",
-]
-
[[package]]
name = "toml"
version = "1.1.2+spec-1.1.0"
@@ -1687,20 +1540,11 @@ checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
dependencies = [
"indexmap",
"serde_core",
- "serde_spanned 1.1.1",
- "toml_datetime 1.1.1+spec-1.1.0",
+ "serde_spanned",
+ "toml_datetime",
"toml_parser",
"toml_writer",
- "winnow 1.0.3",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
-dependencies = [
- "serde",
+ "winnow",
]
[[package]]
@@ -1712,30 +1556,6 @@ dependencies = [
"serde_core",
]
-[[package]]
-name = "toml_edit"
-version = "0.19.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
-dependencies = [
- "indexmap",
- "toml_datetime 0.6.3",
- "winnow 0.5.40",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
-dependencies = [
- "indexmap",
- "serde",
- "serde_spanned 0.6.9",
- "toml_datetime 0.6.3",
- "winnow 0.5.40",
-]
-
[[package]]
name = "toml_edit"
version = "0.25.12+spec-1.1.0"
@@ -1743,10 +1563,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
dependencies = [
"indexmap",
- "toml_datetime 1.1.1+spec-1.1.0",
+ "toml_datetime",
"toml_parser",
"toml_writer",
- "winnow 1.0.3",
+ "winnow",
]
[[package]]
@@ -1755,7 +1575,7 @@ version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
dependencies = [
- "winnow 1.0.3",
+ "winnow",
]
[[package]]
@@ -1841,12 +1661,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
-[[package]]
-name = "version_check"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
[[package]]
name = "wasip2"
version = "1.0.4+wasi-0.2.12"
@@ -2064,15 +1878,6 @@ dependencies = [
"windows-link",
]
-[[package]]
-name = "winnow"
-version = "0.5.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
-dependencies = [
- "memchr",
-]
-
[[package]]
name = "winnow"
version = "1.0.3"
@@ -2104,7 +1909,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
dependencies = [
"anyhow",
- "heck 0.5.0",
+ "heck",
"wit-parser",
]
@@ -2115,7 +1920,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
dependencies = [
"anyhow",
- "heck 0.5.0",
+ "heck",
"indexmap",
"prettyplease",
"syn 2.0.118",
@@ -2182,7 +1987,7 @@ version = "0.0.0"
dependencies = [
"clap",
"semver",
- "toml_edit 0.25.12+spec-1.1.0",
+ "toml_edit",
]
[[package]]
@@ -2214,7 +2019,7 @@ dependencies = [
"uds_windows",
"uuid",
"windows-sys",
- "winnow 1.0.3",
+ "winnow",
"zbus_macros",
"zbus_names",
"zvariant",
@@ -2226,7 +2031,7 @@ version = "5.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
dependencies = [
- "proc-macro-crate 3.5.0",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.118",
@@ -2242,7 +2047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d"
dependencies = [
"serde",
- "winnow 1.0.3",
+ "winnow",
"zvariant",
]
@@ -2261,7 +2066,7 @@ dependencies = [
"endi",
"enumflags2",
"serde",
- "winnow 1.0.3",
+ "winnow",
"zvariant_derive",
"zvariant_utils",
]
@@ -2272,7 +2077,7 @@ version = "5.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
dependencies = [
- "proc-macro-crate 3.5.0",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.118",
@@ -2289,5 +2094,5 @@ dependencies = [
"quote",
"serde",
"syn 2.0.118",
- "winnow 1.0.3",
+ "winnow",
]
diff --git a/Cargo.toml b/Cargo.toml
index 946e1cc99..a9975a5ab 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,6 +6,7 @@ edition = "2021"
license = "GPL-3.0-only"
exclude = ["/demo-video", "/phosh", "/libphosh-rs", "/.cargo/vendor.toml", "/.cargo/vendor-runner.sh"]
repository = "https://github.com/samcday/phrog"
+publish = false
[workspace]
members = [".", "xtask"]
@@ -17,11 +18,12 @@ glob = "0.3.1"
greetd_ipc = { version = "0.10.0", features = ["sync-codec"] }
async-channel = "2.2.1"
anyhow = "1.0.82"
-libphosh = "0.0.7"
+libphosh = { path = "libphosh-rs/libphosh", version = "0.0.7" }
clap = { version = "4.5.4", features = ["derive"] }
wayland-client = "0.31"
zbus = { version = "5", default-features = false, features = ["blocking", "async-io"] }
nix = { version = "0.30", features = ["signal"] }
+signal-hook = "0.3"
async-global-executor = "3.0.0"
futures-util = "0.3.30"
log = "0.4.22"
@@ -29,19 +31,19 @@ lazy_static = "^1.4"
gettext-rs = { version = "0.7", features = ["gettext-system"] }
[dependencies.glib]
-version = "0.18"
+version = "0.22"
features = ["log_macros"]
[dependencies.gtk]
-version = "0.18"
-features = ["v3_24"]
-
-[dependencies.libhandy]
+package = "gtk4"
version = "0.11"
-features = ["v1_6"]
+features = ["v4_10"]
+
+[dependencies.libadwaita]
+version = "0.9"
[build-dependencies]
-glib-build-tools = "<0.22"
+glib-build-tools = "0.22"
[dev-dependencies]
input-event-codes = "6.2.0"
diff --git a/README.md b/README.md
index 1445ac7aa..771234565 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,9 @@
## 🐸 (phrog)
+> **GTK4 development branch.** GTK3 stable releases continue on `main`.
+> This branch needs unreleased GTK and Phosh snapshots, not normal distro
+> packages. See [GTK4 development](docs/gtk4.md) for builds and known gaps.
+
@@ -71,15 +75,8 @@ cargo binstall phrog
## Development
-`libphosh` 0.45 is required to build this project.
-
-* Alpine (v3.21+): `sudo apk add libphosh`
-* Debian (trixie): `sudo apt install libphosh-0.45-dev`
-* Fedora: `sudo dnf install libphosh-devel`
-
-If `libphosh` is not packaged for your distro, you need to build Phosh+libphosh manually. See the [Phosh][] README for more info.
-
-Once `libphosh` is installed, building and running 🐸 should be quite simple:
+Both modes use local GTK4 Rust bindings. Install the pinned GTK4 stack from
+[the development notes](docs/gtk4.md) before running these commands:
```sh
# To run phrog without greetd, pass --fake
diff --git a/docs/gtk4.md b/docs/gtk4.md
new file mode 100644
index 000000000..3c87f5379
--- /dev/null
+++ b/docs/gtk4.md
@@ -0,0 +1,153 @@
+# GTK4 development
+
+`main` continues GTK3 stable releases alongside Phosh. `gtk4` is a long-running
+integration branch for the GTK4/libadwaita migration. It becomes eligible for
+integration into `main` when the required GTK/Phosh APIs are available upstream
+and the migration's functional and packaging gaps are resolved.
+
+The remaining work is tracked in [#215](https://github.com/samcday/phrog/issues/215).
+
+## Branch maintenance
+
+- The GTK4 series has two layers above #186: PR #213 (`codex/gtk4-phosh`)
+ imports Guido's Phosh GTK4 subtree and native dependency pins; PR #209 (`gtk4`)
+ carries the regenerated bindings, phrog migration, and build/CI integration.
+- Target Phosh dependency updates at `codex/gtk4-phosh`, then merge that branch
+ into `gtk4`. Target application and binding changes at `gtk4`.
+- Both GTK4 layers remain draft while `main` continues GTK3 stable releases.
+ The Phosh import layer alone still has GTK3 Rust bindings; build and test the
+ complete GTK4 application at `gtk4`.
+- Land shared fixes on `main` first, then merge `main` into `gtk4` regularly.
+- Keep upstream source updates, local native patches, and application changes in
+ separate commits. Avoid routine rebases of the shared integration branch.
+- GTK4 currently produces CI artifacts identified by commit/run. Stable tags,
+ release candidates, crates.io publication, and the existing distro/COPR
+ channels remain GTK3. The inherited release/package workflows are disabled
+ here until a separate GTK4 distribution channel is designed.
+
+The current reconstruction is based on #186's explicit vendored-build interface.
+It does not supersede #186. GTK4 uses that interface to build an unreleased
+libphosh snapshot; static embedding remains an independent proposal.
+
+## Dependency snapshots
+
+| Component | Source | Commit |
+| --- | --- | --- |
+| GTK | guidog/gtk, custom-surface | `a4cba2e3c84fafc4745c7d4cacbe062b32774e0e` |
+| Phosh | guidog/phosh, phosh-gtk4 | `37d48c69b2414fb8b8f9cee19eae60a700c4c551` |
+| libphosh-rs import | upstream main | `580d6093` |
+| gir generator | gtk-rs/gir | `601c9bb7f8f42a095df1740453fab3d4d6679788` |
+| gvc | guidog/libgnome-volume-control, phosh/0.52.1 | `1cdc1cb2d622d64e9ad2781093bcc63719c5ea5b` |
+| libcall-ui | World/Phosh/libcall-ui, v0.2.1 | `f66056ace818ff19b507335634dd67138a92c77f` |
+
+The GTK custom-surface snapshot provides `GtkPlain`, which this Phosh snapshot
+requires. A sufficiently high stock GTK version alone is not enough. GTK is
+built in `.github/Dockerfile`; Phosh and its Rust bindings are repository
+subtrees. The CI image copies the Phosh subtree, including downstream fixes, so
+dynamic and embedded builds use the same native sources. Its image tag hashes
+the Dockerfile, build-context exclusions, and Phosh subtree.
+
+## Build and test
+
+The supported CI environment builds the pinned GTK and a shared GTK4 libphosh,
+then tests both dynamically linked and embedded phrog. Build that environment:
+
+```sh
+podman build -t phrog-gtk4-ci -f .github/Dockerfile .
+```
+
+Within an environment providing those dependencies and the Rust toolchain from
+`rust-toolchain.toml`, run from the repository root:
+
+```sh
+# Dynamic GTK4 libphosh; local GTK4 Rust bindings are used in both modes.
+cargo build --locked --all-targets
+cargo clippy --locked --all-targets --no-deps -- -D warnings
+phoc -S -E 'cargo test --locked -- --test-threads=1'
+
+# Embed the pinned Phosh source using the interface shared with #186.
+cargo vendored-phosh build --locked --all-targets
+cargo vendored-phosh clippy --locked --all-targets --no-deps -- -D warnings
+phoc -S -E 'cargo vendored-phosh test --locked -- --test-threads=1'
+```
+
+For headless tests, use the `dbus-run-session xvfb-run ... phoc` invocation in
+`.github/workflows/build.yml`. Host prefixes from earlier development sessions
+are not assumed to exist. When using your own prefix, set `PKG_CONFIG_PATH`,
+`LD_LIBRARY_PATH`, and `XDG_DATA_DIRS` to the custom GTK/Phosh installation.
+
+GTK3 and GTK4 libphosh currently share the `libphosh-0.45` pkg-config name.
+The build rejects metadata that selects GTK3, even if its version satisfies the
+minimum. Never mix the GTK4 bindings with the GTK3 shared library.
+
+The vendor command stages native sources and schemas under `target/vendor`;
+its runner selects the matching schemas. `PHROG_VENDOR_OFFLINE=1` disables
+native downloads once dependencies are prepared. Embedded libphosh still needs
+shared GTK and other native libraries plus schemas, translations, and services.
+Distribution recipes are not yet GTK4-ready.
+
+## Local desktop with Toolbox
+
+Create a Toolbox from the same patched GTK/Phosh environment used by CI:
+
+```sh
+podman build -t localhost/phrog-gtk4-ci -f .github/Dockerfile .
+podman build -t localhost/phrog-gtk4-toolbox -f tools/toolbox/Containerfile tools/toolbox
+toolbox create --image localhost/phrog-gtk4-toolbox phrog-gtk4
+```
+
+Then, from this checkout in a desktop terminal:
+
+```sh
+toolbox run -c phrog-gtk4 ./tools/toolbox/run
+```
+
+The launcher builds into `target/toolbox` and opens phrog in a nested Phoc window.
+It uses the host's Rust installation in `~/.cargo`, the container's patched native
+libraries, software rendering, a private session bus, and in-memory settings.
+It prefers the nested X11 backend when `$DISPLAY` is available, with Wayland as
+a fallback. Upstream GTK4 diagnostics are saved to `target/toolbox/phrog.log`.
+Authentication uses `--fake`; the test password is `0`. Close the nested window
+or press Ctrl+C in the launching terminal to stop it. The first build takes
+longer; subsequent launches reuse the Cargo build cache.
+
+For an interactive development shell, use `toolbox enter phrog-gtk4` and change
+to this checkout. Native Phosh/GTK dependency changes require rebuilding the
+images and recreating the Toolbox; ordinary phrog edits only need another run
+of the launcher.
+
+## Local patches and migration gaps
+
+- Static Phosh resources are registered explicitly in `phosh_shell_init`,
+ inherited from #186. Native build output and schemas remain inside Cargo's
+ target directory; the vendor runner selects the matching schema bundle.
+- `libphosh-rs/fix.sh` rewrites the unnamed `GtkPlain` parent instance field to
+ `Gtk.Widget` / `GtkWidget`. It preserves the field: deleting it makes generated
+ instance structs too small for subclass registration. This temporary workaround
+ needs replacement and ABI validation when GtkPlain gains introspection.
+- The lockscreen uses the layer surface's `configured` signal to select the
+ initial page once because the upstream GTK4 port still relies on widget `show`.
+ Later configure events preserve navigation, including an in-flight transition
+ to the single-user keypad.
+- Downstream system-modal fixes provide the shortcut-manager interface required
+ by GTK4 mnemonic controls and destroy GtkPlain surfaces correctly. The
+ emergency test opens the dialler through the power menu, enters a fictional
+ number, and checks the exact request on a private D-Bus fixture. It also checks
+ incoming-call presentation, Accept/Hangup, and call removal. No modem or host
+ Calls service is used. Active-call page pinning remains #100.
+- The pinned Rust/C ABI checks compare 21 type sizes/alignments and 12 constants.
+ They do not validate field offsets, vfunc behavior, or compatibility with future
+ GTK/Phosh revisions. The C LayerSurface class still embeds GtkWindowClass despite
+ its GtkPlain parent; Rust must mirror the current C header until both change.
+- Other GtkWindow assumptions remain in upstream error-dialog and shutdown paths.
+ Their GTK critical messages are recorded as migration debt in #215; the passing
+ emergency path does not establish that those paths are correct.
+- GTK4 distro packaging, a separate snapshot distribution channel, and final
+ upstream ABI compatibility remain outstanding. A passing development build is
+ not a declaration that GTK4 is ready to replace GTK3 stable releases.
+
+Bindings were regenerated from the GTK4 Phosh GIR using the pinned gir tool.
+Build the generator outside this workspace, apply `fix.sh`, then use the existing
+`libphosh-rs/Makefile` generation targets. Preserve the local sys crate's
+`build.rs` and `native_source.rs`: generator output does not
+replace the embedding implementation inherited from #186.
diff --git a/libphosh-rs/.gitlab-ci.yml b/libphosh-rs/.gitlab-ci.yml
index d63837216..1030a1beb 100644
--- a/libphosh-rs/.gitlab-ci.yml
+++ b/libphosh-rs/.gitlab-ci.yml
@@ -45,14 +45,17 @@ variables:
- if [ -n "$UPSTREAM_BRANCH" ]; then cd subprojects/phosh && git fetch origin "$UPSTREAM_BRANCH" && git checkout FETCH_HEAD && cd -; fi
- cd subprojects/phosh && eatmydata apt -y --no-install-recommends build-dep . && cd -
-build:
- stage: build
- <<: *common_before_script
- script:
+.common_phosh_build: &common_phosh_build
# Build phosh
- meson setup _build
- meson compile -C _build
- meson install -C _build
+
+build:
+ stage: build
+ <<: *common_before_script
+ script:
+ - *common_phosh_build
# Build gir
- cd gir && cargo build && cd -
# Rebuild bindings
@@ -63,10 +66,11 @@ build-doc:
needs: []
variables:
GIT_SUBMODULE_STRATEGY: recursive
- RUSTFLAGS: --cfg docsrs
RUST_VERSION: nightly
<<: *common_before_script
script:
+ - *common_phosh_build
+ # Build doc
- ./build-doc.sh
- mv target/doc/ docs
artifacts:
diff --git a/libphosh-rs/Adw-1.gir b/libphosh-rs/Adw-1.gir
new file mode 100644
index 000000000..1a6d3c704
--- /dev/null
+++ b/libphosh-rs/Adw-1.gir
@@ -0,0 +1,54973 @@
+
+
+
+
+
+
+
+
+
+
+ A dialog showing information about the application.
+
+<picture>
+ <source srcset="about-dialog-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="about-dialog.png" alt="about-dialog">
+</picture>
+
+an about dialog is typically opened when the user activates the `About …`
+item in the application's primary menu. All parts of the dialog are optional.
+
+## Main page
+
+`AdwAboutDialog` prominently displays the application's icon, name, developer
+name and version. They can be set with the [property@AboutDialog:application-icon],
+[property@AboutDialog:application-name],
+[property@AboutDialog:developer-name] and [property@AboutDialog:version]
+respectively.
+
+## What's New
+
+`AdwAboutDialog` provides a way for applications to display their release
+notes, set with the [property@AboutDialog:release-notes] property.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+Only one version can be shown at a time. By default, the displayed version
+number matches [property@AboutDialog:version]. Use
+[property@AboutDialog:release-notes-version] to override it.
+
+## Details
+
+The Details page displays the application comments and links.
+
+The comments can be set with the [property@AboutDialog:comments] property.
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+
+To set the application website, use [property@AboutDialog:website].
+To add extra links below the website, use [method@AboutDialog.add_link].
+
+If the Details page doesn't have any other content besides website, the
+website will be displayed on the main page instead.
+
+## Troubleshooting
+
+`AdwAboutDialog` displays the following two links on the main page:
+
+* Support Questions, set with the [property@AboutDialog:support-url] property,
+* Report an Issue, set with the [property@AboutDialog:issue-url] property.
+
+Additionally, applications can provide debugging information. It will be
+shown separately on the Troubleshooting page. Use the
+[property@AboutDialog:debug-info] property to specify it.
+
+It's intended to be attached to issue reports when reporting issues against
+the application. As such, it cannot contain markup or links.
+
+`AdwAboutDialog` provides a quick way to save debug information to a file.
+When saving, [property@AboutDialog:debug-info-filename] would be used as
+the suggested filename.
+
+## Credits and Acknowledgements
+
+The Credits page has the following default sections:
+
+* Developers, set with the [property@AboutDialog:developers] property,
+* Designers, set with the [property@AboutDialog:designers] property,
+* Artists, set with the [property@AboutDialog:artists] property,
+* Documenters, set with the [property@AboutDialog:documenters] property,
+* Translators, set with the [property@AboutDialog:translator-credits] property.
+
+When setting translator credits, use the strings `"translator-credits"` or
+`"translator_credits"` and mark them as translatable.
+
+The default sections that don't contain any names won't be displayed.
+
+The Credits page can also contain an arbitrary number of extra sections below
+the default ones. Use [method@AboutDialog.add_credit_section] to add them.
+
+The Acknowledgements page can be used to acknowledge additional people and
+organizations for their non-development contributions. Use
+[method@AboutDialog.add_acknowledgement_section] to add sections to it. For
+example, it can be used to list backers in a crowdfunded project or to give
+special thanks.
+
+Each of the people or organizations can have an email address or a website
+specified. To add a email address, use a string like
+`Edgar Allan Poe <edgar@poe.com>`. To specify a website with a title, use a
+string like `The GNOME Project https://www.gnome.org`:
+
+<picture>
+ <source srcset="about-dialog-credits-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="about-dialog-credits.png" alt="about-dialog-credits">
+</picture>
+
+## Legal
+
+The Legal page displays the copyright and licensing information for the
+application and other modules.
+
+The copyright string is set with the [property@AboutDialog:copyright]
+property and should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+Licensing information can be quickly set from a list of known licenses with
+the [property@AboutDialog:license-type] property. If the application's
+license is not in the list, [property@AboutDialog:license] can be used
+instead.
+
+To add information about other modules, such as application dependencies or
+data, use [method@AboutDialog.add_legal_section].
+
+## Other applications
+
+`AdwAboutDialog` can show links to your other apps at the end of the main
+page. To add them, use [method@AboutDialog.add_other_app].
+
+By default the other apps section will have "Other Apps by
+[property@AboutDialog:developer-name]" as its title. Use
+[property@AboutDialog:other-apps-title] to override it.
+
+## Constructing
+
+To make constructing an `AdwAboutDialog` as convenient as possible, you can
+use the function [func@show_about_dialog] which constructs and shows a
+dialog.
+
+```c
+static void
+show_about (GtkApplication *app)
+{
+ const char *developers[] = {
+ "Angela Avery",
+ NULL
+ };
+
+ const char *designers[] = {
+ "GNOME Design Team",
+ NULL
+ };
+
+ adw_show_about_dialog (GTK_WIDGET (gtk_application_get_active_window (app)),
+ "application-name", _("Example"),
+ "application-icon", "org.example.App",
+ "version", "1.2.3",
+ "copyright", "© 2022 Angela Avery",
+ "issue-url", "https://gitlab.gnome.org/example/example/-/issues/",
+ "license-type", GTK_LICENSE_GPL_3_0,
+ "developers", developers,
+ "designers", designers,
+ "translator-credits", _("translator-credits"),
+ NULL);
+}
+```
+
+## CSS nodes
+
+`AdwAboutDialog` has a main CSS node with the name `dialog` and the
+style class `.about`.
+
+
+
+
+
+
+ Creates a new `AdwAboutDialog`.
+
+
+ the newly created `AdwAboutDialog`
+
+
+
+
+ Creates a new `AdwAboutDialog` using AppStream metadata.
+
+This automatically sets the following properties with the following AppStream
+values:
+
+* [property@AboutDialog:application-icon] is set from the `<id>`
+* [property@AboutDialog:application-name] is set from the `<name>`
+* [property@AboutDialog:developer-name] is set from the `<name>` within
+ `<developer>`
+* [property@AboutDialog:version] is set from the version of the latest release
+* [property@AboutDialog:website] is set from the `<url type="homepage">`
+* [property@AboutDialog:support-url] is set from the `<url type="help">`
+* [property@AboutDialog:issue-url] is set from the `<url type="bugtracker">`
+* [property@AboutDialog:license-type] is set from the `<project_license>`.
+ If the license type retrieved from AppStream is not listed in
+ [enum@Gtk.License], it will be set to [enum@Gtk.License.custom].
+
+If @release_notes_version is not `NULL`,
+[property@AboutDialog:release-notes-version] is set to match it, while
+[property@AboutDialog:release-notes] is set from the AppStream release
+description for that version.
+
+
+ the newly created `AdwAboutDialog`
+
+
+
+
+ The resource to use
+
+
+
+ The version to retrieve release notes for
+
+
+
+
+
+ Adds a section to the Acknowledgements page.
+
+This can be used to acknowledge additional people and organizations for their
+non-development contributions - for example, backers in a crowdfunded
+project.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the section name
+
+
+
+ the list of names
+
+
+
+
+
+
+
+ Adds an extra section to the Credits page.
+
+Extra sections are displayed below the standard categories.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the section name
+
+
+
+ the list of names
+
+
+
+
+
+
+
+ Adds an extra section to the Legal page.
+
+Extra sections will be displayed below the application's own information.
+
+The parameters @copyright, @license_type and @license will be used to present
+the it the same way as [property@AboutDialog:copyright],
+[property@AboutDialog:license-type] and [property@AboutDialog:license] are
+for the application's own information.
+
+See those properties for more details.
+
+This can be useful to attribute the application dependencies or data.
+
+Examples:
+
+```c
+adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about),
+ _("Copyright and a known license"),
+ "© 2022 Example",
+ GTK_LICENSE_LGPL_2_1,
+ NULL);
+
+adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about),
+ _("Copyright and custom license"),
+ "© 2022 Example",
+ GTK_LICENSE_CUSTOM,
+ "Custom license text");
+
+adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about),
+ _("Copyright only"),
+ "© 2022 Example",
+ GTK_LICENSE_UNKNOWN,
+ NULL);
+
+adw_about_dialog_add_legal_section (ADW_ABOUT_DIALOG (about),
+ _("Custom license only"),
+ NULL,
+ GTK_LICENSE_CUSTOM,
+ "Something completely custom here.");
+```
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the name of the section
+
+
+
+ a copyright string
+
+
+
+ the type of license
+
+
+
+ custom license information
+
+
+
+
+
+ Adds an extra link to the Details page.
+
+Extra links are displayed under the comment and website.
+
+Underlines in @title will be interpreted as indicating a mnemonic.
+
+See [property@AboutDialog:website].
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the link title
+
+
+
+ the link URL
+
+
+
+
+
+ Adds another application to @self.
+
+The application will be displayed at the bottom of the main page, in a
+separate section. Each added application will be presented as a row with
+@title and @summary, as well as an icon with the name @appid. Clicking the
+row will show @appid in the software center app.
+
+This can be used to link to your other applications if you have multiple.
+
+Example:
+
+```c
+adw_about_dialog_add_other_app (ADW_ABOUT_DIALOG (about),
+ "org.gnome.Boxes",
+ _("Boxes"),
+ _("Virtualization made simple"));
+```
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the application ID
+
+
+
+ the application name
+
+
+
+ the application summary
+
+
+
+
+
+ Gets the AppStream metadata resource path for @self.
+
+
+ the resource path
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the name of the application icon for @self.
+
+
+ the application icon name
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the application name for @self.
+
+
+ the application name
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the list of artists of the application.
+
+
+ The list of artists
+
+
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the comments about the application.
+
+
+ the comments
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the copyright information for @self.
+
+
+ the copyright information
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the debug information for @self.
+
+
+ the debug information
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the debug information filename for @self.
+
+
+ the debug information filename
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the list of designers of the application.
+
+
+ The list of designers
+
+
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the developer name for @self.
+
+
+ the developer_name
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the list of developers of the application.
+
+
+ The list of developers
+
+
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the list of documenters of the application.
+
+
+ The list of documenters
+
+
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the issue tracker URL for @self.
+
+
+ the issue tracker URL
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the license for @self.
+
+
+ the license
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the license type for @self.
+
+
+ the license type
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets The other apps section title for @self.
+
+
+ the section title
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the release notes for @self.
+
+
+ the release notes
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the version described by the application's release notes.
+
+
+ the release notes version
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the URL of the support page for @self.
+
+
+ the support page URL
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the translator credits string.
+
+
+ The translator credits string
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the version for @self.
+
+
+ the version
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Gets the application website URL for @self.
+
+
+ the website URL
+
+
+
+
+ an about dialog
+
+
+
+
+
+ Sets the name of the application icon for @self.
+
+The icon is displayed at the top of the main page.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the application icon name
+
+
+
+
+
+ Sets the application name for @self.
+
+The name is displayed at the top of the main page.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the application name
+
+
+
+
+
+ Sets the list of artists of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the list of artists
+
+
+
+
+
+
+
+ Sets the comments about the application.
+
+Comments will be shown on the Details page, above links.
+
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the comments
+
+
+
+
+
+ Sets the copyright information for @self.
+
+This should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+The copyright information will be displayed on the Legal page, before the
+application license.
+
+[method@AboutDialog.add_legal_section] can be used to add copyright
+information for the application dependencies or other components.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the copyright information
+
+
+
+
+
+ Sets the debug information for @self.
+
+Debug information will be shown on the Troubleshooting page. It's intended
+to be attached to issue reports when reporting issues against the
+application.
+
+`AdwAboutDialog` provides a quick way to save debug information to a file.
+When saving, [property@AboutDialog:debug-info-filename] would be used as
+the suggested filename.
+
+Debug information cannot contain markup or links.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the debug information
+
+
+
+
+
+ Sets the debug information filename for @self.
+
+It will be used as the suggested filename when saving debug information to a
+file.
+
+See [property@AboutDialog:debug-info].
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the debug info filename
+
+
+
+
+
+ Sets the list of designers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the list of designers
+
+
+
+
+
+
+
+ Sets the developer name for @self.
+
+The developer name is displayed on the main page, under the application name.
+
+If the application is developed by multiple people, the developer name can be
+set to values like "AppName team", "AppName developers" or
+"The AppName project", and the individual contributors can be listed on the
+Credits page, with [property@AboutDialog:developers] and related properties.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the developer name
+
+
+
+
+
+ Sets the list of developers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the list of developers
+
+
+
+
+
+
+
+ Sets the list of documenters of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the list of documenters
+
+
+
+
+
+
+
+ Sets the issue tracker URL for @self.
+
+The issue tracker link is displayed on the main page.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the issue tracker URL
+
+
+
+
+
+ Sets the license for @self.
+
+This can be used to set a custom text for the license if it can't be set via
+[property@AboutDialog:license-type].
+
+When set, [property@AboutDialog:license-type] will be set to
+[enum@Gtk.License.custom].
+
+The license text will be displayed on the Legal page, below the copyright
+information.
+
+License text can contain Pango markup and links.
+
+[method@AboutDialog.add_legal_section] can be used to add license information
+for the application dependencies or other components.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the license
+
+
+
+
+
+ Sets the license for @self from a list of known licenses.
+
+If the application's license is not in the list,
+[property@AboutDialog:license] can be used instead. The license type will be
+automatically set to [enum@Gtk.License.custom] in that case.
+
+If @license_type is [enum@Gtk.License.unknown], no information will be
+displayed.
+
+If @license_type is different from [enum@Gtk.License.custom].
+[property@AboutDialog:license] will be cleared out.
+
+The license description will be displayed on the Legal page, below the
+copyright information.
+
+[method@AboutDialog.add_legal_section] can be used to add license information
+for the application dependencies or other components.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the license type
+
+
+
+
+
+ Sets the "Other apps" section title for @self.
+
+If not set, the section will say "Other Apps by (developer name)".
+
+See [method@AboutDialog.add_other_app].
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the new title
+
+
+
+
+
+ Sets the release notes for @self.
+
+Release notes are displayed on the the What's New page.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+`AdwAboutDialog` displays the version above the release notes. If set, the
+[property@AboutDialog:release-notes-version] of the property will be used
+as the version; otherwise, [property@AboutDialog:version] is used.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the release notes
+
+
+
+
+
+ Sets the version described by the application's release notes.
+
+The release notes version is displayed on the What's New page, above the
+release notes.
+
+If not set, [property@AboutDialog:version] will be used instead.
+
+For example, an application with the current version 2.0.2 might want to
+keep the release notes from 2.0.0, and set the release notes version
+accordingly.
+
+See [property@AboutDialog:release-notes].
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the release notes version
+
+
+
+
+
+ Sets the URL of the support page for @self.
+
+The support page link is displayed on the main page.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the support page URL
+
+
+
+
+
+ Sets the translator credits string.
+
+It will be displayed on the Credits page.
+
+This string should be `"translator-credits"` or `"translator_credits"` and
+should be marked as translatable.
+
+The string may contain email addresses and URLs, see the introduction for
+more details. When there is more than one translator, they must be
+separated by a newline in the same string.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the translator credits
+
+
+
+
+
+ Sets the version for @self.
+
+The version is displayed on the main page.
+
+If [property@AboutDialog:release-notes-version] is not set, the version will
+also be displayed above the release notes on the What's New page.
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the version
+
+
+
+
+
+ Sets the application website URL for @self.
+
+Website is displayed on the Details page, below comments, or on the main page
+if the Details page doesn't have any other content.
+
+Applications can add other links below, see [method@AboutDialog.add_link].
+
+
+
+
+
+
+ an about dialog
+
+
+
+ the website URL
+
+
+
+
+
+ The path to the Appstream metadata resource.
+
+If provided, the dialog will be constructed from it.
+
+See [ctor@AboutDialog.new_from_appdata].
+
+If [property@AboutDialog:release-notes-version] is set, release notes will
+be set from the AppStream release description for that version.
+
+
+
+ The name of the application icon.
+
+The icon is displayed at the top of the main page.
+
+
+
+ The name of the application.
+
+The name is displayed at the top of the main page.
+
+
+
+ The list of artists of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+ The comments about the application.
+
+Comments will be shown on the Details page, above links.
+
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+
+
+
+ The copyright information.
+
+This should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+The copyright information will be displayed on the Legal page, above the
+application license.
+
+[method@AboutDialog.add_legal_section] can be used to add copyright
+information for the application dependencies or other components.
+
+
+
+ The debug information.
+
+Debug information will be shown on the Troubleshooting page. It's intended
+to be attached to issue reports when reporting issues against the
+application.
+
+`AdwAboutDialog` provides a quick way to save debug information to a file.
+When saving, [property@AboutDialog:debug-info-filename] would be used as
+the suggested filename.
+
+Debug information cannot contain markup or links.
+
+
+
+ The debug information filename.
+
+It will be used as the suggested filename when saving debug information to
+a file.
+
+See [property@AboutDialog:debug-info].
+
+
+
+ The list of designers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+ The developer name.
+
+The developer name is displayed on the main page, under the application
+name.
+
+If the application is developed by multiple people, the developer name can
+be set to values like "AppName team", "AppName developers" or
+"The AppName project", and the individual contributors can be listed on the
+Credits page, with [property@AboutDialog:developers] and related
+properties.
+
+
+
+ The list of developers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+ The list of documenters of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:translator-credits]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+
+
+ The URL for the application's issue tracker.
+
+The issue tracker link is displayed on the main page.
+
+
+
+ The license text.
+
+This can be used to set a custom text for the license if it can't be set
+via [property@AboutDialog:license-type].
+
+When set, [property@AboutDialog:license-type] will be set to
+[enum@Gtk.License.custom].
+
+The license text will be displayed on the Legal page, below the copyright
+information.
+
+License text can contain Pango markup and links.
+
+[method@AboutDialog.add_legal_section] can be used to add license
+information for the application dependencies or other components.
+
+
+
+ The license type.
+
+Allows to set the application's license froma list of known licenses.
+
+If the application's license is not in the list,
+[property@AboutDialog:license] can be used instead. The license type will
+be automatically set to [enum@Gtk.License.custom] in that case.
+
+If set to [enum@Gtk.License.unknown], no information will be displayed.
+
+If the license type is different from [enum@Gtk.License.custom].
+[property@AboutDialog:license] will be cleared out.
+
+The license description will be displayed on the Legal page, below the
+copyright information.
+
+[method@AboutDialog.add_legal_section] can be used to add license
+information for the application dependencies or other components.
+
+
+
+ The "Other apps" section title.
+
+If not set, the section will say "Other Apps by (developer name)".
+
+See [method@AboutDialog.add_other_app].
+
+
+
+ The release notes of the application.
+
+Release notes are displayed on the the What's New page.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+`AdwAboutDialog` displays the version above the release notes. If set, the
+[property@AboutDialog:release-notes-version] of the property will be used
+as the version; otherwise, [property@AboutDialog:version] is used.
+
+
+
+ The version described by the application's release notes.
+
+The release notes version is displayed on the What's New page, above the
+release notes.
+
+If not set, [property@AboutDialog:version] will be used instead.
+
+For example, an application with the current version 2.0.2 might want to
+keep the release notes from 2.0.0, and set the release notes version
+accordingly.
+
+See [property@AboutDialog:release-notes].
+
+
+
+ The URL of the application's support page.
+
+The support page link is displayed on the main page.
+
+
+
+ The translator credits string.
+
+It will be displayed on the Credits page.
+
+This string should be `"translator-credits"` or `"translator_credits"` and
+should be marked as translatable.
+
+The string may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutDialog:developers]
+* [property@AboutDialog:designers]
+* [property@AboutDialog:artists]
+* [property@AboutDialog:documenters]
+* [method@AboutDialog.add_credit_section]
+* [method@AboutDialog.add_acknowledgement_section]
+
+
+
+ The version of the application.
+
+The version is displayed on the main page.
+
+If [property@AboutDialog:release-notes-version] is not set, the version
+will also be displayed above the release notes on the What's New page.
+
+
+
+ The URL of the application's website.
+
+Website is displayed on the Details page, below comments, or on the main
+page if the Details page doesn't have any other content.
+
+Applications can add other links below, see [method@AboutDialog.add_link].
+
+
+
+ Emitted when a URL is activated.
+
+Applications may connect to it to override the default behavior, which is
+to call [func@Gtk.show_uri].
+
+ `TRUE` if the link has been activated
+
+
+
+
+ the URI to activate
+
+
+
+
+
+
+
+
+
+
+
+
+ A window showing information about the application.
+
+<picture>
+ <source srcset="about-window-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="about-window.png" alt="about-window">
+</picture>
+
+An about window is typically opened when the user activates the `About …`
+item in the application's primary menu. All parts of the window are optional.
+
+## Main page
+
+`AdwAboutWindow` prominently displays the application's icon, name, developer
+name and version. They can be set with the [property@AboutWindow:application-icon],
+[property@AboutWindow:application-name],
+[property@AboutWindow:developer-name] and [property@AboutWindow:version]
+respectively.
+
+## What's New
+
+`AdwAboutWindow` provides a way for applications to display their release
+notes, set with the [property@AboutWindow:release-notes] property.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+Only one version can be shown at a time. By default, the displayed version
+number matches [property@AboutWindow:version]. Use
+[property@AboutWindow:release-notes-version] to override it.
+
+## Details
+
+The Details page displays the application comments and links.
+
+The comments can be set with the [property@AboutWindow:comments] property.
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+
+To set the application website, use [property@AboutWindow:website].
+To add extra links below the website, use [method@AboutWindow.add_link].
+
+If the Details page doesn't have any other content besides website, the
+website will be displayed on the main page instead.
+
+## Troubleshooting
+
+`AdwAboutWindow` displays the following two links on the main page:
+
+* Support Questions, set with the [property@AboutWindow:support-url] property,
+* Report an Issue, set with the [property@AboutWindow:issue-url] property.
+
+Additionally, applications can provide debugging information. It will be
+shown separately on the Troubleshooting page. Use the
+[property@AboutWindow:debug-info] property to specify it.
+
+It's intended to be attached to issue reports when reporting issues against
+the application. As such, it cannot contain markup or links.
+
+`AdwAboutWindow` provides a quick way to save debug information to a file.
+When saving, [property@AboutWindow:debug-info-filename] would be used as
+the suggested filename.
+
+## Credits and Acknowledgements
+
+The Credits page has the following default sections:
+
+* Developers, set with the [property@AboutWindow:developers] property,
+* Designers, set with the [property@AboutWindow:designers] property,
+* Artists, set with the [property@AboutWindow:artists] property,
+* Documenters, set with the [property@AboutWindow:documenters] property,
+* Translators, set with the [property@AboutWindow:translator-credits] property.
+
+When setting translator credits, use the strings `"translator-credits"` or
+`"translator_credits"` and mark them as translatable.
+
+The default sections that don't contain any names won't be displayed.
+
+The Credits page can also contain an arbitrary number of extra sections below
+the default ones. Use [method@AboutWindow.add_credit_section] to add them.
+
+The Acknowledgements page can be used to acknowledge additional people and
+organizations for their non-development contributions. Use
+[method@AboutWindow.add_acknowledgement_section] to add sections to it. For
+example, it can be used to list backers in a crowdfunded project or to give
+special thanks.
+
+Each of the people or organizations can have an email address or a website
+specified. To add a email address, use a string like
+`Edgar Allan Poe <edgar@poe.com>`. To specify a website with a title, use a
+string like `The GNOME Project https://www.gnome.org`:
+
+<picture>
+ <source srcset="about-window-credits-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="about-window-credits.png" alt="about-window-credits">
+</picture>
+
+## Legal
+
+The Legal page displays the copyright and licensing information for the
+application and other modules.
+
+The copyright string is set with the [property@AboutWindow:copyright]
+property and should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+Licensing information can be quickly set from a list of known licenses with
+the [property@AboutWindow:license-type] property. If the application's
+license is not in the list, [property@AboutWindow:license] can be used
+instead.
+
+To add information about other modules, such as application dependencies or
+data, use [method@AboutWindow.add_legal_section].
+
+## Constructing
+
+To make constructing an `AdwAboutWindow` as convenient as possible, you can
+use the function [func@show_about_window] which constructs and shows a
+window.
+
+```c
+static void
+show_about (GtkApplication *app)
+{
+ const char *developers[] = {
+ "Angela Avery",
+ NULL
+ };
+
+ const char *designers[] = {
+ "GNOME Design Team",
+ NULL
+ };
+
+ adw_show_about_window (gtk_application_get_active_window (app),
+ "application-name", _("Example"),
+ "application-icon", "org.example.App",
+ "version", "1.2.3",
+ "copyright", "© 2022 Angela Avery",
+ "issue-url", "https://gitlab.gnome.org/example/example/-/issues/",
+ "license-type", GTK_LICENSE_GPL_3_0,
+ "developers", developers,
+ "designers", designers,
+ "translator-credits", _("translator-credits"),
+ NULL);
+}
+```
+
+## CSS nodes
+
+`AdwAboutWindow` has a main CSS node with the name `window` and the
+style class `.about`.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+
+
+ Creates a new `AdwAboutWindow`.
+ Use [class@AboutDialog].
+
+
+ the newly created `AdwAboutWindow`
+
+
+
+
+ Creates a new `AdwAboutWindow` using AppStream metadata.
+
+This automatically sets the following properties with the following AppStream
+values:
+
+* [property@AboutWindow:application-icon] is set from the `<id>`
+* [property@AboutWindow:application-name] is set from the `<name>`
+* [property@AboutWindow:developer-name] is set from the `<name>` within
+ `<developer>`
+* [property@AboutWindow:version] is set from the version of the latest release
+* [property@AboutWindow:website] is set from the `<url type="homepage">`
+* [property@AboutWindow:support-url] is set from the `<url type="help">`
+* [property@AboutWindow:issue-url] is set from the `<url type="bugtracker">`
+* [property@AboutWindow:license-type] is set from the `<project_license>`.
+ If the license type retrieved from AppStream is not listed in
+ [enum@Gtk.License], it will be set to [enum@Gtk.License.custom].
+
+If @release_notes_version is not `NULL`,
+[property@AboutWindow:release-notes-version] is set to match it, while
+[property@AboutWindow:release-notes] is set from the AppStream release
+description for that version.
+ Use [class@AboutDialog].
+
+
+ the newly created `AdwAboutWindow`
+
+
+
+
+ The resource to use
+
+
+
+ The version to retrieve release notes for
+
+
+
+
+
+ Adds a section to the Acknowledgements page.
+
+This can be used to acknowledge additional people and organizations for their
+non-development contributions - for example, backers in a crowdfunded
+project.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the section name
+
+
+
+ the list of names
+
+
+
+
+
+
+
+ Adds an extra section to the Credits page.
+
+Extra sections are displayed below the standard categories.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the section name
+
+
+
+ the list of names
+
+
+
+
+
+
+
+ Adds an extra section to the Legal page.
+
+Extra sections will be displayed below the application's own information.
+
+The parameters @copyright, @license_type and @license will be used to present
+the it the same way as [property@AboutWindow:copyright],
+[property@AboutWindow:license-type] and [property@AboutWindow:license] are
+for the application's own information.
+
+See those properties for more details.
+
+This can be useful to attribute the application dependencies or data.
+
+Examples:
+
+```c
+adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
+ _("Copyright and a known license"),
+ "© 2022 Example",
+ GTK_LICENSE_LGPL_2_1,
+ NULL);
+
+adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
+ _("Copyright and custom license"),
+ "© 2022 Example",
+ GTK_LICENSE_CUSTOM,
+ "Custom license text");
+
+adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
+ _("Copyright only"),
+ "© 2022 Example",
+ GTK_LICENSE_UNKNOWN,
+ NULL);
+
+adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
+ _("Custom license only"),
+ NULL,
+ GTK_LICENSE_CUSTOM,
+ "Something completely custom here.");
+```
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the name of the section
+
+
+
+ a copyright string
+
+
+
+ the type of license
+
+
+
+ custom license information
+
+
+
+
+
+ Adds an extra link to the Details page.
+
+Extra links are displayed under the comment and website.
+
+Underlines in @title will be interpreted as indicating a mnemonic.
+
+See [property@AboutWindow:website].
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the link title
+
+
+
+ the link URL
+
+
+
+
+
+ Gets the name of the application icon for @self.
+ Use [class@AboutDialog].
+
+
+ the application icon name
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the application name for @self.
+ Use [class@AboutDialog].
+
+
+ the application name
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the list of artists of the application.
+ Use [class@AboutDialog].
+
+
+ The list of artists
+
+
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the comments about the application.
+ Use [class@AboutDialog].
+
+
+ the comments
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the copyright information for @self.
+ Use [class@AboutDialog].
+
+
+ the copyright information
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the debug information for @self.
+ Use [class@AboutDialog].
+
+
+ the debug information
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the debug information filename for @self.
+ Use [class@AboutDialog].
+
+
+ the debug information filename
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the list of designers of the application.
+ Use [class@AboutDialog].
+
+
+ The list of designers
+
+
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the developer name for @self.
+ Use [class@AboutDialog].
+
+
+ the developer_name
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the list of developers of the application.
+ Use [class@AboutDialog].
+
+
+ The list of developers
+
+
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the list of documenters of the application.
+ Use [class@AboutDialog].
+
+
+ The list of documenters
+
+
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the issue tracker URL for @self.
+ Use [class@AboutDialog].
+
+
+ the issue tracker URL
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the license for @self.
+ Use [class@AboutDialog].
+
+
+ the license
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the license type for @self.
+ Use [class@AboutDialog].
+
+
+ the license type
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the release notes for @self.
+ Use [class@AboutDialog].
+
+
+ the release notes
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the version described by the application's release notes.
+ Use [class@AboutDialog].
+
+
+ the release notes version
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the URL of the support page for @self.
+ Use [class@AboutDialog].
+
+
+ the support page URL
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the translator credits string.
+ Use [class@AboutDialog].
+
+
+ The translator credits string
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the version for @self.
+ Use [class@AboutDialog].
+
+
+ the version
+
+
+
+
+ an about window
+
+
+
+
+
+ Gets the application website URL for @self.
+ Use [class@AboutDialog].
+
+
+ the website URL
+
+
+
+
+ an about window
+
+
+
+
+
+ Sets the name of the application icon for @self.
+
+The icon is displayed at the top of the main page.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the application icon name
+
+
+
+
+
+ Sets the application name for @self.
+
+The name is displayed at the top of the main page.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the application name
+
+
+
+
+
+ Sets the list of artists of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the list of artists
+
+
+
+
+
+
+
+ Sets the comments about the application.
+
+Comments will be shown on the Details page, above links.
+
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the comments
+
+
+
+
+
+ Sets the copyright information for @self.
+
+This should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+The copyright information will be displayed on the Legal page, before the
+application license.
+
+[method@AboutWindow.add_legal_section] can be used to add copyright
+information for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the copyright information
+
+
+
+
+
+ Sets the debug information for @self.
+
+Debug information will be shown on the Troubleshooting page. It's intended
+to be attached to issue reports when reporting issues against the
+application.
+
+`AdwAboutWindow` provides a quick way to save debug information to a file.
+When saving, [property@AboutWindow:debug-info-filename] would be used as
+the suggested filename.
+
+Debug information cannot contain markup or links.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the debug information
+
+
+
+
+
+ Sets the debug information filename for @self.
+
+It will be used as the suggested filename when saving debug information to a
+file.
+
+See [property@AboutWindow:debug-info].
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the debug info filename
+
+
+
+
+
+ Sets the list of designers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the list of designers
+
+
+
+
+
+
+
+ Sets the developer name for @self.
+
+The developer name is displayed on the main page, under the application name.
+
+If the application is developed by multiple people, the developer name can be
+set to values like "AppName team", "AppName developers" or
+"The AppName project", and the individual contributors can be listed on the
+Credits page, with [property@AboutWindow:developers] and related properties.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the developer name
+
+
+
+
+
+ Sets the list of developers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the list of developers
+
+
+
+
+
+
+
+ Sets the list of documenters of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for more
+details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the list of documenters
+
+
+
+
+
+
+
+ Sets the issue tracker URL for @self.
+
+The issue tracker link is displayed on the main page.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the issue tracker URL
+
+
+
+
+
+ Sets the license for @self.
+
+This can be used to set a custom text for the license if it can't be set via
+[property@AboutWindow:license-type].
+
+When set, [property@AboutWindow:license-type] will be set to
+[enum@Gtk.License.custom].
+
+The license text will be displayed on the Legal page, below the copyright
+information.
+
+License text can contain Pango markup and links.
+
+[method@AboutWindow.add_legal_section] can be used to add license information
+for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the license
+
+
+
+
+
+ Sets the license for @self from a list of known licenses.
+
+If the application's license is not in the list,
+[property@AboutWindow:license] can be used instead. The license type will be
+automatically set to [enum@Gtk.License.custom] in that case.
+
+If @license_type is [enum@Gtk.License.unknown], no information will be displayed.
+
+If @license_type is different from [enum@Gtk.License.custom].
+[property@AboutWindow:license] will be cleared out.
+
+The license description will be displayed on the Legal page, below the
+copyright information.
+
+[method@AboutWindow.add_legal_section] can be used to add license information
+for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the license type
+
+
+
+
+
+ Sets the release notes for @self.
+
+Release notes are displayed on the the What's New page.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+`AdwAboutWindow` displays the version above the release notes. If set, the
+[property@AboutWindow:release-notes-version] of the property will be used
+as the version; otherwise, [property@AboutWindow:version] is used.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the release notes
+
+
+
+
+
+ Sets the version described by the application's release notes.
+
+The release notes version is displayed on the What's New page, above the
+release notes.
+
+If not set, [property@AboutWindow:version] will be used instead.
+
+For example, an application with the current version 2.0.2 might want to
+keep the release notes from 2.0.0, and set the release notes version
+accordingly.
+
+See [property@AboutWindow:release-notes].
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the release notes version
+
+
+
+
+
+ Sets the URL of the support page for @self.
+
+The support page link is displayed on the main page.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the support page URL
+
+
+
+
+
+ Sets the translator credits string.
+
+It will be displayed on the Credits page.
+
+This string should be `"translator-credits"` or `"translator_credits"` and
+should be marked as translatable.
+
+The string may contain email addresses and URLs, see the introduction for
+more details. When there is more than one translator, they must be
+separated by a newline in the same string.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the translator credits
+
+
+
+
+
+ Sets the version for @self.
+
+The version is displayed on the main page.
+
+If [property@AboutWindow:release-notes-version] is not set, the version will
+also be displayed above the release notes on the What's New page.
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the version
+
+
+
+
+
+ Sets the application website URL for @self.
+
+Website is displayed on the Details page, below comments, or on the main page
+if the Details page doesn't have any other content.
+
+Applications can add other links below, see [method@AboutWindow.add_link].
+ Use [class@AboutDialog].
+
+
+
+
+
+
+ an about window
+
+
+
+ the website URL
+
+
+
+
+
+ The name of the application icon.
+
+The icon is displayed at the top of the main page.
+ Use [class@AboutDialog].
+
+
+
+ The name of the application.
+
+The name is displayed at the top of the main page.
+ Use [class@AboutDialog].
+
+
+
+ The list of artists of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+ The comments about the application.
+
+Comments will be shown on the Details page, above links.
+
+Unlike [property@Gtk.AboutDialog:comments], this string can be long and
+detailed. It can also contain links and Pango markup.
+ Use [class@AboutDialog].
+
+
+
+ The copyright information.
+
+This should be a short string of one or two lines, for example:
+`© 2022 Example`.
+
+The copyright information will be displayed on the Legal page, above the
+application license.
+
+[method@AboutWindow.add_legal_section] can be used to add copyright
+information for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+ The debug information.
+
+Debug information will be shown on the Troubleshooting page. It's intended
+to be attached to issue reports when reporting issues against the
+application.
+
+`AdwAboutWindow` provides a quick way to save debug information to a file.
+When saving, [property@AboutWindow:debug-info-filename] would be used as
+the suggested filename.
+
+Debug information cannot contain markup or links.
+ Use [class@AboutDialog].
+
+
+
+ The debug information filename.
+
+It will be used as the suggested filename when saving debug information to
+a file.
+
+See [property@AboutWindow:debug-info].
+ Use [class@AboutDialog].
+
+
+
+ The list of designers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+ The developer name.
+
+The developer name is displayed on the main page, under the application
+name.
+
+If the application is developed by multiple people, the developer name can
+be set to values like "AppName team", "AppName developers" or
+"The AppName project", and the individual contributors can be listed on the
+Credits page, with [property@AboutWindow:developers] and related
+properties.
+ Use [class@AboutDialog].
+
+
+
+ The list of developers of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+ The list of documenters of the application.
+
+It will be displayed on the Credits page.
+
+Each name may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:translator-credits]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+
+
+ The URL for the application's issue tracker.
+
+The issue tracker link is displayed on the main page.
+ Use [class@AboutDialog].
+
+
+
+ The license text.
+
+This can be used to set a custom text for the license if it can't be set
+via [property@AboutWindow:license-type].
+
+When set, [property@AboutWindow:license-type] will be set to
+[enum@Gtk.License.custom].
+
+The license text will be displayed on the Legal page, below the copyright
+information.
+
+License text can contain Pango markup and links.
+
+[method@AboutWindow.add_legal_section] can be used to add license
+information for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+ The license type.
+
+Allows to set the application's license froma list of known licenses.
+
+If the application's license is not in the list,
+[property@AboutWindow:license] can be used instead. The license type will
+be automatically set to [enum@Gtk.License.custom] in that case.
+
+If set to [enum@Gtk.License.unknown], no information will be displayed.
+
+If the license type is different from [enum@Gtk.License.custom].
+[property@AboutWindow:license] will be cleared out.
+
+The license description will be displayed on the Legal page, below the
+copyright information.
+
+[method@AboutWindow.add_legal_section] can be used to add license
+information for the application dependencies or other components.
+ Use [class@AboutDialog].
+
+
+
+ The release notes of the application.
+
+Release notes are displayed on the the What's New page.
+
+Release notes are formatted the same way as
+[AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
+
+The supported formatting options are:
+
+* Paragraph (`<p>`)
+* Ordered list (`<ol>`), with list items (`<li>`)
+* Unordered list (`<ul>`), with list items (`<li>`)
+
+Within paragraphs and list items, emphasis (`<em>`) and inline code
+(`<code>`) text styles are supported. The emphasis is rendered in italic,
+while inline code is shown in a monospaced font.
+
+Any text outside paragraphs or list items is ignored.
+
+Nested lists are not supported.
+
+`AdwAboutWindow` displays the version above the release notes. If set, the
+[property@AboutWindow:release-notes-version] of the property will be used
+as the version; otherwise, [property@AboutWindow:version] is used.
+ Use [class@AboutDialog].
+
+
+
+ The version described by the application's release notes.
+
+The release notes version is displayed on the What's New page, above the
+release notes.
+
+If not set, [property@AboutWindow:version] will be used instead.
+
+For example, an application with the current version 2.0.2 might want to
+keep the release notes from 2.0.0, and set the release notes version
+accordingly.
+
+See [property@AboutWindow:release-notes].
+ Use [class@AboutDialog].
+
+
+
+ The URL of the application's support page.
+
+The support page link is displayed on the main page.
+ Use [class@AboutDialog].
+
+
+
+ The translator credits string.
+
+It will be displayed on the Credits page.
+
+This string should be `"translator-credits"` or `"translator_credits"` and
+should be marked as translatable.
+
+The string may contain email addresses and URLs, see the introduction for
+more details.
+
+See also:
+
+* [property@AboutWindow:developers]
+* [property@AboutWindow:designers]
+* [property@AboutWindow:artists]
+* [property@AboutWindow:documenters]
+* [method@AboutWindow.add_credit_section]
+* [method@AboutWindow.add_acknowledgement_section]
+ Use [class@AboutDialog].
+
+
+
+ The version of the application.
+
+The version is displayed on the main page.
+
+If [property@AboutWindow:release-notes-version] is not set, the version
+will also be displayed above the release notes on the What's New page.
+ Use [class@AboutDialog].
+
+
+
+ The URL of the application's website.
+
+Website is displayed on the Details page, below comments, or on the main
+page if the Details page doesn't have any other content.
+
+Applications can add other links below, see [method@AboutWindow.add_link].
+ Use [class@AboutDialog].
+
+
+
+ Emitted when a URL is activated.
+
+Applications may connect to it to override the default behavior, which is
+to call [func@Gtk.show_uri].
+ Use [class@AboutDialog].
+
+ `TRUE` if the link has been activated
+
+
+
+
+ the URI to activate
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes the available system accent colors.
+
+ Use a blue color (`#3584e4`). This is the default value.
+
+
+ Use a teal color (`#2190a4`).
+
+
+ Use a green color (`#3a944a`).
+
+
+ Use a yellow color (`#c88800`).
+
+
+ Use a orange color (`#ed5b00`).
+
+
+ Use a red color (`#e62d42`).
+
+
+ Use a pink color (`#d56199`).
+
+
+ Use a purple color (`#9141ac`).
+
+
+ Use a slate color (`#6f8396`).
+
+
+ Converts @self to a `GdkRGBA` representing its background color.
+
+The matching foreground color is white.
+
+
+
+
+
+
+ an accent color
+
+
+
+ return location for the color
+
+
+
+
+
+ Converts @self to a `GdkRGBA` representing its standalone color.
+
+It will typically be darker for light background, and lighter for dark
+background, ensuring contrast.
+
+
+
+
+
+
+ an accent color
+
+
+
+ Whether to calculate standalone color for light or dark background
+
+
+
+ return location for the color
+
+
+
+
+
+
+ A [class@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
+can receive additional widgets at its end, or prefix widgets at its start.
+
+It is convenient to present a preference and its related actions.
+
+`AdwActionRow` is unactivatable by default, giving it an activatable widget
+will automatically make it activatable, but unsetting it won't change the
+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.
+
+
+
+
+
+
+ Creates a new `AdwActionRow`.
+
+
+ the newly created `AdwActionRow`
+
+
+
+
+ Activates @self.
+
+
+
+
+
+
+ an action row
+
+
+
+
+
+ Activates @self.
+
+
+
+
+
+
+ an action row
+
+
+
+
+
+ Adds a prefix widget to @self.
+
+
+
+
+
+
+ an action row
+
+
+
+ a widget
+
+
+
+
+
+ Adds a suffix widget to @self.
+
+
+
+
+
+
+ an action row
+
+
+
+ a widget
+
+
+
+
+
+ Gets the widget activated when @self is activated.
+
+
+ the activatable widget for @self
+
+
+
+
+ an action row
+
+
+
+
+
+ Gets the icon name for @self.
+ Use [method@ActionRow.add_prefix] to add an icon.
+
+
+ the icon name for @self
+
+
+
+
+ an action row
+
+
+
+
+
+ Gets the subtitle for @self.
+
+
+ the subtitle for @self
+
+
+
+
+ an action row
+
+
+
+
+
+ Gets the number of lines at the end of which the subtitle label will be
+ellipsized.
+
+
+ the number of lines at the end of which the subtitle label will be
+ ellipsized
+
+
+
+
+ an action row
+
+
+
+
+
+ Gets whether the user can copy the subtitle from the label
+
+
+ whether the user can copy the subtitle from the label
+
+
+
+
+ an action row
+
+
+
+
+
+ Gets 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
+
+
+
+
+ an action row
+
+
+
+
+
+ Removes a child from @self.
+
+
+
+
+
+
+ an action row
+
+
+
+ the child to be removed
+
+
+
+
+
+ Sets the widget to activate when @self is activated.
+
+The row can be activated either by clicking on it, calling
+[method@ActionRow.activate], or via mnemonics in the title.
+See the [property@PreferencesRow:use-underline] property to enable mnemonics.
+
+The target widget will be activated by emitting the
+[signal@Gtk.Widget::mnemonic-activate] signal on it.
+
+
+
+
+
+
+ an action row
+
+
+
+ the target widget
+
+
+
+
+
+ Sets the icon name for @self.
+ Use [method@ActionRow.add_prefix] to add an icon.
+
+
+
+
+
+
+ an action row
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the subtitle for @self.
+
+The subtitle is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+
+
+
+ an action row
+
+
+
+ the subtitle
+
+
+
+
+
+ Sets the number of lines at the end of which the subtitle label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+ an action row
+
+
+
+ the number of lines at the end of which the subtitle label will be ellipsized
+
+
+
+
+
+ Sets whether the user can copy the subtitle from the label
+
+See also [property@Gtk.Label:selectable].
+
+
+
+
+
+
+ an action row
+
+
+
+ `TRUE` if the user can copy the subtitle from the label
+
+
+
+
+
+ Sets the number of lines at the end of which the title label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+ an action row
+
+
+
+ the number of lines at the end of which the title label will be ellipsized
+
+
+
+
+
+ The widget to activate when the row is activated.
+
+The row can be activated either by clicking on it, calling
+[method@ActionRow.activate], or via mnemonics in the title.
+See the [property@PreferencesRow:use-underline] property to enable
+mnemonics.
+
+The target widget will be activated by emitting the
+[signal@Gtk.Widget::mnemonic-activate] signal on it.
+
+
+
+ The icon name for this row.
+ Use [method@ActionRow.add_prefix] to add an icon.
+
+
+
+ The subtitle for this row.
+
+The subtitle is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+ The number of lines at the end of which the subtitle label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+ Whether the user can copy the subtitle from the label.
+
+See also [property@Gtk.Label:selectable].
+
+
+
+ The number of lines at the end of which the title label will be ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+ This signal is emitted after the row has been activated.
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+ Activates the row to trigger its main action.
+
+
+
+
+
+
+
+ an action row
+
+
+
+
+
+
+
+
+
+
+
+
+ A dialog presenting a message or a question.
+
+<picture>
+ <source srcset="alert-dialog-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="alert-dialog.png" alt="alert-dialog">
+</picture>
+
+Alert dialogs have a heading, a body, an optional child widget, and one or
+multiple responses, each presented as a button.
+
+Each response has a unique string ID, and a button label. Additionally, each
+response can be enabled or disabled, and can have a suggested or destructive
+appearance.
+
+When one of the responses is activated, or the dialog is closed, the
+[signal@AlertDialog::response] signal will be emitted. This signal is
+detailed, and the detail, as well as the `response` parameter will be set to
+the ID of the activated response, or to the value of the
+[property@AlertDialog:close-response] property if the dialog had been closed
+without activating any of the responses.
+
+Response buttons can be presented horizontally or vertically depending on
+available space.
+
+When a response is activated, `AdwAlertDialog` is closed automatically.
+
+An example of using an alert dialog:
+
+```c
+AdwDialog *dialog;
+
+dialog = adw_alert_dialog_new (_("Replace File?"), NULL);
+
+adw_alert_dialog_format_body (ADW_ALERT_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+
+adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
+ "cancel", _("_Cancel"),
+ "replace", _("_Replace"),
+ NULL);
+
+adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
+ "replace",
+ ADW_RESPONSE_DESTRUCTIVE);
+
+adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
+adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");
+
+g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);
+
+adw_dialog_present (dialog, parent);
+```
+
+## Async API
+
+`AdwAlertDialog` can also be used via the [method@AlertDialog.choose] method.
+This API follows the GIO async pattern, for example:
+
+```c
+static void
+dialog_cb (AdwAlertDialog *dialog,
+ GAsyncResult *result,
+ MyWindow *self)
+{
+ const char *response = adw_alert_dialog_choose_finish (dialog, result);
+
+ // ...
+}
+
+static void
+show_dialog (MyWindow *self)
+{
+ AdwDialog *dialog;
+
+ dialog = adw_alert_dialog_new (_("Replace File?"), NULL);
+
+ adw_alert_dialog_format_body (ADW_ALERT_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+
+ adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
+ "cancel", _("_Cancel"),
+ "replace", _("_Replace"),
+ NULL);
+
+ adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
+ "replace",
+ ADW_RESPONSE_DESTRUCTIVE);
+
+ adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
+ adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");
+
+ adw_alert_dialog_choose (ADW_ALERT_DIALOG (dialog), GTK_WIDGET (self),
+ NULL, (GAsyncReadyCallback) dialog_cb, self);
+}
+```
+
+## AdwAlertDialog as GtkBuildable
+
+`AdwAlertDialog` supports adding responses in UI definitions by via the
+`<responses>` element that may contain multiple `<response>` elements, each
+representing a response.
+
+Each of the `<response>` elements must have the `id` attribute specifying the
+response ID. The contents of the element are used as the response label.
+
+Response labels can be translated with the usual `translatable`, `context`
+and `comments` attributes.
+
+The `<response>` elements can also have `enabled` and/or `appearance`
+attributes. See [method@AlertDialog.set_response_enabled] and
+[method@AlertDialog.set_response_appearance] for details.
+
+Example of an `AdwAlertDialog` UI definition:
+
+```xml
+<object class="AdwAlertDialog" id="dialog">
+ <property name="heading" translatable="yes">Save Changes?</property>
+ <property name="body" translatable="yes">Open documents contain unsaved changes. Changes which are not saved will be permanently lost.</property>
+ <property name="default-response">save</property>
+ <property name="close-response">cancel</property>
+ <signal name="response" handler="response_cb"/>
+ <responses>
+ <response id="cancel" translatable="yes">_Cancel</response>
+ <response id="discard" translatable="yes" appearance="destructive">_Discard</response>
+ <response id="save" translatable="yes" appearance="suggested" enabled="false">_Save</response>
+ </responses>
+</object>
+```
+
+
+
+
+
+
+ Creates a new `AdwAlertDialog`.
+
+@heading and @body can be set to `NULL`. This can be useful if they need to
+be formatted or use markup. In that case, set them to `NULL` and call
+[method@AlertDialog.format_body] or similar methods afterwards:
+
+```c
+AdwDialog *dialog;
+
+dialog = adw_alert_dialog_new (_("Replace File?"), NULL);
+adw_alert_dialog_format_body (ADW_ALERT_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+```
+
+
+ the newly created `AdwAlertDialog`
+
+
+
+
+ the heading
+
+
+
+ the body text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adds a response with @id and @label to @self.
+
+Responses are represented as buttons in the dialog.
+
+Response ID must be unique. It will be used in [signal@AlertDialog::response]
+to tell which response had been activated, as well as to inspect and modify
+the response later.
+
+An embedded underline in @label indicates a mnemonic.
+
+[method@AlertDialog.set_response_label] can be used to change the response
+label after it had been added.
+
+[method@AlertDialog.set_response_enabled] and
+[method@AlertDialog.set_response_appearance] can be used to customize the
+responses further.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the response ID
+
+
+
+ the response label
+
+
+
+
+
+ Adds multiple responses to @self.
+
+This is the same as calling [method@AlertDialog.add_response] repeatedly. The
+variable argument list should be `NULL`-terminated list of response IDs and
+labels.
+
+Example:
+
+```c
+adw_alert_dialog_add_responses (dialog,
+ "cancel", _("_Cancel"),
+ "discard", _("_Discard"),
+ "save", _("_Save"),
+ NULL);
+```
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ response id
+
+
+
+ label for first response, then more id-label pairs
+
+
+
+
+
+ This function shows @self to the user.
+
+If the window is an [class@Window] or [class@ApplicationWindow], the dialog
+will be shown within it. Otherwise, it will be a separate window.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the parent widget
+
+
+
+ a `GCancellable` to cancel the operation
+
+
+
+ a callback to call when the operation is complete
+
+
+
+ data to pass to @callback
+
+
+
+
+
+ Finishes the [method@AlertDialog.choose] call and returns the response ID.
+
+
+ the ID of the response that was selected, or
+ [property@AlertDialog:close-response] if the call was cancelled.
+
+
+
+
+ an alert dialog
+
+
+
+ a `GAsyncResult`
+
+
+
+
+
+ Sets the formatted body text of @self.
+
+See [property@AlertDialog:body].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the formatted string for the body text
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted body text of @self with Pango markup.
+
+The @format is assumed to contain Pango markup.
+
+Special XML characters in the `printf()` arguments passed to this function
+will automatically be escaped as necessary, see
+[func@GLib.markup_printf_escaped].
+
+See [property@AlertDialog:body].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the formatted string for the body text with Pango markup
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted heading of @self.
+
+See [property@AlertDialog:heading].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the formatted string for the heading
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted heading of @self with Pango markup.
+
+The @format is assumed to contain Pango markup.
+
+Special XML characters in the `printf()` arguments passed to this function
+will automatically be escaped as necessary, see
+[func@GLib.markup_printf_escaped].
+
+See [property@AlertDialog:heading].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the formatted string for the heading with Pango markup
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Gets the body text of @self.
+
+
+ the body of @self.
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets whether the body text of @self includes Pango markup.
+
+
+ whether @self uses markup for body text
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets the ID of the close response of @self.
+
+
+ the close response ID
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets the ID of the default response of @self.
+
+
+ the default response ID
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self.
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets the heading of @self.
+
+
+ the heading of @self.
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets whether the heading of @self includes Pango markup.
+
+
+ whether @self uses markup for heading
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets whether @self prefers horizontal button layout.
+
+
+ whether to prefer wide layout
+
+
+
+
+ an alert dialog
+
+
+
+
+
+ Gets the appearance of @response.
+
+See [method@AlertDialog.set_response_appearance].
+
+
+ the appearance of @response
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets whether @response is enabled.
+
+See [method@AlertDialog.set_response_enabled].
+
+
+ whether @response is enabled
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets the label of @response.
+
+See [method@AlertDialog.set_response_label].
+
+
+ the label of @response
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets whether @self has a response with the ID @response.
+
+
+ whether @self has a response with the ID @response.
+
+
+
+
+ an alert dialog
+
+
+
+ response ID
+
+
+
+
+
+ Removes a response from @self.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the response ID
+
+
+
+
+
+ Sets the body text of @self.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the body of @self
+
+
+
+
+
+ Sets whether the body text of @self includes Pango markup.
+
+See [func@Pango.parse_markup].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ whether to use markup for body text
+
+
+
+
+
+ Sets the ID of the close response of @self.
+
+It will be passed to [signal@AlertDialog::response] if the dialog is closed
+by pressing <kbd>Escape</kbd> or with a system action.
+
+It doesn't have to correspond to any of the responses in the dialog.
+
+The default close response is `close`.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the close response ID
+
+
+
+
+
+ Sets the ID of the default response of @self.
+
+The button corresponding to this response will be set as the default widget
+of @self.
+
+If not set, the default widget will not be set, and the last added response
+will be focused by default.
+
+See [property@Dialog:default-widget].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the default response ID
+
+
+
+
+
+ Sets the child widget of @self.
+
+The child widget is displayed below the heading and body.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the heading of @self.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ the heading of @self
+
+
+
+
+
+ Sets whether the heading of @self includes Pango markup.
+
+See [func@Pango.parse_markup].
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ whether to use markup for heading
+
+
+
+
+
+ Whether to prefer horizontal button layout.
+
+`AdwAlertDialog` can present buttons horizontally or vertically depending
+on available space, how many buttons there are and how wide they are.
+
+By default it will prefer to stack buttons vertically at medium sizes.
+
+Set to `TRUE` to prefer horizontal layout in these cases instead. This will
+make the dialog slightly wider as well.
+
+Vertical layout may still be used if the dialog would get too wide
+otherwise.
+
+Does nothing with just one button, or when the buttons are already
+horizontal.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ whether to prefer wide layout
+
+
+
+
+
+ Sets the appearance for @response.
+
+<picture>
+ <source srcset="alert-dialog-appearance-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="alert-dialog-appearance.png" alt="alert-dialog-appearance">
+</picture>
+
+Use [enum@Adw.ResponseAppearance.suggested] to mark important responses such
+as the affirmative action, like the Save button in the example.
+
+Use [enum@Adw.ResponseAppearance.destructive] to draw attention to the
+potentially damaging consequences of using @response. This appearance acts as
+a warning to the user. The Discard button in the example is using this
+appearance.
+
+The default appearance is [enum@Adw.ResponseAppearance.default].
+
+Negative responses like Cancel or Close should use the default appearance.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+ appearance for @response
+
+
+
+
+
+ Sets whether @response is enabled.
+
+If @response is not enabled, the corresponding button will have
+[property@Gtk.Widget:sensitive] set to `FALSE` and it can't be activated as
+a default response.
+
+@response can still be used as [property@AlertDialog:close-response] while
+it's not enabled.
+
+Responses are enabled by default.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+ whether to enable @response
+
+
+
+
+
+ Sets the label of @response to @label.
+
+Labels are displayed on the dialog buttons. An embedded underline in @label
+indicates a mnemonic.
+
+
+
+
+
+
+ an alert dialog
+
+
+
+ a response ID
+
+
+
+ the label of @response
+
+
+
+
+
+ The body text of the dialog.
+
+
+
+ Whether the body text includes Pango markup.
+
+See [func@Pango.parse_markup].
+
+
+
+ The ID of the close response.
+
+It will be passed to [signal@AlertDialog::response] if the dialog is
+closed by pressing <kbd>Escape</kbd> or with a system action.
+
+It doesn't have to correspond to any of the responses in the dialog.
+
+The default close response is `close`.
+
+
+
+ The response ID of the default response.
+
+The button corresponding to this response will be set as the default widget
+of the dialog.
+
+If not set, the default widget will not be set, and the last added response
+will be focused by default.
+
+See [property@Dialog:default-widget].
+
+
+
+ The child widget.
+
+Displayed below the heading and body.
+
+
+
+ The heading of the dialog.
+
+
+
+ Whether the heading includes Pango markup.
+
+See [func@Pango.parse_markup].
+
+
+
+ Whether to prefer horizontal button layout.
+
+`AdwAlertDialog` can present buttons horizontally or vertically depending
+on available space, how many buttons there are and how wide they are.
+
+By default it will prefer to stack buttons vertically at medium sizes.
+
+Set to `TRUE` to prefer horizontal layout in these cases instead. This will
+make the dialog slightly wider as well.
+
+Vertical layout may still be used if the dialog would get too wide
+otherwise.
+
+Does nothing with just one button, or when the buttons are already
+horizontal.
+
+
+
+
+
+
+ This signal is emitted when the dialog is closed.
+
+@response will be set to the response ID of the button that had been
+activated.
+
+if the dialog was closed by pressing <kbd>Escape</kbd> or with a system
+action, @response will be set to the value of
+[property@AlertDialog:close-response].
+
+
+
+
+
+ the response ID
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A base class for animations.
+
+`AdwAnimation` represents an animation on a widget. It has a target that
+provides a value to animate, and a state indicating whether the
+animation hasn't been started yet, is playing, paused or finished.
+
+Currently there are two concrete animation types:
+[class@TimedAnimation] and [class@SpringAnimation].
+
+`AdwAnimation` will automatically skip the animation if
+[property@Animation:widget] is unmapped, or if
+[property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
+
+The [signal@Animation::done] signal can be used to perform an action after
+the animation ends, for example hiding a widget after animating its
+[property@Gtk.Widget:opacity] to 0.
+
+`AdwAnimation` will be kept alive while the animation is playing. As such,
+it's safe to create an animation, start it and immediately unref it:
+A fire-and-forget animation:
+
+```c
+static void
+animation_cb (double value,
+ MyObject *self)
+{
+ // Do something with @value
+}
+
+static void
+my_object_animate (MyObject *self)
+{
+ AdwAnimationTarget *target =
+ adw_callback_animation_target_new ((AdwAnimationTargetFunc) animation_cb,
+ self, NULL);
+ g_autoptr (AdwAnimation) animation =
+ adw_timed_animation_new (widget, 0, 1, 250, target);
+
+ adw_animation_play (animation);
+}
+```
+
+If there's a chance the previous animation for the same target hasn't yet
+finished, the previous animation should be stopped first, or the existing
+`AdwAnimation` object can be reused.
+
+
+ Gets whether @self should be skipped when animations are globally disabled.
+
+
+ whether to follow the global setting
+
+
+
+
+ an animation
+
+
+
+
+
+ Gets the current value of @self.
+
+The state indicates whether @self is currently playing, paused, finished or
+hasn't been started yet.
+
+
+ the animation value
+
+
+
+
+ an animation
+
+
+
+
+
+ Gets the target @self animates.
+
+
+ the animation target
+
+
+
+
+ an animation
+
+
+
+
+
+ Gets the current value of @self.
+
+
+ the current value
+
+
+
+
+ an animation
+
+
+
+
+
+ Gets the widget @self was created for.
+
+It provides the frame clock for the animation. It's not strictly necessary
+for this widget to be same as the one being animated.
+
+The widget must be mapped in order for the animation to work. If it's not
+mapped, or if it gets unmapped during an ongoing animation, the animation
+will be automatically skipped.
+
+
+ the animation widget
+
+
+
+
+ an animation
+
+
+
+
+
+ Pauses a playing animation for @self.
+
+Does nothing if the current state of @self isn't
+[enum@Adw.AnimationState.playing].
+
+Sets [property@Animation:state] to [enum@Adw.AnimationState.paused].
+
+
+
+
+
+
+ an animation
+
+
+
+
+
+ Starts the animation for @self.
+
+If the animation is playing, paused or has been completed, restarts it from
+the beginning. This allows to easily play an animation regardless of whether
+it's already playing or not.
+
+Sets [property@Animation:state] to [enum@Adw.AnimationState.playing].
+
+The animation will be automatically skipped if [property@Animation:widget] is
+unmapped, or if [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
+
+As such, it's not guaranteed that the animation will actually run. For
+example, when using [func@GLib.idle_add] and starting an animation
+immediately afterwards, it's entirely possible that the idle callback will
+run after the animation has already finished, and not while it's playing.
+
+
+
+
+
+
+ an animation
+
+
+
+
+
+ Resets the animation for @self.
+
+Sets [property@Animation:state] to [enum@Adw.AnimationState.idle].
+
+
+
+
+
+
+ an animation
+
+
+
+
+
+ Resumes a paused animation for @self.
+
+This function must only be used if the animation has been paused with
+[method@Animation.pause].
+
+Sets [property@Animation:state] to [enum@Adw.AnimationState.playing].
+
+
+
+
+
+
+ an animation
+
+
+
+
+
+ Sets whether to skip @self when animations are globally disabled.
+
+The default behavior is to skip the animation. Set to `FALSE` to disable this
+behavior.
+
+This can be useful for cases where animation is essential, like spinners, or
+in demo applications. Most other animations should keep it enabled.
+
+See [property@Gtk.Settings:gtk-enable-animations].
+
+
+
+
+
+
+ an animation
+
+
+
+ whether to follow the global setting
+
+
+
+
+
+ Sets the target @self animates to @target.
+
+
+
+
+
+
+ an animation
+
+
+
+ an animation target
+
+
+
+
+
+ Skips the animation for @self.
+
+If the animation hasn't been started yet, is playing, or is paused, instantly
+skips the animation to the end and causes [signal@Animation::done] to be
+emitted.
+
+Sets [property@Animation:state] to [enum@Adw.AnimationState.finished].
+
+
+
+
+
+
+ an animation
+
+
+
+
+
+ Whether to skip the animation when animations are globally disabled.
+
+The default behavior is to skip the animation. Set to `FALSE` to disable
+this behavior.
+
+This can be useful for cases where animation is essential, like spinners,
+or in demo applications. Most other animations should keep it enabled.
+
+See [property@Gtk.Settings:gtk-enable-animations].
+
+
+
+ The animation state.
+
+The state indicates whether the animation is currently playing, paused,
+finished or hasn't been started yet.
+
+
+
+ The target to animate.
+
+
+
+ The current value of the animation.
+
+
+
+ The animation widget.
+
+It provides the frame clock for the animation. It's not strictly necessary
+for this widget to be same as the one being animated.
+
+The widget must be mapped in order for the animation to work. If it's not
+mapped, or if it gets unmapped during an ongoing animation, the animation
+will be automatically skipped.
+
+
+
+
+
+
+ This signal is emitted when the animation has been completed, either on its
+own or via calling [method@Animation.skip].
+
+
+
+
+
+
+
+
+
+ Describes the possible states of an [class@Animation].
+
+The state can be controlled with [method@Animation.play],
+[method@Animation.pause], [method@Animation.resume],
+[method@Animation.reset] and [method@Animation.skip].
+
+ The animation hasn't started yet.
+
+
+ The animation has been paused.
+
+
+ The animation is currently playing.
+
+
+ The animation has finished.
+
+
+
+ Represents a value [class@Animation] can animate.
+
+
+
+
+
+
+ Prototype for animation targets based on user callbacks.
+
+
+
+
+
+
+ The animation value
+
+
+
+ The user data provided when creating the target
+
+
+
+
+
+ A base class for Adwaita applications.
+
+`AdwApplication` handles library initialization by calling [func@init] in the
+default [signal@Gio.Application::startup] signal handler, in turn chaining up
+as required by [class@Gtk.Application]. Therefore, any subclass of
+`AdwApplication` should always chain up its `startup` handler before using
+any Adwaita or GTK API.
+
+## Automatic Resources
+
+`AdwApplication` will automatically load certain resources located in the
+application's resource base path (see
+[method@Gio.Application.set_resource_base_path], if they're present.
+
+### Shortcuts Dialog
+
+If there's a resource located at `shortcuts-dialog.ui` which defines an
+[class@ShortcutsDialog] with the ID `shortcuts_dialog`, `AdwApplication`
+will set up an `app.shortcuts` action that creates and presents this dialog,
+as well as a <kbd>Ctrl</kbd><kbd>?</kbd> accelerator for it.
+
+### Stylesheet
+
+If there's a resource located at `style.css`, `AdwApplication` will load
+styles from it. This can be used to add custom styles to the application.
+
+#### Additional styles (deprecated)
+
+`AdwApplication` will also load the following stylesheets conditionally:
+
+- `style-dark.css` when [property@StyleManager:dark] is `TRUE`.
+
+- `style-hc.css` when the system high contrast preference is enabled.
+
+- `style-hc-dark.css` when the system high contrast preference is enabled and
+ [property@StyleManager:dark] is `TRUE`.
+
+:::warning
+ These resources are deprecated since 1.9.
+
+ Use `style.css` with the following media queries instead:
+
+ - `prefers-color-scheme: dark` for styles used only for dark appearance.
+ - `prefers-contrast: more` for styles used only when the system high
+ contrast preference is enabled.
+
+
+
+
+ Creates a new `AdwApplication`.
+
+If `application_id` is not `NULL`, then it must be valid. See
+[func@Gio.Application.id_is_valid].
+
+If no application ID is given then some features (most notably application
+uniqueness) will be disabled.
+
+
+ the newly created `AdwApplication`
+
+
+
+
+ The application ID
+
+
+
+ The application flags
+
+
+
+
+
+ Gets the style manager for @self.
+
+This is a convenience property allowing to access `AdwStyleManager` through
+property bindings or expressions.
+
+
+ the style manager
+
+
+
+
+ an application
+
+
+
+
+
+ The style manager for this application.
+
+This is a convenience property allowing to access `AdwStyleManager` through
+property bindings or expressions.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ A freeform application window.
+
+<picture>
+ <source srcset="application-window-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="application-window.png" alt="application-window">
+</picture>
+
+`AdwApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
+the same features as [class@Window].
+
+See [class@Window] for details.
+
+Example of an `AdwApplicationWindow` UI definition:
+
+```xml
+<object class="AdwApplicationWindow">
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <!-- put your content here -->
+ </property>
+ </object>
+ </property>
+</object>
+```
+
+Using [property@Gtk.Application:menubar] is not supported and may result in
+visual glitches.
+
+
+
+
+
+
+
+
+
+
+ Creates a new `AdwApplicationWindow` for @app.
+
+
+ the newly created `AdwApplicationWindow`
+
+
+
+
+ an application instance
+
+
+
+
+
+ Adds @breakpoint to @self.
+
+
+
+
+
+
+ an application window
+
+
+
+ the breakpoint to add
+
+
+
+
+
+ Gets whether adaptive preview for @self is currently open.
+
+
+ whether adaptive preview is open.
+
+
+
+
+ an application window
+
+
+
+
+
+ Gets the content widget of @self.
+
+This method should always be used instead of [method@Gtk.Window.get_child].
+
+
+ the content widget of @self
+
+
+
+
+ an application window
+
+
+
+
+
+ Gets the current breakpoint.
+
+
+ the current breakpoint
+
+
+
+
+ an application window
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the open dialogs of @self.
+
+This can be used to keep an up-to-date view.
+
+
+ a list model for the dialogs of @self
+
+
+
+
+ an application window
+
+
+
+
+
+ Returns the currently visible dialog in @self, if there's one.
+
+
+ the visible dialog
+
+
+
+
+ an application window
+
+
+
+
+
+ Sets whether adaptive preview for @self is currently open.
+
+Adaptive preview is a debugging tool used for testing the window
+contents at specific screen sizes, simulating mobile environment.
+
+Adaptive preview can always be accessed from inspector. This function
+allows applications to open it manually.
+
+Most applications should not use this function.
+
+
+
+
+
+
+ an application window
+
+
+
+ whether to open adaptive preview
+
+
+
+
+
+ Sets the content widget of @self.
+
+This method should always be used instead of [method@Gtk.Window.set_child].
+
+
+
+
+
+
+ an application window
+
+
+
+ the content widget
+
+
+
+
+
+ Whether adaptive preview is currently open.
+
+Adaptive preview is a debugging tool used for testing the window
+contents at specific screen sizes, simulating mobile environment.
+
+Adaptive preview can always be accessed from inspector. This function
+allows applications to open it manually.
+
+Most applications should not use this property.
+
+
+
+ The content widget.
+
+This property should always be used instead of [property@Gtk.Window:child].
+
+
+
+ The current breakpoint.
+
+
+
+ The open dialogs.
+
+
+
+ The currently visible dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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` generates an avatar with the initials of the
+[property@Avatar:text] on top of a colored background.
+
+The color is picked based on the hash of the [property@Avatar:text].
+
+If [property@Avatar:show-initials] is set to `FALSE`,
+[property@Avatar:icon-name] or `adw-avatar-default-symbolic` is shown instead
+of the initials.
+
+Use [property@Avatar:custom-image] to set a custom image.
+
+## CSS nodes
+
+`AdwAvatar` has a single CSS node with name `avatar`.
+
+## Accessibility
+
+`AdwAvatar` uses the [enum@Gtk.AccessibleRole.img] role.
+
+
+
+
+
+ Creates a new `AdwAvatar`.
+
+
+ the newly created `AdwAvatar`
+
+
+
+
+ The size of the avatar
+
+
+
+ the text used to get the initials and color
+
+
+
+ whether to use initials instead of an icon as fallback
+
+
+
+
+
+ Renders @self into a [class@Gdk.Texture] at @scale_factor.
+
+This can be used to export the fallback avatar.
+
+
+ the texture
+
+
+
+
+ an avatar
+
+
+
+ The scale factor
+
+
+
+
+
+ Gets the custom image paintable.
+
+
+ the custom image
+
+
+
+
+ an avatar
+
+
+
+
+
+ Gets the name of an icon to use as a fallback.
+
+
+ the icon name
+
+
+
+
+ an avatar
+
+
+
+
+
+ Gets whether initials are used instead of an icon on the fallback avatar.
+
+
+ whether initials are used instead of an icon as fallback
+
+
+
+
+ an avatar
+
+
+
+
+
+ Gets the size of the avatar.
+
+
+ the size of the avatar
+
+
+
+
+ an avatar
+
+
+
+
+
+ Gets the text used to generate the fallback initials and color.
+
+
+ the text used to generate the fallback initials and
+ color
+
+
+
+
+ an avatar
+
+
+
+
+
+ Sets the custom image paintable.
+
+Custom image is displayed instead of initials or icon.
+
+
+
+
+
+
+ an avatar
+
+
+
+ a custom image
+
+
+
+
+
+ Sets the name of an icon to use as a fallback.
+
+If no name is set, `adw-avatar-default-symbolic` will be used.
+
+
+
+
+
+
+ an avatar
+
+
+
+ the icon name
+
+
+
+
+
+ Sets whether to use initials instead of an icon on the fallback avatar.
+
+See [property@Avatar:icon-name] for how to change the fallback icon.
+
+
+
+
+
+
+ an avatar
+
+
+
+ whether to use initials instead of an icon as fallback
+
+
+
+
+
+ Sets the size of the avatar.
+
+
+
+
+
+
+ an avatar
+
+
+
+ The size of the avatar
+
+
+
+
+
+ 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
+`FALSE`.
+
+
+
+
+
+
+ an avatar
+
+
+
+ the text used to get the initials and color
+
+
+
+
+
+ A custom image paintable.
+
+Custom image is displayed instead of initials or icon.
+
+
+
+ The name of an icon to use as a fallback.
+
+If no name is set, `adw-avatar-default-symbolic` will be used.
+
+
+
+ Whether initials are used instead of an icon on the fallback avatar.
+
+See [property@Avatar:icon-name] for how to change the fallback icon.
+
+
+
+ The size of the avatar.
+
+
+
+ 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
+`FALSE`.
+
+
+
+
+
+
+
+
+
+
+ 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
+up with Pango markup, use [property@Banner:use-markup] to enable it.
+
+The title will be shown centered or left-aligned depending on available
+space.
+
+Banners can optionally have a button with text on it, set through
+[property@Banner:button-label]. The button can be used with a `GAction`,
+or with the [signal@Banner::button-clicked] signal. The button can have
+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`.
+
+
+
+
+
+
+ Creates a new `AdwBanner`.
+
+
+ the newly created `AdwBanner`
+
+
+
+
+ the banner title
+
+
+
+
+
+ Gets the button label for @self.
+
+
+ the button label for @self
+
+
+
+
+ a banner
+
+
+
+
+
+ Gets the style class in use for the banner button.
+
+
+ the current button style
+
+
+
+
+ a banner
+
+
+
+
+
+ Gets if a banner is revealed
+
+
+ Whether a banner is revealed
+
+
+
+
+ a banner
+
+
+
+
+
+ Gets the title for @self.
+
+
+ the title for @self
+
+
+
+
+ a banner
+
+
+
+
+
+ Gets whether to use Pango markup for the banner title.
+
+
+ whether to use markup
+
+
+
+
+ a banner
+
+
+
+
+
+ Sets the button label for @self.
+
+If set to `""` or `NULL`, the button won't be shown.
+
+The button can be used with a `GAction`, or with the
+[signal@Banner::button-clicked] signal.
+
+
+
+
+
+
+ a banner
+
+
+
+ the label
+
+
+
+
+
+ Sets the style class to use for the banner button.
+
+When set to [enum@Adw.BannerButtonStyle.default], the button is grey.
+When set to [enum@Adw.BannerButtonStyle.suggested], the button uses the
+[`.suggested-action`](style-classes.html#suggested-action) appearance.
+
+<picture>
+ <source srcset="banner-suggested-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="banner-suggested.png" alt="banner with suggested button style">
+</picture>
+
+
+
+
+
+
+ a banner
+
+
+
+ a button style
+
+
+
+
+
+ Sets whether a banner should be revealed
+
+
+
+
+
+
+ a banner
+
+
+
+ whether a banner should be revealed
+
+
+
+
+
+ Sets the title for this banner.
+
+See also: [property@Banner:use-markup].
+
+
+
+
+
+
+ a banner
+
+
+
+ the title
+
+
+
+
+
+ Sets whether to use Pango markup for the banner title.
+
+See also [func@Pango.parse_markup].
+
+
+
+
+
+
+ a banner
+
+
+
+ whether to use markup
+
+
+
+
+
+ The label to show on the button.
+
+If set to `""` or `NULL`, the button won't be shown.
+
+The button can be used with a `GAction`, or with the
+[signal@Banner::button-clicked] signal.
+
+
+
+ The style class to use for the banner button.
+
+When set to [enum@Adw.BannerButtonStyle.default], the button is grey.
+When set to [enum@Adw.BannerButtonStyle.suggested], the button uses the
+[`.suggested-action`](style-classes.html#suggested-action) appearance.
+
+<picture>
+ <source srcset="banner-suggested-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="banner-suggested.png" alt="banner with suggested button style">
+</picture>
+
+
+
+ Whether the banner is currently revealed.
+
+
+
+ The title for this banner.
+
+See also: [property@Banner:use-markup].
+
+
+
+ Whether to use Pango markup for the banner title.
+
+See also [func@Pango.parse_markup].
+
+
+
+ This signal is emitted after the action button has been clicked.
+
+It can be used as an alternative to setting an action.
+
+
+
+
+
+
+ Describes the available button styles for [class@Banner].
+
+New values may be added to this enumeration over time.
+
+See [property@Banner:button-style].
+
+ The default button style.
+
+
+ A button in the suggested action style.
+
+
+
+
+
+
+
+
+
+ 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]
+property.
+
+It is useful for deriving subclasses, since it provides common code needed
+for handling a single child widget.
+
+
+
+
+
+ Creates a new `AdwBin`.
+
+
+ the new created `AdwBin`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a bin
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a bin
+
+
+
+ the child widget
+
+
+
+
+
+ The child widget of the `AdwBin`.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A bottom sheet with an optional bottom bar.
+
+<picture>
+ <source srcset="bottom-sheet-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="bottom-sheet.png" alt="bottom-sheet">
+</picture>
+
+`AdwBottomSheet` has three child widgets. [property@BottomSheet:content] is
+shown persistently. [property@BottomSheet:sheet] is displayed above it when
+it's open, and [property@BottomSheet:bottom-bar] is displayed when it's not.
+
+Bottom sheet and bottom bar are attached to the bottom edge of the widget.
+They take the full width by default, but can only take a portion of it if
+[property@BottomSheet:full-width] is set to `FALSE`. In this case,
+[property@BottomSheet:align] determines where along the bottom edge they are
+placed.
+
+Bottom bar can be hidden using the [property@BottomSheet:reveal-bottom-bar]
+property.
+
+`AdwBottomSheet` can be useful for applications such as music players, that
+want to have a persistent bottom bar that expands into a bottom sheet when
+clicked. It's meant for cases where a bottom sheet is tightly integrated into
+the UI. For more transient bottom sheets, see [class@Dialog].
+
+To open or close the bottom sheet, use the [property@BottomSheet:open]
+property.
+
+By default, the bottom sheet has an overlaid drag handle. It can be disabled
+by setting [property@BottomSheet:show-drag-handle] to `FALSE`. Note that the
+handle also controls whether the sheet can be dragged using a pointer.
+
+Bottom sheets are modal by default, meaning that the content is dimmed and
+cannot be accessed while the sheet is open. Set [property@BottomSheet:modal]
+to `FALSE` if this behavior is unwanted.
+
+To disable user interactions for opening or closing the bottom sheet (such as
+swipes or clicking the bottom bar or close button), set
+[property@BottomSheet:can-open] or [property@BottomSheet:can-close] to
+`FALSE`.
+
+In some cases, particularly when using a full-width bottom bar, it may be
+necessary to shift [property@BottomSheet:content] upwards. Use the
+[property@BottomSheet:bottom-bar-height] and
+[property@BottomSheet:sheet-height] for that.
+
+`AdwBottomSheet` is not adaptive, and for larger window sizes applications
+may want to replace it with another UI, such as a sidebar. This can be done
+using [class@MultiLayoutView].
+
+## Sizing
+
+Unlike [class@Dialog] presented as a bottom sheet, `AdwBottomSheet` just
+follows the content's natural size, and it's up to the applications to make
+sure their content provides one. For example, when using
+[class@Gtk.ScrolledWindow], make sure to set
+[property@Gtk.ScrolledWindow:propagate-natural-height] to `TRUE`.
+
+## Header Bar Integration
+
+When placed inside an `AdwBottomSheet`, [class@HeaderBar] will not show the
+title when [property@BottomSheet:show-drag-handle] is `TRUE`, regardless of
+[property@HeaderBar:show-title]. This only applies to the default title,
+titles set with [property@HeaderBar:title-widget] will still be shown.
+
+## `AdwBottomSheet` as `GtkBuildable`:
+
+The `AdwBottomSheet` implementation of the [iface@Gtk.Buildable] interface
+supports setting the sheet widget by specifying “sheet” as the “type”
+attribute of a `<child>` element, and the bottom bar by specifying
+“bottom-bar”. Specifying “content” or omitting the child type results in
+setting the content child.
+
+
+
+
+
+
+ Creates a new `AdwBottomSheet`.
+
+
+ the new created `AdwBottomSheet`
+
+
+
+
+ Gets horizontal alignment of the bottom sheet.
+
+
+ the horizontal alignment
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets the bottom bar widget for @self.
+
+
+ the bottom bar widget
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets the current bottom bar height.
+
+It can be used to shift the content upwards permanently to accommodate for
+the bottom bar.
+
+
+ the bottom bar height
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom sheet can be closed by user.
+
+
+ whether the sheet can be closed by user
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom sheet can be opened by user.
+
+
+ whether the sheet can be opened by user.
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets the content widget for @self.
+
+
+ the content widget
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom sheet takes the full width.
+
+
+ whether the sheet takes up the full width
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom sheet is modal.
+
+
+ whether the sheet is modal
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom sheet is open.
+
+
+ whether the sheet is open
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether the bottom bar is revealed.
+
+
+ whether the bottom bar is revealed
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets the bottom sheet widget for @self.
+
+
+ the sheet widget
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets the current bottom sheet height.
+
+It can be used to shift the content upwards when the bottom sheet is open.
+
+
+ the sheet height
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Gets whether to show a drag handle in the bottom sheet.
+
+
+ whether to show the drag handle
+
+
+
+
+ a bottom sheet
+
+
+
+
+
+ Sets horizontal alignment of the bottom sheet.
+
+0 means the bottom sheet is flush with the start edge, 1 means it's flush
+with the end edge. 0.5 means it's centered.
+
+Only used when [property@BottomSheet:full-width] is set to `FALSE`.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ the new alignment
+
+
+
+
+
+ Sets the bottom bar widget for @self.
+
+Shown when [property@BottomSheet:open] is `FALSE`. When open, morphs into
+the [property@BottomSheet:sheet].
+
+Bottom bar can be temporarily hidden using the
+[property@BottomSheet:reveal-bottom-bar] property.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ the bottom bar widget
+
+
+
+
+
+ Sets whether the bottom sheet can be closed by user.
+
+It can be closed via the close button, swiping down, pressing
+<kbd>Escape</kbd> or clicking the content dimming (when modal).
+
+Bottom sheet can still be closed using [property@BottomSheet:open].
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether the sheet can be closed by user
+
+
+
+
+
+ Sets whether the bottom sheet can be opened by user.
+
+It can be opened via clicking or swiping up from the bottom bar.
+
+Does nothing if [property@BottomSheet:bottom-bar] is not set.
+
+Bottom sheet can still be opened using [property@BottomSheet:open].
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether the sheet can be opened by user.
+
+
+
+
+
+ Sets the content widget for @self.
+
+It's always shown, and the bottom sheet is overlaid over it.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ the content widget
+
+
+
+
+
+ Sets whether the bottom sheet takes the full width.
+
+When full width, [property@BottomSheet:align] is ignored.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether the sheet takes up the full width
+
+
+
+
+
+ Sets whether the bottom sheet is modal.
+
+When modal, [property@BottomSheet:content] will be dimmed when the bottom
+sheet is open, and clicking it will close the bottom sheet. It also cannot be
+focused with keyboard.
+
+Otherwise, the content is accessible even when the bottom sheet is open.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether the sheet is modal
+
+
+
+
+
+ Sets whether the bottom sheet is open.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether to open the sheet
+
+
+
+
+
+ Sets whether to reveal the bottom bar.
+
+The transition will be animated.
+
+See [property@BottomSheet:bottom-bar] and
+[property@BottomSheet:bottom-bar-height].
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether to reveal the bottom bar
+
+
+
+
+
+ Sets the bottom sheet widget for @self.
+
+Only shown when [property@BottomSheet:open] is `TRUE`.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ the sheet widget
+
+
+
+
+
+ Sets whether to show a drag handle in the bottom sheet.
+
+The handle will be overlaid over [property@BottomSheet:sheet].
+
+When the handle is shown, [class@HeaderBar] will hide its default title, and
+[class@ToolbarView] will reserve space if there are no top bars.
+
+Showing drag handle also allows to swipe the bottom sheet down (and to swipe
+the bottom bar up) with a pointer, instead of just touchscreen.
+
+
+
+
+
+
+ a bottom sheet
+
+
+
+ whether to show the drag handle
+
+
+
+
+
+ Horizontal alignment of the bottom sheet.
+
+0 means the bottom sheet is flush with the start edge, 1 means it's flush
+with the end edge. 0.5 means it's centered.
+
+Only used when [property@BottomSheet:full-width] is set to `FALSE`.
+
+
+
+ The bottom bar widget.
+
+Shown when [property@BottomSheet:open] is `FALSE`. When open, morphs into
+the [property@BottomSheet:sheet].
+
+Bottom bar can be temporarily hidden using the
+[property@BottomSheet:reveal-bottom-bar] property.
+
+
+
+ The current bottom bar height.
+
+It can be used to shift the content upwards permanently to accommodate for
+the bottom bar.
+
+
+
+ Whether the bottom sheet can be closed by user.
+
+It can be closed via the close button, swiping down, pressing
+<kbd>Escape</kbd> or clicking the content dimming (when modal).
+
+Bottom sheet can still be closed using [property@BottomSheet:open].
+
+
+
+ Whether the bottom sheet can be opened by user.
+
+It can be opened via clicking or swiping up from the bottom bar.
+
+Does nothing if [property@BottomSheet:bottom-bar] is not set.
+
+Bottom sheet can still be opened using [property@BottomSheet:open].
+
+
+
+ The content widget.
+
+It's always shown, and the bottom sheet is overlaid over it.
+
+
+
+ Whether the bottom sheet takes the full width.
+
+When full width, [property@BottomSheet:align] is ignored.
+
+
+
+ Whether the bottom sheet is modal.
+
+When modal, [property@BottomSheet:content] will be dimmed when the bottom
+sheet is open, and clicking it will close the bottom sheet. It also cannot
+be focused with keyboard.
+
+Otherwise, the content is accessible even when the bottom sheet is open.
+
+
+
+ Whether the bottom sheet is open.
+
+
+
+ Whether to reveal the bottom bar.
+
+The transition will be animated.
+
+See [property@BottomSheet:bottom-bar] and
+[property@BottomSheet:bottom-bar-height].
+
+
+
+ The bottom sheet widget.
+
+Only shown when [property@BottomSheet:open] is `TRUE`.
+
+
+
+ The current bottom sheet height.
+
+It can be used to shift the content upwards when the bottom sheet is open.
+
+
+
+ Whether to overlay a drag handle in the bottom sheet.
+
+The handle will be overlaid over [property@BottomSheet:sheet].
+
+When the handle is shown, [class@HeaderBar] will hide its default title,
+and [class@ToolbarView] will reserve space if there are no top bars.
+
+Showing drag handle also allows to swipe the bottom sheet down (and to
+swipe the bottom bar up) with a pointer, instead of just touchscreen.
+
+
+
+ Emitted when the close button or shortcut is used while
+[property@Dialog:can-close] is set to `FALSE`.
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes a breakpoint for [class@Window] or [class@Dialog].
+
+Breakpoints are used to create adaptive UI, allowing to change the layout
+depending on available size.
+
+Breakpoint is a size threshold, specified by its condition, as well as one or
+more setters.
+
+Each setter has a target object, a property and a value. When a breakpoint
+is applied, each setter sets the target property on their target object to
+the specified value, and reset it back to the original value when it's
+unapplied.
+
+For more complicated scenarios, [signal@Breakpoint::apply] and
+[signal@Breakpoint::unapply] can be used instead.
+
+Breakpoints can be used within [class@Window], [class@ApplicationWindow],
+[class@Dialog] or [class@BreakpointBin].
+
+## `AdwBreakpoint` as `GtkBuildable`:
+
+`AdwBreakpoint` supports specifying its condition via the `<condition>`
+element. The contents of the element must be a string in a format accepted by
+[func@BreakpointCondition.parse].
+
+It also supports adding setters via the `<setter>` element. Each `<setter>`
+element must have the `object` attribute specifying the target object, and
+the `property` attribute specifying the property name. The contents of the
+element are used as the setter value.
+
+For `G_TYPE_OBJECT` and `G_TYPE_BOXED` derived properties, empty contents are
+treated as `NULL`.
+
+Setter values can be translated with the usual `translatable`, `context` and
+`comments` attributes.
+
+Example of an `AdwBreakpoint` UI definition:
+
+```xml
+<object class="AdwBreakpoint">
+ <condition>max-width: 400px</condition>
+ <setter object="button" property="visible">True</setter>
+ <setter object="box" property="orientation">vertical</setter>
+ <setter object="page" property="title" translatable="yes">Example</setter>
+</object>
+```
+
+
+
+ Creates a new `AdwBreakpoint` with @condition.
+
+
+ the newly created `AdwBreakpoint`
+
+
+
+
+ the condition
+
+
+
+
+
+ Adds a setter to @self.
+
+The setter will automatically set @property on @object to @value when
+applying the breakpoint, and set it back to its original value upon
+unapplying it.
+
+::: note
+ Setting properties to their original values does not work for properties
+ that have irreversible side effects. For example, changing
+ [property@Gtk.Button:label] while [property@Gtk.Button:icon-name] is set
+ will reset the icon. However, resetting the label will not set
+ `icon-name` to its original value.
+
+Use the [signal@Breakpoint::apply] and [signal@Breakpoint::unapply] signals
+for those properties instead, as follows:
+
+```c
+static void
+breakpoint_apply_cb (MyWidget *self)
+{
+ gtk_button_set_icon_name (self->button, "go-previous-symbolic");
+}
+
+static void
+breakpoint_apply_cb (MyWidget *self)
+{
+ gtk_button_set_label (self->button, _("_Back"));
+}
+
+// ...
+
+g_signal_connect_swapped (breakpoint, "apply",
+ G_CALLBACK (breakpoint_apply_cb), self);
+g_signal_connect_swapped (breakpoint, "unapply",
+ G_CALLBACK (breakpoint_unapply_cb), self);
+```
+
+
+
+
+
+
+ a breakpoint
+
+
+
+ the target object
+
+
+
+ the target property
+
+
+
+ the value to set
+
+
+
+
+
+ Adds multiple setters to @self.
+
+See [method@Breakpoint.add_setter].
+
+Example:
+
+```c
+adw_breakpoint_add_setters (breakpoint,
+ G_OBJECT (box), "orientation", GTK_ORIENTATION_VERTICAL,
+ G_OBJECT (button), "halign", GTK_ALIGN_FILL,
+ G_OBJECT (button), "valign", GTK_ALIGN_END,
+ NULL);
+```
+
+
+
+
+
+
+ a breakpoint
+
+
+
+ the first target object
+
+
+
+ the first target property
+
+
+
+ the value of the first setter, followed by a list of object, property
+ and value triplets, terminated by `NULL`
+
+
+
+
+
+ Adds multiple setters to @self.
+
+See [method@Breakpoint.add_setters].
+
+
+
+
+
+
+ a breakpoint
+
+
+
+ the first target object
+
+
+
+ the first target property
+
+
+
+ the value of the first setter, followed by a list of object, property
+ and value triplets, terminated by `NULL`
+
+
+
+
+
+ Adds @n_setters setters to @self.
+
+This is a convenience function for adding multiple setters at once.
+
+See [method@Breakpoint.add_setter].
+
+This function is meant to be used by language bindings.
+
+
+
+
+
+
+ a breakpoint
+
+
+
+ the number of setters to add
+
+
+
+ setter target object
+
+
+
+
+
+ setter target properties
+
+
+
+
+
+ setter values
+
+
+
+
+
+
+
+ Gets the condition for @self.
+
+
+ the condition
+
+
+
+
+ a breakpoint
+
+
+
+
+
+ Sets the condition for @self.
+
+
+
+
+
+
+ a breakpoint
+
+
+
+ the new condition
+
+
+
+
+
+ The breakpoint's condition.
+
+
+
+ Emitted when the breakpoint is applied.
+
+This signal is emitted after the setters have been applied.
+
+
+
+
+
+ Emitted when the breakpoint is unapplied.
+
+This signal is emitted before resetting the setter values.
+
+
+
+
+
+
+ A widget that changes layout based on available size.
+
+<picture>
+ <source srcset="breakpoint-bin-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="breakpoint-bin.png" alt="breakpoint-bin">
+</picture>
+
+`AdwBreakpointBin` provides a way to use breakpoints without [class@Window],
+[class@ApplicationWindow] or [class@Dialog]. It can be useful for limiting
+breakpoints to a single page and similar purposes. Most applications
+shouldn't need it.
+
+`AdwBreakpointBin` is similar to [class@Bin]. It has one child, set via the
+[property@BreakpointBin:child] property.
+
+When `AdwBreakpointBin` is resized, its child widget can rearrange its layout
+at specific thresholds.
+
+The thresholds and layout changes are defined via [class@Breakpoint] objects.
+They can be added using [method@BreakpointBin.add_breakpoint].
+
+Each breakpoint has a condition, specifying the bin's size and/or aspect
+ratio, and setters that automatically set object properties when that
+happens. The [signal@Breakpoint::apply] and [signal@Breakpoint::unapply] can
+be used instead for more complex scenarios.
+
+Breakpoints are only allowed to modify widgets inside the `AdwBreakpointBin`,
+but not on the `AdwBreakpointBin` itself or any other widgets.
+
+If multiple breakpoints can be used for the current size, the last one is
+always picked. The current breakpoint can be tracked using the
+[property@BreakpointBin:current-breakpoint] property.
+
+If none of the breakpoints can be used, that property will be set to `NULL`,
+and the original property values will be used instead.
+
+## Minimum Size
+
+Adding a breakpoint to `AdwBreakpointBin` will result in it having no minimum
+size. The [property@Gtk.Widget:width-request] and
+[property@Gtk.Widget:height-request] properties must always be set when using
+breakpoints, indicating the smallest size you want to support.
+
+The minimum size and breakpoint conditions must be carefully selected so that
+the child widget completely fits. If it doesn't, it will overflow and a
+warning message will be printed.
+
+When choosing minimum size, consider translations and text scale factor
+changes. Make sure to leave enough space for text labels, and enable
+ellipsizing or wrapping if they might not fit.
+
+For [class@Gtk.Label] this can be done via [property@Gtk.Label:ellipsize], or
+via [property@Gtk.Label:wrap] together with [property@Gtk.Label:wrap-mode].
+
+For buttons, use [property@Gtk.Button:can-shrink],
+[property@Gtk.MenuButton:can-shrink], [property@Adw.SplitButton:can-shrink],
+or [property@Adw.ButtonContent:can-shrink].
+
+## Example
+
+```c
+GtkWidget *bin, *child;
+AdwBreakpoint *breakpoint;
+
+bin = adw_breakpoint_bin_new ();
+gtk_widget_set_size_request (bin, 150, 150);
+
+child = gtk_label_new ("Wide");
+gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
+gtk_widget_add_css_class (child, "title-1");
+adw_breakpoint_bin_set_child (ADW_BREAKPOINT_BIN (bin), child);
+
+breakpoint = adw_breakpoint_new (adw_breakpoint_condition_parse ("max-width: 200px"));
+adw_breakpoint_add_setters (breakpoint,
+ G_OBJECT (child), "label", "Narrow",
+ NULL);
+adw_breakpoint_bin_add_breakpoint (ADW_BREAKPOINT_BIN (bin), breakpoint);
+```
+
+The bin has a single label inside it, displaying "Wide". When the bin's width
+is smaller than or equal to 200px, it changes to "Narrow".
+
+## `AdwBreakpointBin` as `GtkBuildable`
+
+`AdwBreakpointBin` allows adding `AdwBreakpoint` objects as children.
+
+Example of an `AdwBreakpointBin` UI definition:
+
+```xml
+<object class="AdwBreakpointBin">
+ <property name="width-request">150</property>
+ <property name="height-request">150</property>
+ <property name="child">
+ <object class="GtkLabel" id="child">
+ <property name="label">Wide</property>
+ <property name="ellipsize">end</property>
+ <style>
+ <class name="title-1"/>
+ </style>
+ </object>
+ </property>
+ <child>
+ <object class="AdwBreakpoint">
+ <condition>max-width: 200px</condition>
+ <setter object="child" property="label">Narrow</setter>
+ </object>
+ </child>
+</object>
+```
+
+See [class@Breakpoint] documentation for details.
+
+
+
+
+
+ Creates a new `AdwBreakpointBin`.
+
+
+ the newly created `AdwBreakpointBin`
+
+
+
+
+ Adds @breakpoint to @self.
+
+
+
+
+
+
+ a breakpoint bin
+
+
+
+ the breakpoint to add
+
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a breakpoint bin
+
+
+
+
+
+ Gets the current breakpoint.
+
+
+ the current breakpoint
+
+
+
+
+ a breakpoint bin
+
+
+
+
+
+ Removes @breakpoint from @self.
+
+
+
+
+
+
+ a breakpoint bin
+
+
+
+ a breakpoint to remove
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a breakpoint bin
+
+
+
+ the child widget
+
+
+
+
+
+ The child widget.
+
+
+
+ The current breakpoint.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes condition for an [class@Breakpoint].
+
+
+ Creates a condition that triggers when @condition_1 and @condition_2 are both
+true.
+
+
+ the newly created condition
+
+
+
+
+ first condition
+
+
+
+ second condition
+
+
+
+
+
+ Creates a condition that triggers on length changes.
+
+
+ the newly created condition
+
+
+
+
+ the length type
+
+
+
+ the length value
+
+
+
+ the length unit
+
+
+
+
+
+ Creates a condition that triggers when either @condition_1 or @condition_2 is
+true.
+
+
+ the newly created condition
+
+
+
+
+ first condition
+
+
+
+ second condition
+
+
+
+
+
+ Creates a condition that triggers on ratio changes.
+
+The ratio is represented as @width divided by @height.
+
+
+ the newly created condition
+
+
+
+
+ the ratio type
+
+
+
+ ratio width
+
+
+
+ ratio height
+
+
+
+
+
+ Copies @self.
+
+
+ a copy of @self
+
+
+
+
+ a breakpoint condition
+
+
+
+
+
+ Frees @self.
+
+
+
+
+
+
+ a breakpoint condition
+
+
+
+
+
+ Returns a textual representation of @self.
+
+The returned string can be parsed by [func@BreakpointCondition.parse].
+
+
+ A newly allocated text string
+
+
+
+
+ a breakpoint condition
+
+
+
+
+
+ Parses a condition from a string.
+
+Length conditions are specified as `<type>: <value>[<unit>]`, where:
+
+- `<type>` can be `min-width`, `max-width`, `min-height` or `max-height`
+- `<value>` is a fractional number
+- `<unit>` can be `px`, `pt` or `sp`
+
+If the unit is omitted, `px` is assumed.
+
+See [ctor@BreakpointCondition.new_length].
+
+Examples:
+
+- `min-width: 500px`
+- `min-height: 400pt`
+- `max-width: 100sp`
+- `max-height: 500`
+
+Ratio conditions are specified as `<type>: <width>[/<height>]`, where:
+
+- `<type>` can be `min-aspect-ratio` or `max-aspect-ratio`
+- `<width>` and `<height>` are integer numbers
+
+See [ctor@BreakpointCondition.new_ratio].
+
+The ratio is represented as `<width>` divided by `<height>`.
+
+If `<height>` is omitted, it's assumed to be 1.
+
+Examples:
+
+- `min-aspect-ratio: 4/3`
+- `max-aspect-ratio: 1`
+
+The logical operators `and`, `or` can be used to compose a complex condition
+as follows:
+
+- `<condition> and <condition>`: the condition is true when both
+ `<condition>`s are true, same as when using
+ [ctor@BreakpointCondition.new_and]
+- `<condition> or <condition>`: the condition is true when either of the
+ `<condition>`s is true, same as when using
+ [ctor@BreakpointCondition.new_or]
+
+Examples:
+
+- `min-width: 400px and max-aspect-ratio: 4/3`
+- `max-width: 360sp or max-width: 360px`
+
+Conditions can be further nested using parentheses, for example:
+
+- `min-width: 400px and (max-aspect-ratio: 4/3 or max-height: 400px)`
+
+If parentheses are omitted, the first operator takes priority.
+
+
+ the parsed condition
+
+
+
+
+ the string specifying the condition
+
+
+
+
+
+
+ Describes length types for [struct@BreakpointCondition].
+
+See [ctor@BreakpointCondition.new_length].
+
+New values may be added to this enumeration over time.
+
+ true if the width is greater than or
+ equal to the condition value
+
+
+ true if the width is less than or
+ equal to the condition value
+
+
+ true if the height is greater than or
+ equal to the condition value
+
+
+ true if the height is less than or
+ equal to the condition value
+
+
+
+ Describes ratio types for [struct@BreakpointCondition].
+
+See [ctor@BreakpointCondition.new_ratio].
+
+New values may be added to this enumeration over time.
+
+ true if the aspect ratio is
+ greater than or equal to the condition value
+
+
+ true if the aspect ratio is
+ less than or equal to the condition value
+
+
+
+ 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.
+
+It's intended to be used as a direct child of [class@Gtk.Button],
+[class@Gtk.MenuButton] or [class@SplitButton], when they need to have both an
+icon and a label, as follows:
+
+```xml
+<object class="GtkButton">
+ <property name="child">
+ <object class="AdwButtonContent">
+ <property name="icon-name">document-open-symbolic</property>
+ <property name="label" translatable="yes">_Open</property>
+ <property name="use-underline">True</property>
+ </object>
+ </property>
+</object>
+```
+
+`AdwButtonContent` handles style classes and connecting the mnemonic to the
+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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwButtonContent`.
+
+
+ the new created `AdwButtonContent`
+
+
+
+
+ gets whether the button can be smaller than the natural size of its contents.
+
+
+ whether the button can shrink
+
+
+
+
+ a button content
+
+
+
+
+
+ Gets the name of the displayed icon.
+
+
+ the icon name
+
+
+
+
+ a button content
+
+
+
+
+
+ Gets the displayed label.
+
+
+ the label
+
+
+
+
+ a button content
+
+
+
+
+
+ Gets whether an underline in the text indicates a mnemonic.
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+ a button content
+
+
+
+
+
+ Sets whether the button can be smaller than the natural size of its contents.
+
+If set to `TRUE`, the label will ellipsize.
+
+See [method@Gtk.Button.set_can_shrink].
+
+
+
+
+
+
+ a button content
+
+
+
+ whether the button can shrink
+
+
+
+
+
+ Sets the name of the displayed icon.
+
+If empty, the icon is not shown.
+
+
+
+
+
+
+ a button content
+
+
+
+ the new icon name
+
+
+
+
+
+ Sets the displayed label.
+
+
+
+
+
+
+ a button content
+
+
+
+ the new label
+
+
+
+
+
+ Sets whether an underline in the text indicates a mnemonic.
+
+The mnemonic can be used to activate the parent button.
+
+See [property@ButtonContent:label].
+
+
+
+
+
+
+ a button content
+
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+
+ Whether the button can be smaller than the natural size of its contents.
+
+If set to `TRUE`, the label will ellipsize.
+
+See [property@Gtk.Button:can-shrink].
+
+
+
+ The name of the displayed icon.
+
+If empty, the icon is not shown.
+
+
+
+ The displayed label.
+
+
+
+ Whether an underline in the text indicates a mnemonic.
+
+The mnemonic can be used to activate the parent button.
+
+See [property@ButtonContent:label].
+
+
+
+
+
+
+
+
+
+
+ A [class@Gtk.ListBoxRow] that looks like a button.
+
+<picture>
+ <source srcset="button-rows-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="button-rows.png" alt="button-rows">
+</picture>
+
+The `AdwButtonRow` widget has a title and two icons: before and after the
+title.
+
+It is convenient for presenting actions like "Delete" at the end of a boxed
+list.
+
+`AdwButtonRow` is always activatable.
+
+## CSS nodes
+
+`AdwButtonRow` has a main CSS node with name `row` and the style class
+`.button`.
+
+It contains the subnode `box` for its main horizontal box, which contains the
+nodes: `image.icon.start` for the start icon, `label.title` for the title,
+and `image.icon.end` for the end icon.
+
+## Style classes
+
+The [`.suggested-action`](style-classes.html#suggested-action) style class
+makes `AdwButtonRow` use accent color for its background. It should be used
+very sparingly to denote important buttons.
+
+<picture>
+ <source srcset="button-row-suggested-action-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="button-row-suggested-action.png" alt="button-row-suggested-action">
+</picture>
+
+The [`.destructive-action`](style-classes.html#destructive-action) style
+makes the row use destructive colors. It can be used to draw attention to the
+potentially damaging consequences of using it. This style acts as a warning
+to the user.
+
+<picture>
+ <source srcset="button-row-destructive-action-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="button-row-destructive-action.png" alt="button-row-destructive-action">
+</picture>
+
+
+
+
+
+
+ Creates a new `AdwButtonRow`.
+
+
+ the newly created `AdwButtonRow`
+
+
+
+
+ Gets the end icon name for @self.
+
+
+ the end icon name for @self
+
+
+
+
+ a button row
+
+
+
+
+
+ Gets the start icon name for @self.
+
+
+ the start icon name for @self
+
+
+
+
+ a button row
+
+
+
+
+
+ Sets the end icon name for @self.
+
+
+
+
+
+
+ a button row
+
+
+
+ the end icon name
+
+
+
+
+
+ Sets the start icon name for @self.
+
+
+
+
+
+
+ a button row
+
+
+
+ the start icon name
+
+
+
+
+
+ The icon name to show after the title.
+
+
+
+ The icon name to show before the title.
+
+
+
+ This signal is emitted after the row has been activated.
+
+
+
+
+
+
+
+
+
+
+
+
+ Compile-time version checking. Evaluates to `TRUE` if the version
+of Adwaita is greater than the required one.
+
+
+
+ required major version
+
+
+ required minor version
+
+
+ required micro version
+
+
+
+
+ An [class@AnimationTarget] that calls a given callback during the
+animation.
+
+
+ Creates a new `AdwAnimationTarget` that calls the given @callback during
+the animation.
+
+
+ the newly created callback target
+
+
+
+
+ the callback to call
+
+
+
+ the data to be passed to @callback
+
+
+
+ the function to be called when the
+ callback action is finalized
+
+
+
+
+
+
+
+
+
+ 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
+swipe-based navigation between them.
+
+[class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used
+to provide page indicators for `AdwCarousel`.
+
+## CSS nodes
+
+`AdwCarousel` has a single CSS node with name `carousel`.
+
+
+
+
+
+
+
+ Creates a new `AdwCarousel`.
+
+
+ the newly created `AdwCarousel`
+
+
+
+
+ Appends @child to @self.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a widget to add
+
+
+
+
+
+ Gets whether to allow swiping for more than one page at a time.
+
+
+ `TRUE` if long swipes are allowed
+
+
+
+
+ a carousel
+
+
+
+
+
+ Sets whether @self can be dragged with mouse pointer.
+
+
+ whether @self can be dragged with mouse pointer
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets whether @self will respond to scroll wheel events.
+
+
+ `TRUE` if @self will respond to scroll wheel events
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets whether @self can be navigated.
+
+
+ whether @self can be navigated
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets the number of pages in @self.
+
+
+ the number of pages in @self
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets the page at position @n.
+
+
+ the page
+
+
+
+
+ a carousel
+
+
+
+ index of the page
+
+
+
+
+
+ Gets current scroll position in @self, unitless.
+
+1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
+
+
+ the scroll position
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets the page reveal duration, in milliseconds.
+
+
+ the duration
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets the scroll animation spring parameters for @self.
+
+
+ the animation parameters
+
+
+
+
+ a carousel
+
+
+
+
+
+ Gets spacing between pages in pixels.
+
+
+ spacing between pages
+
+
+
+
+ a carousel
+
+
+
+
+
+ Inserts @child into @self at position @position.
+
+If position is -1, or larger than the number of pages,
+@child will be appended to the end.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a widget to add
+
+
+
+ the position to insert @child at
+
+
+
+
+
+ Prepends @child to @self.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a widget to add
+
+
+
+
+
+ Removes @child from @self.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a widget to remove
+
+
+
+
+
+ Moves @child into position @position.
+
+If position is -1, or larger than the number of pages, @child will be moved
+at the end.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a widget to add
+
+
+
+ the position to move @child to
+
+
+
+
+
+ Scrolls to @widget.
+
+If @animate is `TRUE`, the transition will be animated.
+
+
+
+
+
+
+ a carousel
+
+
+
+ a child of @self
+
+
+
+ whether to animate the transition
+
+
+
+
+
+ Sets whether to allow swiping for more than one page at a time.
+
+If @allow_long_swipes is `FALSE`, each swipe can only move to the adjacent
+pages.
+
+
+
+
+
+
+ a carousel
+
+
+
+ whether to allow long swipes
+
+
+
+
+
+ Sets whether @self can be dragged with mouse pointer.
+
+If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
+
+
+
+
+
+
+ a carousel
+
+
+
+ whether @self can be dragged with mouse pointer
+
+
+
+
+
+ Sets whether @self will respond to scroll wheel events.
+
+If @allow_scroll_wheel is `FALSE`, wheel events will be ignored.
+
+
+
+
+
+
+ a carousel
+
+
+
+ whether @self will respond to scroll wheel events
+
+
+
+
+
+ Sets whether @self can be navigated.
+
+This can be used to temporarily disable the carousel to only allow navigating
+it in a certain state.
+
+
+
+
+
+
+ a carousel
+
+
+
+ whether @self can be navigated
+
+
+
+
+
+ Sets the page reveal duration, in milliseconds.
+
+Reveal duration is used when animating adding or removing pages.
+
+
+
+
+
+
+ a carousel
+
+
+
+ the new reveal duration value
+
+
+
+
+
+ Sets the scroll animation spring parameters for @self.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+
+
+
+
+
+
+ a carousel
+
+
+
+ the new parameters
+
+
+
+
+
+ Sets spacing between pages in pixels.
+
+
+
+
+
+
+ a carousel
+
+
+
+ the new spacing value
+
+
+
+
+
+ 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.
+
+
+
+ Sets whether the `AdwCarousel` can be dragged with mouse pointer.
+
+If the value is `FALSE`, dragging is only available on touch.
+
+
+
+ Whether the widget will respond to scroll wheel events.
+
+If the value is `FALSE`, wheel events will be ignored.
+
+
+
+ Whether the carousel can be navigated.
+
+This can be used to temporarily disable the carousel to only allow
+navigating it in a certain state.
+
+
+
+ The number of pages in a `AdwCarousel`.
+
+
+
+ Current scrolling position, unitless.
+
+1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
+
+
+
+ Page reveal duration, in milliseconds.
+
+Reveal duration is used when animating adding or removing pages.
+
+
+
+ Scroll animation spring parameters.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+
+
+
+ Spacing between pages in pixels.
+
+
+
+ This signal is emitted after a page has been changed.
+
+It can be used to implement "infinite scrolling" by amending the pages
+after every scroll.
+
+::: note
+ An empty carousel is indicated by `(int)index == -1`.
+
+
+
+
+
+ current page
+
+
+
+
+
+
+
+
+
+
+
+
+ A dots indicator for [class@Carousel].
+
+<picture>
+ <source srcset="carousel-indicator-dots-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="carousel-indicator-dots.png" alt="carousel-indicator-dots">
+</picture>
+
+The `AdwCarouselIndicatorDots` widget shows a set of dots for each page of a
+given [class@Carousel]. The dot representing the carousel's active page is
+larger and more opaque than the others, the transition to the active and
+inactive state is gradual to match the carousel's position.
+
+See also [class@CarouselIndicatorLines].
+
+## CSS nodes
+
+`AdwCarouselIndicatorDots` has a single CSS node with name
+`carouselindicatordots`.
+
+
+
+
+
+
+ Creates a new `AdwCarouselIndicatorDots`.
+
+
+ the newly created `AdwCarouselIndicatorDots`
+
+
+
+
+ Gets the displayed carousel.
+
+
+ the displayed carousel
+
+
+
+
+ an indicator
+
+
+
+
+
+ Sets the displayed carousel.
+
+
+
+
+
+
+ an indicator
+
+
+
+ a carousel
+
+
+
+
+
+ The displayed carousel.
+
+
+
+
+
+
+
+
+
+
+ A lines indicator for [class@Carousel].
+
+<picture>
+ <source srcset="carousel-indicator-lines-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="carousel-indicator-lines.png" alt="carousel-indicator-lines">
+</picture>
+
+The `AdwCarouselIndicatorLines` widget shows a set of lines for each page of
+a given [class@Carousel]. The carousel's active page is shown as another line
+that moves between them to match the carousel's position.
+
+See also [class@CarouselIndicatorDots].
+
+## CSS nodes
+
+`AdwCarouselIndicatorLines` has a single CSS node with name
+`carouselindicatorlines`.
+
+
+
+
+
+
+ Creates a new `AdwCarouselIndicatorLines`.
+
+
+ the newly created `AdwCarouselIndicatorLines`
+
+
+
+
+ Gets the displayed carousel.
+
+
+ the displayed carousel
+
+
+
+
+ an indicator
+
+
+
+
+
+ Sets the displayed carousel.
+
+
+
+
+
+
+ an indicator
+
+
+
+ a carousel
+
+
+
+
+
+ The displayed carousel.
+
+
+
+
+
+
+
+
+
+
+ Describes title centering behavior of a [class@HeaderBar] widget.
+
+ Keep the title centered when possible
+
+
+ Keep the title centered at all cost
+
+
+
+ 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
+given maximum size. It will constrain the width if it is horizontal, or the
+height if it is vertical. The expansion of the child from its minimum to its
+maximum size is eased out for a smooth transition.
+
+If the child requires more than the requested maximum size, it will be
+allocated the minimum size it can fit in instead.
+
+`AdwClamp` can scale with the text scale factor, use the
+[property@Clamp:unit] property to enable that behavior.
+
+See also: [class@ClampLayout], [class@ClampScrollable].
+
+## CSS nodes
+
+`AdwClamp` has a single CSS node with name `clamp`.
+
+
+
+
+
+
+ Creates a new `AdwClamp`.
+
+
+ the newly created `AdwClamp`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a clamp
+
+
+
+
+
+ Gets the maximum size allocated to the child.
+
+
+ the maximum size to allocate to the child
+
+
+
+
+ a clamp
+
+
+
+
+
+ Gets the size above which the child is clamped.
+
+
+ the size above which the child is clamped
+
+
+
+
+ a clamp
+
+
+
+
+
+ Gets the length unit for maximum size and tightening threshold.
+
+
+ the length unit
+
+
+
+
+ a clamp
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a clamp
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the maximum size allocated to the child.
+
+It is the width if the clamp is horizontal, or the height if it is vertical.
+
+
+
+
+
+
+ a clamp
+
+
+
+ the maximum size
+
+
+
+
+
+ Sets the size above which the child is clamped.
+
+Starting from this size, the clamp will tighten its grip on the child, slowly
+allocating less and less of the available size up to the maximum allocated
+size. Below that threshold and below the maximum size, the child will be
+allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the child,
+the child will be allocated all the size up to the maximum. If the threshold
+is lower than the minimum size to allocate to the child, that size will be
+used as the tightening threshold.
+
+Effectively, tightening the grip on the child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+
+
+
+ a clamp
+
+
+
+ the tightening threshold
+
+
+
+
+
+ Sets the length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+ a clamp
+
+
+
+ the length unit
+
+
+
+
+
+ The child widget of the `AdwClamp`.
+
+
+
+ The maximum size allocated to the child.
+
+It is the width if the clamp is horizontal, or the height if it is vertical.
+
+
+
+ The size above which the child is clamped.
+
+Starting from this size, the clamp will tighten its grip on the child,
+slowly allocating less and less of the available size up to the maximum
+allocated size. Below that threshold and below the maximum size, the child
+will be allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the child,
+the child will be allocated all the size up to the maximum.
+If the threshold is lower than the minimum size to allocate to the child,
+that size will be used as the tightening threshold.
+
+Effectively, tightening the grip on the child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+ The length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+
+
+
+
+ A layout manager constraining its children 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>
+
+`AdwClampLayout` constraints the size of the widgets it contains to a given
+maximum size. It will constrain the width if it is horizontal, or the height
+if it is vertical. The expansion of the children from their minimum to their
+maximum size is eased out for a smooth transition.
+
+If a child requires more than the requested maximum size, it will be
+allocated the minimum size it can fit in instead.
+
+`AdwClampLayout` can scale with the text scale factor, use the
+[property@ClampLayout:unit] property to enable that behavior.
+
+See also: [class@Clamp], [class@ClampScrollable].
+
+
+
+ Creates a new `AdwClampLayout`.
+
+
+ the newly created `AdwClampLayout`
+
+
+
+
+ Gets the maximum size allocated to the children.
+
+
+ the maximum size to allocate to the children
+
+
+
+
+ a clamp layout
+
+
+
+
+
+ Gets the size above which the children are clamped.
+
+
+ the size above which the children are clamped
+
+
+
+
+ a clamp layout
+
+
+
+
+
+ Gets the length unit for maximum size and tightening threshold.
+
+
+ the length unit
+
+
+
+
+ a clamp layout
+
+
+
+
+
+ Sets the maximum size allocated to the children.
+
+It is the width if the layout is horizontal, or the height if it is vertical.
+
+
+
+
+
+
+ a clamp layout
+
+
+
+ the maximum size
+
+
+
+
+
+ Sets the size above which the children are clamped.
+
+Starting from this size, the layout will tighten its grip on the children,
+slowly allocating less and less of the available size up to the maximum
+allocated size. Below that threshold and below the maximum size, the children
+will be allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the
+children, they will be allocated the whole size up to the maximum. If the
+threshold is lower than the minimum size to allocate to the children, that
+size will be used as the tightening threshold.
+
+Effectively, tightening the grip on a child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+
+
+
+ a clamp layout
+
+
+
+ the tightening threshold
+
+
+
+
+
+ Sets the length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+ a clamp layout
+
+
+
+ the length unit
+
+
+
+
+
+ The maximum size to allocate to the children.
+
+It is the width if the layout is horizontal, or the height if it is
+vertical.
+
+
+
+ The size above which the children are clamped.
+
+Starting from this size, the layout will tighten its grip on the children,
+slowly allocating less and less of the available size up to the maximum
+allocated size. Below that threshold and below the maximum size, the
+children will be allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the
+children, they will be allocated the whole size up to the maximum. If the
+threshold is lower than the minimum size to allocate to the children, that
+size will be used as the tightening threshold.
+
+Effectively, tightening the grip on a child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+ The length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+
+
+
+
+ A scrollable [class@Clamp].
+
+`AdwClampScrollable` is a variant of [class@Clamp] that implements the
+[iface@Gtk.Scrollable] interface.
+
+The primary use case for `AdwClampScrollable` is clamping
+[class@Gtk.ListView].
+
+See also: [class@ClampLayout].
+
+
+
+
+
+
+
+ Creates a new `AdwClampScrollable`.
+
+
+ the newly created `AdwClampScrollable`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a clamp scrollable
+
+
+
+
+
+ Gets the maximum size allocated to the child.
+
+
+ the maximum size to allocate to the child
+
+
+
+
+ a clamp scrollable
+
+
+
+
+
+ Gets the size above which the child is clamped.
+
+
+ the size above which the child is clamped
+
+
+
+
+ a clamp scrollable
+
+
+
+
+
+ Gets the length unit for maximum size and tightening threshold.
+
+
+ the length unit
+
+
+
+
+ a clamp scrollable
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a clamp scrollable
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the maximum size allocated to the child.
+
+It is the width if the clamp is horizontal, or the height if it is vertical.
+
+
+
+
+
+
+ a clamp scrollable
+
+
+
+ the maximum size
+
+
+
+
+
+ Sets the size above which the child is clamped.
+
+Starting from this size, the clamp will tighten its grip on the child, slowly
+allocating less and less of the available size up to the maximum allocated
+size. Below that threshold and below the maximum width, the child will be
+allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the child,
+the child will be allocated all the width up to the maximum. If the threshold
+is lower than the minimum size to allocate to the child, that size will be
+used as the tightening threshold.
+
+Effectively, tightening the grip on the child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+
+
+
+ a clamp scrollable
+
+
+
+ the tightening threshold
+
+
+
+
+
+ Sets the length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+ a clamp
+
+
+
+ the length unit
+
+
+
+
+
+ The child widget of the `AdwClampScrollable`.
+
+
+
+ The maximum size allocated to the child.
+
+It is the width if the clamp is horizontal, or the height if it is vertical.
+
+
+
+ The size above which the child is clamped.
+
+Starting from this size, the clamp will tighten its grip on the child,
+slowly allocating less and less of the available size up to the maximum
+allocated size. Below that threshold and below the maximum width, the child
+will be allocated all the available size.
+
+If the threshold is greater than the maximum size to allocate to the child,
+the child will be allocated all the width up to the maximum.
+If the threshold is lower than the minimum size to allocate to the child,
+that size will be used as the tightening threshold.
+
+Effectively, tightening the grip on the child before it reaches its maximum
+size makes transitions to and from the maximum size smoother when resizing.
+
+
+
+ The length unit for maximum size and tightening threshold.
+
+Allows the sizes to vary depending on the text scale factor.
+
+
+
+
+
+
+
+
+
+
+ Application color schemes for [property@StyleManager:color-scheme].
+
+ Inherit the parent color-scheme. When set on the
+ `AdwStyleManager` returned by [func@StyleManager.get_default], it's
+ equivalent to [enum@Adw.ColorScheme.prefer-light].
+
+
+ Always use light appearance.
+
+
+ Use light appearance unless the system
+ prefers dark colors.
+
+
+ Use dark appearance unless the system prefers
+ prefers light colors.
+
+
+ Always use dark appearance.
+
+
+
+ A [class@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
+choices. The row displays the selected choice. When activated, the row
+displays a popover which allows the user to make a new choice.
+
+Example of an `AdwComboRow` UI definition:
+```xml
+<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]
+properties can be used to keep track of the selected item and react to their
+changes.
+
+`AdwComboRow` mirrors [class@Gtk.DropDown], see that widget for details.
+
+`AdwComboRow` is [property@Gtk.ListBoxRow: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 [enum@Gtk.AccessibleRole.combo-box] role.
+
+
+
+
+
+
+ Creates a new `AdwComboRow`.
+
+
+ the newly created `AdwComboRow`
+
+
+
+
+ Gets whether search is enabled.
+
+If set to `TRUE`, a search entry will be shown in the popup that
+allows to search for items in the list.
+
+Search requires [property@ComboRow:expression] to be set.
+
+
+ whether the popup includes a search entry
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the expression used to obtain strings from items.
+
+
+ the expression used to obtain strings from items
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the factory for populating list items.
+
+
+ the factory in use
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the factory that's currently used to create header widgets for the popup.
+
+
+ The factory in use
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the factory for populating list items in the popup.
+
+
+ the factory in use
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the model that provides the displayed items.
+
+
+ The model in use
+
+
+
+
+ a combo row
+
+
+
+
+
+ Returns the match mode that the search filter is using.
+
+
+ the match mode of the search filter
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the position of the selected item.
+
+
+ the position of the selected item, or
+ [const@Gtk.INVALID_LIST_POSITION] if no item is selected
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets the selected item.
+
+
+ the selected item
+
+
+
+
+ a combo row
+
+
+
+
+
+ Gets whether to use the current value as the subtitle.
+
+
+ whether to use the current value as the subtitle
+
+
+
+
+ a combo row
+
+
+
+
+
+ Sets whether to enable search.
+
+If set to `TRUE`, a search entry will be shown in the popup that
+allows to search for items in the list.
+
+Search requires [property@ComboRow:expression] to be set.
+
+
+
+
+
+
+ a combo row
+
+
+
+ whether to enable search
+
+
+
+
+
+ Sets the expression used to obtain strings from items.
+
+The expression must have a value type of `G_TYPE_STRING`.
+
+It's used to bind strings to labels produced by the default factory if
+[property@ComboRow:factory] is not set, or when
+[property@ComboRow:use-subtitle] is set to `TRUE`.
+
+
+
+
+
+
+ a combo row
+
+
+
+ an expression
+
+
+
+
+
+ Sets the factory for populating list items.
+
+This factory is always used for the item in the row. It is also used for
+items in the popup unless [property@ComboRow:list-factory] is set.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the factory to use
+
+
+
+
+
+ Sets the factory to use for creating header widgets for the popup.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the factory to use
+
+
+
+
+
+ Sets the factory for populating list items in the popup.
+
+If this is not set, [property@ComboRow:factory] is used.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the factory to use
+
+
+
+
+
+ Sets the model that provides the displayed items.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the model to use
+
+
+
+
+
+ Sets the match mode for the search filter.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the new match mode
+
+
+
+
+
+ Selects the item at the given position.
+
+
+
+
+
+
+ a combo row
+
+
+
+ the position of the item to select, or
+ [const@Gtk.INVALID_LIST_POSITION]
+
+
+
+
+
+ Sets 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
+name conversion expression with [property@ComboRow:expression].
+
+If set to `TRUE`, you should not access [property@ActionRow:subtitle].
+
+The subtitle is interpreted as Pango markup if
+[property@PreferencesRow:use-markup] is set to `TRUE`.
+
+
+
+
+
+
+ a combo row
+
+
+
+ whether to use the current value as the subtitle
+
+
+
+
+
+ Whether to show a search entry in the popup.
+
+If set to `TRUE`, a search entry will be shown in the popup that
+allows to search for items in the list.
+
+Search requires [property@ComboRow:expression] to be set.
+
+
+
+ An expression used to obtain strings from items.
+
+The expression must have a value type of `G_TYPE_STRING`.
+
+It's used to bind strings to labels produced by the default factory if
+[property@ComboRow:factory] is not set, or when
+[property@ComboRow:use-subtitle] is set to `TRUE`.
+
+
+
+ Factory for populating list items.
+
+This factory is always used for the item in the row. It is also used for
+items in the popup unless [property@ComboRow:list-factory] is set.
+
+
+
+ The factory for creating header widgets for the popup.
+
+
+
+ The factory for populating list items in the popup.
+
+If this is not set, [property@ComboRow:factory] is used.
+
+
+
+ The model that provides the displayed items.
+
+
+
+ The match mode for the search filter.
+
+
+
+ The position of the selected item.
+
+If no item is selected, the property has the value
+[const@Gtk.INVALID_LIST_POSITION]
+
+
+
+ The selected item.
+
+
+
+ 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
+name conversion expression with [property@ComboRow:expression].
+
+If set to `TRUE`, you should not access [property@ActionRow:subtitle].
+
+The subtitle is interpreted as Pango markup if
+[property@PreferencesRow:use-markup] is set to `TRUE`.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ A binding between a [class@GObject.Object] property and a CSS class on a
+[class@Gtk.Widget].
+
+To create a binding, use [func@Adw.bind_property_to_css_class].
+
+Whenever the source property changes, a CSS class is toggled on the target
+object; for instance, given the following binding:
+
+```c
+adw_bind_property_to_css_class (source, "property",
+ target, "css-class",
+ G_BINDING_DEFAULT);
+```
+
+when `property` is a boolean property, `css-class` will be set every time the
+value of `property` is changed to `TRUE`, and vice versa.
+
+Using [func@Adw.bind_property_to_css_class_full], it's possible to define a
+custom mapping between a property and the boolean enable state, that is,
+defining a mapping between any arbitrary property type and a boolean type.
+This allows for any property, not just boolean properties, to be bound to a
+CSS class; for instance, the following binding
+
+```c
+adw_bind_property_to_css_class_full (source, "property",
+ target, "css-class",
+ G_BINDING_DEFAULT,
+ int_to_bool,
+ bool_to_int,
+ NULL, NULL);
+```
+
+will map an integer-typed `property` to a boolean value, and use the value of
+that boolean to toggle the CSS class.
+
+It is possible to invert the type of a boolean without using a custom map
+function by using the [flags@GObject.BindingFlags.INVERT_BOOLEAN] flag.
+
+A binding will be removed, and any allocated resources freed, whenever either
+one of the source or target instances are finalized, or when the binding
+instances loses its last reference.
+
+Languages with garbage collection, or developers wanting to fully control the
+lifecycle of a binding may use [method@CssClassBinding.unbind] to expliticly
+release a binding, instead of relying on the last reference on the binding,
+source, and target instances to drop.
+
+
+ Gets the flags passed when constructing the binding.
+
+
+ the binding flags
+
+
+
+
+ a binding
+
+
+
+
+
+ Gets the object instance passed as the source of the binding.
+
+While a binding can outlive the source as the binding doesn't hold a strong
+reference to the source, the binding will try to finalize itself when it does
+not have a valid source. If the source, however, is destroyed before the
+binding is fully finalized then this function will return `NULL`.
+
+
+ the source, or `NULL` if it doesn't
+ exist anymore
+
+
+
+
+ a binding
+
+
+
+
+
+ Gets the name of the property bound from [property@CssClassBinding:source].
+
+
+ the name of the source property
+
+
+
+
+ a binding
+
+
+
+
+
+ Gets the widget instance passed as the target of the binding.
+
+While a binding can outlive the target as the binding doesn't hold a strong
+reference to the target, the binding will try to finalize itself when it does
+not have a valid target. If the target, however, is destroyed before the
+binding is fully finalized then this function will return `NULL`.
+
+
+ the target, or `NULL` if it doesn't
+ exist anymore
+
+
+
+
+ a binding
+
+
+
+
+
+ Gets the CSS class to toggle on [property@CssClassBinding:target].
+
+
+ the name of the target CSS class
+
+
+
+
+ a binding
+
+
+
+
+
+ Explicitly releases the binding between the source and the target.
+
+This function will release the reference that is being held on @self if the
+binding is still bound; if you want to hold on to the binding instance after
+calling this method, you will need to manually hold a reference to it.
+
+Note that this function does not take ownership of @self, it only unrefs the
+instance that was initially created by [func@Adw.bind_property_to_css_class]
+and is owned by the binding.
+
+
+
+
+
+
+ a binding
+
+
+
+
+
+ Flags to be used to control the binding.
+
+
+
+ The object to use as the source of the CSS class binding.
+
+
+
+ The name of the property that shoudl be used as the source of the binding.
+
+
+
+ The widget to use as the target of the CSS class binding.
+
+
+
+ The name of the CSS class that should be toggled on the target object.
+
+
+
+
+
+
+
+
+
+
+ Prototype for mapping properties to CSS classes for a [class@CssClassBinding].
+
+
+ whether to apply the target CSS class
+
+
+
+
+ The binding class
+
+
+
+ the source property value
+
+
+
+ The user data provided when creating the binding
+
+
+
+
+
+ Prototype for mapping CSS classes to properties for a [class@CssClassBinding].
+
+
+
+
+
+
+ The binding class
+
+
+
+ whether the target CSS class is applied
+
+
+
+ The value to use for the source property
+
+
+
+ The user data provided when creating the binding
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicates an [class@Animation] with an infinite duration.
+
+This value is mostly used internally.
+
+
+
+
+ An adaptive dialog container.
+
+<picture>
+ <source srcset="dialog-floating-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="dialog-floating.png" alt="dialog-floating">
+</picture>
+<picture>
+ <source srcset="dialog-bottom-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="dialog-bottom.png" alt="dialog-bottom">
+</picture>
+
+`AdwDialog` is similar to a window, but is shown within another window. It
+can be used with [class@Window] and [class@ApplicationWindow], use
+[method@Dialog.present] to show it.
+
+`AdwDialog` is not resizable. Use the [property@Dialog:content-width] and
+[property@Dialog:content-height] properties to set its size, or set
+[property@Dialog:follows-content-size] to `TRUE` to make the dialog track the
+content's size as it changes. `AdwDialog` can never be larger than its parent
+window.
+
+`AdwDialog` can be presented as a centered floating window or a bottom sheet.
+By default it's automatic depending on the available size.
+[property@Dialog:presentation-mode] can be used to change that.
+
+`AdwDialog` can be closed via [method@Dialog.close].
+
+When presented as a bottom sheet, `AdwDialog` can also be closed via swiping
+it down.
+
+The [property@Dialog:can-close] can be used to prevent closing. In that case,
+[signal@Dialog::close-attempt] gets emitted instead.
+
+Use [method@Dialog.force_close] to close the dialog even when `can-close` is set to
+`FALSE`.
+
+`AdwDialog` is transient and doesn't integrate with the window below it, for
+example it's not possible to collapse it into a bottom bar. See
+[class@BottomSheet] for persistent and more tightly integrated bottom sheets.
+
+## Header Bar Integration
+
+When placed inside an `AdwDialog`, [class@HeaderBar] 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.
+
+## Breakpoints
+
+`AdwDialog` can be used with [class@Breakpoint] the same way as
+[class@BreakpointBin]. Refer to that widget's documentation for details.
+
+Like `AdwBreakpointBin`, if breakpoints are used, `AdwDialog` doesn't have a
+minimum size, and [property@Gtk.Widget:width-request] and
+[property@Gtk.Widget:height-request] properties must be set manually.
+
+
+
+
+
+
+ Creates a new `AdwDialog`.
+
+
+ the new created `AdwDialog`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adds @breakpoint to @self.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the breakpoint to add
+
+
+
+
+
+ Attempts to close @self.
+
+If the [property@Dialog:can-close] property is set to `FALSE`, the
+[signal@Dialog::close-attempt] signal is emitted.
+
+See also: [method@Dialog.force_close].
+
+
+ whether @self was successfully closed
+
+
+
+
+ a dialog
+
+
+
+
+
+ Closes @self.
+
+Unlike [method@Dialog.close], it succeeds even if [property@Dialog:can-close]
+is set to `FALSE`.
+
+
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets whether @self can be closed.
+
+
+ whether the dialog can be closed
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the height of the dialog's contents.
+
+
+ the content height
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the width of the dialog's contents.
+
+
+ the content width
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the current breakpoint.
+
+
+ the current breakpoint
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the default widget for @self.
+
+
+ the default widget
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the focus widget for @self.
+
+
+ the focus widget
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets whether to size content of @self automatically.
+
+
+ whether to size content automatically
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets presentation mode for @self.
+
+
+ the presentation mode
+
+
+
+
+ a dialog
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a dialog
+
+
+
+
+
+ Presents @self within @parent's window.
+
+If @self is already shown, raises it to the top instead.
+
+If the window is an [class@Window] or [class@ApplicationWindow], the dialog
+will be shown within it. Otherwise, it will be a separate window.
+
+
+
+
+
+
+ a dialog
+
+
+
+ a widget within the toplevel
+
+
+
+
+
+ Sets whether @self can be closed.
+
+If set to `FALSE`, the close button, shortcuts and
+[method@Dialog.close] will result in [signal@Dialog::close-attempt] being
+emitted instead, and bottom sheet close swipe will be disabled.
+[method@Dialog.force_close] still works.
+
+
+
+
+
+
+ a dialog
+
+
+
+ whether to allow closing
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the height of the dialog's contents.
+
+Set it to -1 to reset it to the content's natural height.
+
+See also: [property@Gtk.Window:default-height]
+
+
+
+
+
+
+ a dialog
+
+
+
+ the content height
+
+
+
+
+
+ Sets the width of the dialog's contents.
+
+Set it to -1 to reset it to the content's natural width.
+
+See also: [property@Gtk.Window:default-width]
+
+
+
+
+
+
+ a dialog
+
+
+
+ the content width
+
+
+
+
+
+ Sets the default widget for @self.
+
+It's activated when the user presses Enter.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the default widget
+
+
+
+
+
+ Sets the focus widget for @self.
+
+If @focus is not the current focus widget, and is focusable, sets it as the
+focus widget for the dialog.
+
+If focus is `NULL`, unsets the focus widget for this dialog. To set the focus
+to a particular widget in the dialog, it is usually more convenient to use
+[method@Gtk.Widget.grab_focus] instead of this function.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the focus widget
+
+
+
+
+
+ Sets whether to size content of @self automatically.
+
+If set to `TRUE`, always use the content's natural size instead of
+[property@Dialog:content-width] and [property@Dialog:content-height]. If
+the content resizes, the dialog will immediately resize as well.
+
+See also: [property@Gtk.Window:resizable]
+
+
+
+
+
+
+ a dialog
+
+
+
+ whether to size content automatically
+
+
+
+
+
+ Sets presentation mode for @self.
+
+When set to [enum@Adw.DialogPresentationMode.auto], the dialog appears as a
+bottom sheet when the following condition is met:
+`max-width: 450px or max-height: 360px`, and as a floating window otherwise.
+
+Set it to [enum@Adw.DialogPresentationMode.floating] or
+[enum@Adw.DialogPresentationMode.bottom-sheet] to always present it a
+floating window or a bottom sheet respectively, regardless of available size.
+
+Presentation mode does nothing for dialogs presented as a window.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the new presentation mode
+
+
+
+
+
+ Sets the title of @self.
+
+
+
+
+
+
+ a dialog
+
+
+
+ the new title
+
+
+
+
+
+ Whether the dialog can be closed.
+
+If set to `FALSE`, the close button, shortcuts and
+[method@Dialog.close] will result in [signal@Dialog::close-attempt] being
+emitted instead, and bottom sheet close swipe will be disabled.
+[method@Dialog.force_close] still works.
+
+
+
+ The child widget of the `AdwDialog`.
+
+
+
+ The height of the dialog's contents.
+
+Set it to -1 to reset it to the content's natural height.
+
+See also: [property@Gtk.Window:default-height]
+
+
+
+ The width of the dialog's contents.
+
+Set it to -1 to reset it to the content's natural width.
+
+See also: [property@Gtk.Window:default-width]
+
+
+
+ The current breakpoint.
+
+
+
+ The default widget.
+
+It's activated when the user presses Enter.
+
+
+
+ The focus widget.
+
+
+
+ Whether to size content automatically.
+
+If set to `TRUE`, always use the content's natural size instead of
+[property@Dialog:content-width] and [property@Dialog:content-height]. If
+the content resizes, the dialog will immediately resize as well.
+
+See also: [property@Gtk.Window:resizable]
+
+
+
+ The dialog's presentation mode.
+
+When set to [enum@Adw.DialogPresentationMode.auto], the dialog appears as a
+bottom sheet when the following condition is met:
+`max-width: 450px or max-height: 360px`, and as a floating window otherwise.
+
+Set it to [enum@Adw.DialogPresentationMode.floating] or
+[enum@Adw.DialogPresentationMode.bottom-sheet] to always present it a
+floating window or a bottom sheet respectively, regardless of available
+size.
+
+Presentation mode does nothing for dialogs presented as a window.
+
+
+
+ The title of the dialog.
+
+
+
+
+
+
+ Emitted when the close button or shortcut is used, or
+[method@Dialog.close] is called while [property@Dialog:can-close] is set to
+`FALSE`.
+
+
+
+
+
+ Emitted when the dialog is successfully closed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes the available presentation modes for [class@Dialog].
+
+New values may be added to this enumeration over time.
+
+See [property@Dialog:presentation-mode].
+
+ Switch between [enum@Adw.DialogPresentationMode.floating]
+ and [enum@Adw.DialogPresentationMode.bottom-sheet] depending on available
+ size.
+
+
+ Present dialog as a centered floating window.
+
+
+ Present dialog as a bottom sheet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes the available easing functions for use with
+[class@TimedAnimation].
+
+New values may be added to this enumeration over time.
+
+ Linear tweening.
+
+
+ Quadratic tweening.
+
+
+ Quadratic tweening, inverse of
+ [enum@Adw.Easing.ease-in-quad].
+
+
+ Quadratic tweening, combining
+ [enum@Adw.Easing.ease-in-quad] and [enum@Adw.Easing.ease-out-quad].
+
+
+ Cubic tweening.
+
+
+ Cubic tweening, inverse of
+ [enum@Adw.Easing.ease-in-cubic].
+
+
+ Cubic tweening, combining
+ [enum@Adw.Easing.ease-in-cubic] and [enum@Adw.Easing.ease-out-cubic].
+
+
+ Quartic tweening.
+
+
+ Quartic tweening, inverse of
+ [enum@Adw.Easing.ease-in-quart].
+
+
+ Quartic tweening, combining
+ [enum@Adw.Easing.ease-in-quart] and [enum@Adw.Easing.ease-out-quart].
+
+
+ Quintic tweening.
+
+
+ Quintic tweening, inverse of
+ [enum@Adw.Easing.ease-in-quint].
+
+
+ Quintic tweening, combining
+ [enum@Adw.Easing.ease-in-quint] and [enum@Adw.Easing.ease-out-quint].
+
+
+ Sine wave tweening.
+
+
+ Sine wave tweening, inverse of
+ [enum@Adw.Easing.ease-in-sine].
+
+
+ Sine wave tweening, combining
+ [enum@Adw.Easing.ease-in-sine] and [enum@Adw.Easing.ease-out-sine].
+
+
+ Exponential tweening.
+
+
+ Exponential tweening, inverse of
+ [enum@Adw.Easing.ease-in-expo].
+
+
+ Exponential tweening, combining
+ [enum@Adw.Easing.ease-in-expo] and [enum@Adw.Easing.ease-out-expo].
+
+
+ Circular tweening.
+
+
+ Circular tweening, inverse of
+ [enum@Adw.Easing.ease-in-circ].
+
+
+ Circular tweening, combining
+ [enum@Adw.Easing.ease-in-circ] and [enum@Adw.Easing.ease-out-circ].
+
+
+ Elastic tweening, with offshoot on start.
+
+
+ Elastic tweening, with offshoot on end, inverse of
+ [enum@Adw.Easing.ease-in-elastic].
+
+
+ Elastic tweening, with offshoot on both ends,
+ combining [enum@Adw.Easing.ease-in-elastic] and
+ [enum@Adw.Easing.ease-out-elastic].
+
+
+ Overshooting cubic tweening, with backtracking on start.
+
+
+ Overshooting cubic tweening, with backtracking on end,
+ inverse of [enum@Adw.Easing.ease-in-back].
+
+
+ Overshooting cubic tweening, with backtracking on both
+ ends, combining [enum@Adw.Easing.ease-in-back] and
+ [enum@Adw.Easing.ease-out-back].
+
+
+ Exponentially decaying parabolic (bounce) tweening,
+ on start.
+
+
+ Exponentially decaying parabolic (bounce) tweening,
+ with bounce on end, inverse of [enum@Adw.Easing.ease-in-bounce].
+
+
+ Exponentially decaying parabolic (bounce) tweening,
+ with bounce on both ends, combining [enum@Adw.Easing.ease-in-bounce] and
+ [enum@Adw.Easing.ease-out-bounce].
+
+
+ Cubic bezier tweening, with control points in (0.25, 0.1) and (0.25, 1.0).
+
+Increases in velocity towards the middle of the animation, slowing back down
+at the end.
+
+
+ Cubic bezier tweening, with control points in (0.42, 0.0) and (1.0, 1.0).
+
+Starts off slowly, with the speed of the animation increasing until complete.
+
+
+ Cubic bezier tweening, with control points in (0.0, 0.0) and (0.58, 1.0).
+
+Starts quickly, slowing down the animation until complete.
+
+
+ Cubic bezier tweening, with control points in (0.42, 0.0) and (0.58, 1.0).
+
+Starts off slowly, speeds up in the middle, and then slows down again.
+
+
+ Computes easing with @easing for @value.
+
+@value should generally be in the [0, 1] range.
+
+
+ the easing for @value
+
+
+
+
+ an easing value
+
+
+
+ a value to ease
+
+
+
+
+
+
+ A [class@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
+indicating that it's editable and can receive additional widgets before or
+after the editable part.
+
+If [property@EntryRow:show-apply-button] is set to `TRUE`, `AdwEntryRow` can
+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
+activity.
+
+`AdwEntryRow` provides only minimal API and should be used with the
+[iface@Gtk.Editable] API.
+
+See also [class@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.
+
+
+
+
+
+
+
+ Creates a new `AdwEntryRow`.
+
+
+ the newly created `AdwEntryRow`
+
+
+
+
+ Adds a prefix widget to @self.
+
+
+
+
+
+
+ an entry row
+
+
+
+ a widget
+
+
+
+
+
+ Adds a suffix widget to @self.
+
+
+
+
+
+
+ an entry row
+
+
+
+ a widget
+
+
+
+
+
+ Gets whether activating the embedded entry can activate the default widget.
+
+
+ whether to activate the default widget
+
+
+
+
+ an entry row
+
+
+
+
+
+ Gets Pango attributes applied to the text of the embedded entry.
+
+
+ the list of attributes
+
+
+
+
+ an entry row
+
+
+
+
+
+ Gets whether to suggest emoji replacements on @self.
+
+
+ whether or not emoji completion is enabled
+
+
+
+
+ an entry row
+
+
+
+
+
+ Gets the additional input hints of @self.
+
+
+ The input hints
+
+
+
+
+ an entry row
+
+
+
+
+
+ Gets the input purpose of @self.
+
+
+ the input purpose
+
+
+
+
+ an entry row
+
+
+
+
+
+ Retrieves the maximum length of the entry.
+
+
+ The maximum length of the entry.
+
+
+
+
+ an entry row
+
+
+
+
+
+ Gets whether @self can show the apply button.
+
+
+ whether to show the apply button
+
+
+
+
+ an entry row
+
+
+
+
+
+ Retrieves the current length of the text in @self.
+
+
+ The current number of characters in @self, or 0 if there are none.
+
+
+
+
+ an entry row
+
+
+
+
+
+ Causes @self to have keyboard focus without selecting the text.
+
+See [method@Gtk.Text.grab_focus_without_selecting] for more information.
+
+
+ whether the focus is now inside @self
+
+
+
+
+ an entry row
+
+
+
+
+
+ Removes a child from @self.
+
+
+
+
+
+
+ an entry row
+
+
+
+ the child to be removed
+
+
+
+
+
+ Sets whether activating the embedded entry can activate the default widget.
+
+
+
+
+
+
+ an entry row
+
+
+
+ whether to activate the default widget
+
+
+
+
+
+ Sets Pango attributes to apply to the text of the embedded entry.
+
+The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
+the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
+
+
+
+
+
+
+ an entry row
+
+
+
+ a list of attributes
+
+
+
+
+
+ Sets whether to suggest emoji replacements on @self.
+
+Emoji replacement is done with :-delimited names, like `:heart:`.
+
+
+
+
+
+
+ an entry row
+
+
+
+ Whether emoji completion should be enabled or not
+
+
+
+
+
+ Set additional input hints for @self.
+
+Input hints allow input methods to fine-tune their behavior.
+
+See also: [property@AdwEntryRow:input-purpose]
+
+
+
+
+
+
+ an entry row
+
+
+
+ the hints
+
+
+
+
+
+ Sets the input purpose of @self.
+
+The input purpose can be used by input methods to adjust their behavior.
+
+
+
+
+
+
+ an entry row
+
+
+
+ the purpose
+
+
+
+
+
+ Sets the maximum length of the entry.
+
+
+
+
+
+
+ an entry row
+
+
+
+ maximum length of the entry
+
+
+
+
+
+ Sets whether @self can show the 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
+emit the [signal@EntryRow::apply] signal.
+
+This is useful if changing the entry contents can trigger an expensive
+operation, e.g. network activity, to avoid triggering it after typing every
+character.
+
+
+
+
+
+
+ an entry row
+
+
+
+ whether to show the apply button
+
+
+
+
+
+ Whether activating the embedded entry can activate the default widget.
+
+
+
+ A list of Pango attributes to apply to the text of the embedded entry.
+
+The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
+the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
+
+
+
+ Whether to suggest emoji replacements on the entry row.
+
+Emoji replacement is done with :-delimited names, like `:heart:`.
+
+
+
+ Additional input hints for the entry row.
+
+Input hints allow input methods to fine-tune their behavior.
+
+See also: [property@Adw.EntryRow:input-purpose]
+
+
+
+ The input purpose of the entry row.
+
+The input purpose can be used by input methods to adjust their behavior.
+
+
+
+ Maximum number of characters for the entry.
+
+
+
+ Whether to show the 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
+emit the [signal@EntryRow::apply] signal.
+
+This is useful if changing the entry contents can trigger an expensive
+operation, e.g. network activity, to avoid triggering it after typing every
+character.
+
+
+
+ The length of the text in the entry row.
+
+
+
+
+
+
+ Emitted when the apply button is pressed.
+
+See [property@EntryRow:show-apply-button].
+
+
+
+
+
+ Emitted when the embedded entry is activated.
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+ `AdwEnumListItem` is the type of items in a [class@EnumListModel].
+ Use [class@Gtk.EnumListItem].
+
+
+ Gets the enum value name.
+ Use [class@Gtk.EnumListItem].
+
+
+ the enum value name
+
+
+
+
+
+
+
+
+
+ Gets the enum value nick.
+ Use [class@Gtk.EnumListItem].
+
+
+ the enum value nick
+
+
+
+
+
+
+
+
+
+ Gets the enum value.
+ Use [class@Gtk.EnumListItem].
+
+
+ the enum value
+
+
+
+
+
+
+
+
+
+ The enum value name.
+ Use [class@Gtk.EnumListItem].
+
+
+
+ The enum value nick.
+ Use [class@Gtk.EnumListItem].
+
+
+
+ The enum value.
+ Use [class@Gtk.EnumListItem].
+
+
+
+
+
+
+
+
+
+
+ A [iface@Gio.ListModel] representing values of a given enum.
+
+`AdwEnumListModel` contains objects of type [class@EnumListItem].
+ Use [class@Gtk.EnumList].
+
+
+
+ Creates a new `AdwEnumListModel` for @enum_type.
+ Use [class@Gtk.EnumList].
+
+
+ the newly created `AdwEnumListModel`
+
+
+
+
+ the type of the enum to construct the model from
+
+
+
+
+
+ Finds the position of a given enum value in @self.
+
+If the value is not found, [const@Gtk.INVALID_LIST_POSITION] is returned.
+ Use [class@Gtk.EnumList].
+
+
+ the position of the value
+
+
+
+
+
+
+
+ an enum value
+
+
+
+
+
+ Gets the type of the enum represented by @self.
+ Use [class@Gtk.EnumList].
+
+
+ the enum type
+
+
+
+
+
+
+
+
+
+ The type of the enum represented by the model.
+ Use [class@Gtk.EnumList].
+
+
+
+ The type of the items. See [method@Gio.ListModel.get_item_type].
+ Use [class@Gtk.EnumList].
+
+
+
+ The number of items. See [method@Gio.ListModel.get_n_items].
+ Use [class@Gtk.EnumList].
+
+
+
+
+
+
+
+
+
+
+ A [class@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
+it. It also allows the user to enable the expansion of the row, allowing to
+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.
+
+
+
+
+
+
+ Creates a new `AdwExpanderRow`.
+
+
+ the newly created `AdwExpanderRow`
+
+
+
+
+ Adds an action widget to @self.
+ Use [method@ExpanderRow.add_suffix] to add a suffix.
+
+
+
+
+
+
+ an expander row
+
+
+
+ a widget
+
+
+
+
+
+ Adds a prefix widget to @self.
+
+
+
+
+
+
+ an expander row
+
+
+
+ a widget
+
+
+
+
+
+ Adds a widget to @self.
+
+The widget will appear in the expanding list below @self.
+
+
+
+
+
+
+ an expander row
+
+
+
+ a widget
+
+
+
+
+
+ Adds an suffix widget to @self.
+
+
+
+
+
+
+ an expander row
+
+
+
+ a widget
+
+
+
+
+
+ Gets whether the expansion of @self is enabled.
+
+
+ whether the expansion of @self is enabled.
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets whether @self is expanded.
+
+
+ whether @self is expanded
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets the icon name for @self.
+ Use [method@ExpanderRow.add_prefix] to add an icon.
+
+
+ the icon name for @self
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets whether the switch enabling the expansion of @self is visible.
+
+
+ whether the switch enabling the expansion is visible
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets the subtitle for @self.
+
+
+ the subtitle for @self
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets the number of lines at the end of which the subtitle label will be
+ellipsized.
+
+
+ the number of lines at the end of which the subtitle label will be
+ ellipsized
+
+
+
+
+ an expander row
+
+
+
+
+
+ Gets 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
+
+
+
+
+ an expander row
+
+
+
+
+
+ Removes a child from @self.
+
+
+
+
+
+
+ an expander row
+
+
+
+ the child to be removed
+
+
+
+
+
+ Sets whether the expansion of @self is enabled.
+
+
+
+
+
+
+ an expander row
+
+
+
+ whether to enable the expansion
+
+
+
+
+
+ Sets whether @self is expanded.
+
+
+
+
+
+
+ an expander row
+
+
+
+ whether to expand the row
+
+
+
+
+
+ Sets the icon name for @self.
+ Use [method@ExpanderRow.add_prefix] to add an icon.
+
+
+
+
+
+
+ an expander row
+
+
+
+ the icon name
+
+
+
+
+
+ Sets whether the switch enabling the expansion of @self is visible.
+
+
+
+
+
+
+ an expander row
+
+
+
+ whether to show the switch enabling the expansion
+
+
+
+
+
+ Sets the subtitle for @self.
+
+The subtitle is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+
+
+
+ an expander row
+
+
+
+ the subtitle
+
+
+
+
+
+ Sets the number of lines at the end of which the subtitle label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+ an expander row
+
+
+
+ the number of lines at the end of which the subtitle label will be ellipsized
+
+
+
+
+
+ Sets the number of lines at the end of which the title label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+ an expander row
+
+
+
+ the number of lines at the end of which the title label will be ellipsized
+
+
+
+
+
+ Whether expansion is enabled.
+
+
+
+ Whether the row is expanded.
+
+
+
+ The icon name for this row.
+ Use [method@ExpanderRow.add_prefix] to add an icon.
+
+
+
+ Whether the switch enabling the expansion is visible.
+
+
+
+ The subtitle for this row.
+
+The subtitle is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+ The number of lines at the end of which the subtitle label will be
+ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+ The number of lines at the end of which the title label will be ellipsized.
+
+If the value is 0, the number of lines won't be limited.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ An adaptive container acting like a box or an overlay.
+
+<picture>
+ <source srcset="flap-wide-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="flap-wide.png" alt="flap-wide">
+</picture>
+<picture>
+ <source srcset="flap-narrow-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="flap-narrow.png" alt="flap-narrow">
+</picture>
+
+The `AdwFlap` widget can display its children like a [class@Gtk.Box] does or
+like a [class@Gtk.Overlay] does, according to the
+[property@Flap:fold-policy] value.
+
+`AdwFlap` has at most three children: [property@Flap:content],
+[property@Flap:flap] and [property@Flap:separator]. Content is the primary
+child, flap is displayed next to it when unfolded, or overlays it when
+folded. Flap can be shown or hidden by changing the
+[property@Flap:reveal-flap] value, as well as via swipe gestures if
+[property@Flap:swipe-to-open] and/or [property@Flap:swipe-to-close] are set
+to `TRUE`.
+
+Optionally, a separator can be provided, which would be displayed between
+the content and the flap when there's no shadow to separate them, depending
+on the transition type.
+
+[property@Flap:flap] is transparent by default; add the
+[`.background`](style-classes.html#background) style class to it if this is
+unwanted.
+
+If [property@Flap:modal] is set to `TRUE`, content becomes completely
+inaccessible when the flap is revealed while folded.
+
+The position of the flap and separator children relative to the content is
+determined by orientation, as well as the [property@Flap:flap-position]
+value.
+
+Folding the flap will automatically hide the flap widget, and unfolding it
+will automatically reveal it. If this behavior is not desired, the
+[property@Flap:locked] property can be used to override it.
+
+Common use cases include sidebars, header bars that need to be able to
+overlap the window content (for example, in fullscreen mode) and bottom
+sheets.
+
+## AdwFlap as GtkBuildable
+
+The `AdwFlap` implementation of the [iface@Gtk.Buildable] interface supports
+setting the flap child by specifying “flap” as the “type” attribute of a
+`<child>` element, and separator by specifying “separator”. Specifying
+“content” child type or omitting it results in setting the content child.
+
+## CSS nodes
+
+`AdwFlap` has a single CSS node with name `flap`. The node will get the style
+classes `.folded` when it is folded, and `.unfolded` when it's not.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+
+ Creates a new `AdwFlap`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the newly created `AdwFlap`
+
+
+
+
+ Gets the content widget for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the content widget for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the flap widget for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the flap widget for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the flap position for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the flap position for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the fold transition animation duration for @self, in milliseconds.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the fold transition duration
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the fold policy for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the fold policy for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the fold threshold policy for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the fold threshold policy
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether @self is currently folded.
+
+See [property@Flap:fold-policy].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if @self is currently folded
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether @self is locked.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if @self is locked
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether @self is modal.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if @self is modal
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether the flap widget is revealed for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if the flap widget is revealed
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the reveal animation spring parameters for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the reveal animation parameters
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the current reveal progress for @self.
+
+0 means fully hidden, 1 means fully revealed.
+
+See [property@Flap:reveal-flap].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the current reveal progress for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the separator widget for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the separator widget for @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether @self can be closed with a swipe gesture.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if @self can be closed with a swipe gesture
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets whether @self can be opened with a swipe gesture.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ `TRUE` if @self can be opened with a swipe gesture
+
+
+
+
+ a flap
+
+
+
+
+
+ Gets the type of animation used for reveal and fold transitions in @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+ the current transition type of @self
+
+
+
+
+ a flap
+
+
+
+
+
+ Sets the content widget for @self.
+
+It's always displayed when unfolded, and partially visible when folded.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the content widget
+
+
+
+
+
+ Sets the flap widget for @self.
+
+It's only visible when [property@Flap:reveal-progress] is greater than 0.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the flap widget
+
+
+
+
+
+ Sets the flap position for @self.
+
+If it's set to [enum@Gtk.PackType.start], the flap is displayed before the
+content, if [enum@Gtk.PackType.end], it's displayed after the content.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the new value
+
+
+
+
+
+ Sets the fold transition animation duration for @self, in milliseconds.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the new duration, in milliseconds
+
+
+
+
+
+ Sets the fold policy for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the fold policy
+
+
+
+
+
+ Sets the fold threshold policy for @self.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], flap will only fold when
+the children cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural],
+it will fold as soon as children don't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately folding.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the policy to use
+
+
+
+
+
+ Sets whether @self is locked.
+
+If `FALSE`, folding when the flap is revealed automatically closes it, and
+unfolding it when the flap is not revealed opens it. If `TRUE`,
+[property@Flap:reveal-flap] value never changes on its own.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the new value
+
+
+
+
+
+ Sets whether @self is modal.
+
+If `TRUE`, clicking the content widget while flap is revealed, as well as
+pressing the <kbd>Esc</kbd> key, will close the flap. If `FALSE`, clicks are
+passed through to the content widget.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ whether @self is modal
+
+
+
+
+
+ Sets whether the flap widget is revealed for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ whether to reveal the flap widget
+
+
+
+
+
+ Sets the reveal animation spring parameters for @self.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the new parameters
+
+
+
+
+
+ Sets the separator widget for @self.
+
+It's displayed between content and flap when there's no shadow to display.
+When exactly it's visible depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the separator widget
+
+
+
+
+
+ Sets whether @self can be closed with a swipe gesture.
+
+The area that can be swiped depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ whether @self can be closed with a swipe gesture
+
+
+
+
+
+ Sets whether @self can be opened with a swipe gesture.
+
+The area that can be swiped depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ whether @self can be opened with a swipe gesture
+
+
+
+
+
+ Sets the type of animation used for reveal and fold transitions in @self.
+
+[property@Flap:flap] is transparent by default, which means the content will
+be seen through it with [enum@Adw.FlapTransitionType.over] transitions; add
+the [`.background`](style-classes.html#background) style class to it if this
+is unwanted.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+ a flap
+
+
+
+ the new transition type
+
+
+
+
+
+ The content widget.
+
+It's always displayed when unfolded, and partially visible when folded.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The flap widget.
+
+It's only visible when [property@Flap:reveal-progress] is greater than 0.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The flap position.
+
+If it's set to [enum@Gtk.PackType.start], the flap is displayed before the
+content, if [enum@Gtk.PackType.end], it's displayed after the content.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The fold transition animation duration, in milliseconds.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The fold policy for the flap.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Determines when the flap will fold.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], flap will only fold when
+the children cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural],
+it will fold as soon as children don't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately folding.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap is currently folded.
+
+See [property@Flap:fold-policy].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap is locked.
+
+If `FALSE`, folding when the flap is revealed automatically closes it, and
+unfolding it when the flap is not revealed opens it. If `TRUE`,
+[property@Flap:reveal-flap] value never changes on its own.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap is modal.
+
+If `TRUE`, clicking the content widget while flap is revealed, as well as
+pressing the <kbd>Esc</kbd> key, will close the flap. If `FALSE`, clicks
+are passed through to the content widget.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap widget is revealed.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The reveal animation spring parameters.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The current reveal transition progress.
+
+0 means fully hidden, 1 means fully revealed.
+
+See [property@Flap:reveal-flap].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ The separator widget.
+
+It's displayed between content and flap when there's no shadow to display.
+When exactly it's visible depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap can be closed with a swipe gesture.
+
+The area that can be swiped depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ Whether the flap can be opened with a swipe gesture.
+
+The area that can be swiped depends on the [property@Flap:transition-type]
+value.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+ the type of animation used for reveal and fold transitions.
+
+[property@Flap:flap] is transparent by default, which means the content
+will be seen through it with [enum@Adw.FlapTransitionType.over] transitions;
+add the [`.background`](style-classes.html#background) style class to it if
+this is unwanted.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+
+
+
+
+
+
+
+
+
+ Describes the possible folding behavior of a [class@Flap] widget.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+ Disable folding, the flap cannot reach narrow
+ sizes.
+
+
+ Keep the flap always folded.
+
+
+ Fold and unfold the flap based on available
+ space.
+
+
+
+ Describes transitions types of a [class@Flap] widget.
+
+It determines the type of animation when transitioning between children in a
+[class@Flap] widget, as well as which areas can be swiped via
+[property@Flap:swipe-to-open] and [property@Flap:swipe-to-close].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwflap)
+
+ The flap slides over the content, which is
+ dimmed. When folded, only the flap can be swiped.
+
+
+ The content slides over the flap. Only the
+ content can be swiped.
+
+
+ The flap slides offscreen when hidden,
+ neither the flap nor content overlap each other. Both widgets can be
+ swiped.
+
+
+
+ Determines when [class@Flap] and [class@Leaflet] will fold.
+ Stop using `AdwLeaflet` and `AdwFlap`
+
+ Folding is based on the minimum size
+
+
+ Folding is based on the natural size
+
+
+
+ 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
+features compared to it. Refer to `GtkHeaderBar` for details. It is typically
+used as a top bar within [class@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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwHeaderBar`.
+
+
+ the newly created `AdwHeaderBar`.
+
+
+
+
+ Gets the policy for aligning the center widget.
+
+
+ the centering policy
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets the decoration layout for @self.
+
+
+ the decoration layout
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets whether @self can show the back button.
+
+
+ whether to show the back button
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets whether to show title buttons at the end of @self.
+
+
+ `TRUE` if title buttons at the end are shown
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets whether to show title buttons at the start of @self.
+
+
+ `TRUE` if title buttons at the start are shown
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets whether the title widget should be shown.
+
+
+ whether the title widget should be shown.
+
+
+
+
+ a header bar
+
+
+
+
+
+ Gets the title widget widget of @self.
+
+
+ the title widget
+
+
+
+
+ a header bar
+
+
+
+
+
+ Adds @child to @self, packed with reference to the end of @self.
+
+
+
+
+
+
+ a header bar
+
+
+
+ the widget to be added to @self
+
+
+
+
+
+ Adds @child to @self, packed with reference to the start of the @self.
+
+
+
+
+
+
+ a header bar
+
+
+
+ the widget to be added to @self
+
+
+
+
+
+ Removes a child from @self.
+
+The child must have been added with [method@HeaderBar.pack_start],
+[method@HeaderBar.pack_end] or [property@HeaderBar:title-widget].
+
+
+
+
+
+
+ a header bar
+
+
+
+ the child to remove
+
+
+
+
+
+ Sets the policy for aligning the center widget.
+
+
+
+
+
+
+ a header bar
+
+
+
+ the centering policy
+
+
+
+
+
+ Sets the decoration layout for @self.
+
+If this property is not set, the
+[property@Gtk.Settings:gtk-decoration-layout] setting is used.
+
+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 end.
+Recognized button names are minimize, maximize, close and icon (the window
+icon).
+
+For example, “icon:minimize,maximize,close” specifies an icon at the start,
+and minimize, maximize and close buttons at the end.
+
+
+
+
+
+
+ a header bar
+
+
+
+ a decoration layout
+
+
+
+
+
+ Sets whether @self can show the back button.
+
+The back button will never be shown unless the header bar is placed inside an
+[class@NavigationView]. Usually, there is no reason to set it to `FALSE`.
+
+
+
+
+
+
+ a header bar
+
+
+
+ whether to show the back button
+
+
+
+
+
+ Sets whether to show title buttons at the end of @self.
+
+See [property@HeaderBar:show-start-title-buttons] for the other side.
+
+Which buttons are actually shown and where is determined by the
+[property@HeaderBar:decoration-layout] property, and by the state of the
+window (e.g. a close button will not be shown if the window can't be closed).
+
+
+
+
+
+
+ a header bar
+
+
+
+ `TRUE` to show standard title buttons
+
+
+
+
+
+ Sets whether to show title buttons at the start of @self.
+
+See [property@HeaderBar:show-end-title-buttons] for the other side.
+
+Which buttons are actually shown and where is determined by the
+[property@HeaderBar:decoration-layout] property, and by the state of the
+window (e.g. a close button will not be shown if the window can't be closed).
+
+
+
+
+
+
+ a header bar
+
+
+
+ `TRUE` to show standard title buttons
+
+
+
+
+
+ Sets whether the title widget should be shown.
+
+
+
+
+
+
+ a header bar
+
+
+
+ whether the title widget is visible
+
+
+
+
+
+ Sets the title widget for @self.
+
+When set to `NULL`, the header bar will display the title of the window it
+is contained in.
+
+To use a different title, use [class@WindowTitle]:
+
+```xml
+<object class="AdwHeaderBar">
+ <property name="title-widget">
+ <object class="AdwWindowTitle">
+ <property name="title" translatable="yes">Title</property>
+ </object>
+ </property>
+</object>
+```
+
+
+
+
+
+
+ a header bar
+
+
+
+ a widget to use for a title
+
+
+
+
+
+ The policy for aligning the center widget.
+
+
+
+ The decoration layout for buttons.
+
+If this property is not set, the
+[property@Gtk.Settings:gtk-decoration-layout] setting is used.
+
+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
+end. Recognized button names are minimize, maximize, close and icon (the
+window icon).
+
+For example, “icon:minimize,maximize,close” specifies an icon at the start,
+and minimize, maximize and close buttons at the end.
+
+
+
+ Whether the header bar can show the back button.
+
+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`.
+
+
+
+ Whether to show title buttons at the end of the header bar.
+
+See [property@HeaderBar:show-start-title-buttons] for the other side.
+
+Which buttons are actually shown and where is determined by the
+[property@HeaderBar:decoration-layout] property, and by the state of the
+window (e.g. a close button will not be shown if the window can't be
+closed).
+
+
+
+ Whether to show title buttons at the start of the header bar.
+
+See [property@HeaderBar:show-end-title-buttons] for the other side.
+
+Which buttons are actually shown and where is determined by the
+[property@HeaderBar:decoration-layout] property, and by the state of the
+window (e.g. a close button will not be shown if the window can't be
+closed).
+
+
+
+ Whether the title widget should be shown.
+
+
+
+ The title widget to display.
+
+When set to `NULL`, the header bar will display the title of the window it
+is contained in.
+
+To use a different title, use [class@WindowTitle]:
+
+```xml
+<object class="AdwHeaderBar">
+ <property name="title-widget">
+ <object class="AdwWindowTitle">
+ <property name="title" translatable="yes">Title</property>
+ </object>
+ </property>
+</object>
+```
+
+
+
+
+
+
+
+
+
+
+ A view switcher that uses a toggle group.
+
+<picture>
+ <source srcset="inline-view-switcher-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher.png" alt="inline-view-switcher">
+</picture>
+
+A view switcher showing pages of an [class@ViewStack] within an
+[class@ToggleGroup], similar to [class@ViewSwitcher].
+
+The toggles can display either an icon, a label or both. Use the
+[property@InlineViewSwitcher:display-mode] to control this.
+
+<picture>
+ <source srcset="inline-view-switcher-display-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher-display-modes.png" alt="inline-view-switcher-display-modes">
+</picture>
+
+## CSS nodes
+
+`AdwInlineViewSwitcher` has a single CSS node with the name
+`inline-view-switcher`.
+
+## Style classes
+
+Like `AdwToggleGroup`, it can accept the [`.flat`](style-classes.html#flat_1)
+and [`.round`](style-classes.html#round) style classes.
+
+<picture>
+ <source srcset="inline-view-switcher-style-classes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher-style-classes.png" alt="inline-view-switcher-style-classes">
+</picture>
+
+## Accessibility
+
+The internal toggle group uses the [enum@Gtk.AccessibleRole.tab-list] role.
+Its toggles use the [enum@Gtk.AccessibleRole.tab] role.
+
+See also: [class@ViewSwitcher], [class@ViewSwitcherBar],
+[class@ViewSwitcherSidebar].
+
+
+
+
+
+
+ Creates a new `AdwInlineViewSwitcher`.
+
+
+ the newly created `AdwInlineViewSwitcher`
+
+
+
+
+ Gets whether the toggles can be smaller than the natural size of their
+contents.
+
+
+ whether the toggles can shrink
+
+
+
+
+ an inline stack switcher
+
+
+
+
+
+ Gets the display mode of @self.
+
+
+ the display mode
+
+
+
+
+ an inline stack switcher
+
+
+
+
+
+ Gets whether all toggles within @self take the same size.
+
+
+ whether all toggles take the same size
+
+
+
+
+ an inline stack switcher
+
+
+
+
+
+ Gets the stack @self controls.
+
+
+ The stack of @self
+
+
+
+
+ an inline stack switcher
+
+
+
+
+
+ Sets whether the toggles can be smaller than the natural size of their
+contents.
+
+If @can_shrink is `TRUE`, the toggle labels will ellipsize.
+
+See [property@ToggleGroup:can-shrink].
+
+
+
+
+
+
+ an inline stack switcher
+
+
+
+ whether the toggles can shrink
+
+
+
+
+
+ Sets the display mode of @self.
+
+Determines what the toggles display: a label, an icon or both.
+
+<picture>
+ <source srcset="inline-view-switcher-display-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher-display-modes.png" alt="inline-view-switcher-display-modes">
+</picture>
+
+
+
+
+
+
+ an inline stack switcher
+
+
+
+ the display mode
+
+
+
+
+
+ Sets whether all toggles within @self take the same size.
+
+
+
+
+
+
+ an inline stack switcher
+
+
+
+ whether all toggles should take the same size
+
+
+
+
+
+ Sets the stack to control.
+
+
+
+
+
+
+ an inline stack switcher
+
+
+
+ a stack
+
+
+
+
+
+ Whether the toggles can be smaller than the natural size of their contents.
+
+If set to `TRUE`, the toggle labels will ellipsize.
+
+See [property@ToggleGroup:can-shrink].
+
+
+
+ The display mode.
+
+Determines what the toggles display: a label, an icon or both.
+
+<picture>
+ <source srcset="inline-view-switcher-display-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher-display-modes.png" alt="inline-view-switcher-display-modes">
+</picture>
+
+
+
+ Whether all toggles take the same size.
+
+
+
+ The stack the view switcher controls.
+
+
+
+
+
+
+
+
+
+
+ Describes what [class@InlineViewSwitcher] toggles display.
+
+<picture>
+ <source srcset="inline-view-switcher-display-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="inline-view-switcher-display-modes.png" alt="inline-view-switcher-display-modes">
+</picture>
+
+ Toggles only display labels.
+
+
+ Toggles only display icons.
+
+
+ Toggles display both icons and labels.
+
+
+
+ Describes line justify behaviors in a [class@WrapLayout] or [class@WrapBox].
+
+See [property@WrapLayout:justify] and [property@WrapBox:justify].
+
+ Don't justify children within a line.
+
+
+ Stretch each child within the line, keeping consistent
+ spacing, so that the line fills the entire length.
+
+
+ Increase spacing between children, moving the children
+ so that the first and last child are aligned with the beginning and end
+ of the line. If the line only contains a single widget, it will be
+ stretched regardless.
+
+
+
+ An individual layout in [class@MultiLayoutView].
+
+
+
+ Creates a new `AdwLayout` that contains @content.
+
+
+ a new `AdwLayout`
+
+
+
+
+ the content widget to use
+
+
+
+
+
+ Gets the content widget.
+
+
+ The content
+
+
+
+
+ a layout
+
+
+
+
+
+ Gets the name of the layout.
+
+
+ the name of the layout
+
+
+
+
+ a layout
+
+
+
+
+
+ Sets the name of the layout.
+
+
+
+
+
+
+ a layout
+
+
+
+ the layout name
+
+
+
+
+
+ The content widget.
+
+
+
+ The name of the layout.
+
+
+
+
+
+
+
+
+
+
+ A child slot within [class@Layout].
+
+While it contains a layout child, the [property@Gtk.Widget:visible] property
+of the slot is updated to match that of the layout child.
+
+See [class@MultiLayoutView].
+
+
+
+
+
+ Creates a new `AdwLayoutSlot` with its ID set to @id.
+
+
+ a new `AdwLayoutSlot`
+
+
+
+
+ the slot ID
+
+
+
+
+
+ Gets the slot id of @self.
+
+
+ the slot ID
+
+
+
+
+ a layout slot
+
+
+
+
+
+ The slot ID.
+
+See [method@MultiLayoutView.set_child].
+
+
+
+
+
+
+
+
+
+
+ An adaptive container acting like a box or a stack.
+
+<picture>
+ <source srcset="leaflet-wide-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="leaflet-wide.png" alt="leaflet-wide">
+</picture>
+<picture>
+ <source srcset="leaflet-narrow-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="leaflet-narrow.png" alt="leaflet-narrow">
+</picture>
+
+The `AdwLeaflet` widget can display its children like a [class@Gtk.Box] does
+or like a [class@Gtk.Stack] does, adapting to size changes by switching
+between the two modes.
+
+When there is enough space the children are displayed side by side, otherwise
+only one is displayed and the leaflet is said to be “folded”.
+The threshold is dictated by the preferred minimum sizes of the children.
+When a leaflet is folded, the children can be navigated using swipe gestures.
+
+The “over” and “under” transition types stack the children one on top of the
+other, while the “slide” transition puts the children side by side. While
+navigating to a child on the side or below can be performed by swiping the
+current child away, navigating to an upper child requires dragging it from
+the edge where it resides. This doesn't affect non-dragging swipes.
+
+## CSS nodes
+
+`AdwLeaflet` has a single CSS node with name `leaflet`. The node will get the
+style classes `.folded` when it is folded, `.unfolded` when it's not, or none
+if it hasn't computed its fold yet.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+
+ Creates a new `AdwLeaflet`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the new created `AdwLeaflet`
+
+
+
+
+ Adds a child to @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the [class@LeafletPage] for @child
+
+
+
+
+ a leaflet
+
+
+
+ the widget to add
+
+
+
+
+
+ Finds the previous or next navigatable child.
+
+This will be the same child [method@Leaflet.navigate] or swipe gestures will
+navigate to.
+
+If there's no child to navigate to, `NULL` will be returned instead.
+
+See [property@LeafletPage:navigatable].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the previous or next child
+
+
+
+
+ a leaflet
+
+
+
+ the direction
+
+
+
+
+
+ Gets whether gestures and shortcuts for navigating backward are enabled.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ Whether gestures and shortcuts are enabled.
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets whether gestures and shortcuts for navigating forward are enabled.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ Whether gestures and shortcuts are enabled.
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets whether @self can unfold.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether @self can unfold
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Finds the child of @self with @name.
+
+Returns `NULL` if there is no child with this name.
+
+See [property@LeafletPage:name].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the requested child of @self
+
+
+
+
+ a leaflet
+
+
+
+ the name of the child to find
+
+
+
+
+
+ Gets the child transition spring parameters for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the child transition parameters
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets whether a child transition is currently running for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether a transition is currently running
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets the fold threshold policy for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the fold threshold policy
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets whether @self is folded.
+
+The leaflet will be folded if the size allocated to it is smaller than the
+sum of the minimum or natural sizes of the children (see
+[property@Leaflet:fold-threshold-policy]), it will be unfolded otherwise.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether @self is folded.
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets whether @self is homogeneous.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether @self is homogeneous
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets the mode transition animation duration for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the mode transition duration, in milliseconds.
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Returns the [class@LeafletPage] object for @child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the page object for @child
+
+
+
+
+ a leaflet
+
+
+
+ a child of @self
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the pages of the leaflet.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track and change the visible
+page.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ a `GtkSelectionModel` for the leaflet's children
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets the type of animation used for transitions between modes and children.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the current transition type of @self
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets the widget currently visible when the leaflet is folded.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the visible child
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Gets the name of the currently visible child widget.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the name of the visible child
+
+
+
+
+ a leaflet
+
+
+
+
+
+ Inserts @child in the position after @sibling in the list of children.
+
+If @sibling is `NULL`, inserts @child at the first position.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the [class@LeafletPage] for @child
+
+
+
+
+ a leaflet
+
+
+
+ the widget to insert
+
+
+
+ the sibling after which to insert @child
+
+
+
+
+
+ Navigates to the previous or next child.
+
+The child must have the [property@LeafletPage:navigatable] property set to
+`TRUE`, otherwise it will be skipped.
+
+This will be the same child as returned by
+[method@Leaflet.get_adjacent_child] or navigated to via swipe gestures.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether the visible child was changed
+
+
+
+
+ a leaflet
+
+
+
+ the direction
+
+
+
+
+
+ Inserts @child at the first position in @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the [class@LeafletPage] for @child
+
+
+
+
+ a leaflet
+
+
+
+ the widget to prepend
+
+
+
+
+
+ Removes a child widget from @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the child to remove
+
+
+
+
+
+ Moves @child to the position after @sibling in the list of children.
+
+If @sibling is `NULL`, moves @child to the first position.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the widget to move, must be a child of @self
+
+
+
+ the sibling to move @child after
+
+
+
+
+
+ Sets whether gestures and shortcuts for navigating backward are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back/forward mouse buttons
+
+The keyboard back/forward keys are also supported, as well as the
+<kbd>Alt</kbd>+<kbd>←</kbd> shortcut for horizontal orientation, or
+<kbd>Alt</kbd>+<kbd>↑</kbd> for vertical orientation.
+
+If the orientation is horizontal, for right-to-left locales, gestures and
+shortcuts are reversed.
+
+Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
+be navigated to.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new value
+
+
+
+
+
+ Sets whether gestures and shortcuts for navigating forward are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back/forward mouse buttons
+
+The keyboard back/forward keys are also supported, as well as the
+<kbd>Alt</kbd>+<kbd>→</kbd> shortcut for horizontal orientation, or
+<kbd>Alt</kbd>+<kbd>↓</kbd> for vertical orientation.
+
+If the orientation is horizontal, for right-to-left locales, gestures and
+shortcuts are reversed.
+
+Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
+be navigated to.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new value
+
+
+
+
+
+ Sets whether @self can unfold.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ whether @self can unfold
+
+
+
+
+
+ Sets the child transition spring parameters for @self.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new parameters
+
+
+
+
+
+ Sets the fold threshold policy for @self.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], it will only fold when the
+children cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural], it
+will fold as soon as children don't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately folding.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the policy to use
+
+
+
+
+
+ Sets @self to be homogeneous or not.
+
+If set to `FALSE`, different children can have different size along the
+opposite orientation.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ whether to make @self homogeneous
+
+
+
+
+
+ Sets the mode transition animation duration for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new duration, in milliseconds
+
+
+
+
+
+ Sets the type of animation used for transitions between modes and children.
+
+The transition type can be changed without problems at runtime, so it is
+possible to change the animation based on the mode or child that is about to
+become current.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new transition type
+
+
+
+
+
+ Sets the widget currently visible when the leaflet is folded.
+
+The transition is determined by [property@Leaflet:transition-type] and
+[property@Leaflet:child-transition-params]. The transition can be cancelled
+by the user, in which case visible child will change back to the previously
+visible child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the new child
+
+
+
+
+
+ Makes the child with the name @name visible.
+
+See [property@Leaflet:visible-child].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet
+
+
+
+ the name of a child
+
+
+
+
+
+ Whether gestures and shortcuts for navigating backward are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back/forward mouse buttons
+
+The keyboard back/forward keys are also supported, as well as the
+<kbd>Alt</kbd>+<kbd>←</kbd> shortcut for horizontal orientation, or
+<kbd>Alt</kbd>+<kbd>↑</kbd> for vertical orientation.
+
+If the orientation is horizontal, for right-to-left locales, gestures and
+shortcuts are reversed.
+
+Only children that have [property@LeafletPage:navigatable] set to `TRUE`
+can be navigated to.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether gestures and shortcuts for navigating forward are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back/forward mouse buttons
+
+The keyboard back/forward keys are also supported, as well as the
+<kbd>Alt</kbd>+<kbd>→</kbd> shortcut for horizontal orientation, or
+<kbd>Alt</kbd>+<kbd>↓</kbd> for vertical orientation.
+
+If the orientation is horizontal, for right-to-left locales, gestures and
+shortcuts are reversed.
+
+Only children that have [property@LeafletPage:navigatable] set to `TRUE`
+can be navigated to.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether or not the leaflet can unfold.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The child transition spring parameters.
+
+The default value is equivalent to:
+
+```c
+adw_spring_params_new (1, 0.5, 500)
+```
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether a child transition is currently running.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Determines when the leaflet will fold.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], it will only fold when
+the children cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural],
+it will fold as soon as children don't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately folding.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether the leaflet is folded.
+
+The leaflet will be folded if the size allocated to it is smaller than the
+sum of the minimum or natural sizes of the children (see
+[property@Leaflet:fold-threshold-policy]), it will be unfolded otherwise.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether the leaflet allocates the same size for all children when folded.
+
+If set to `FALSE`, different children can have different size along the
+opposite orientation.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The mode transition animation duration, in milliseconds.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ A selection model with the leaflet's pages.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track and change the visible
+page.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The type of animation used for transitions between modes and children.
+
+The transition type can be changed without problems at runtime, so it is
+possible to change the animation based on the mode or child that is about
+to become current.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The widget currently visible when the leaflet is folded.
+
+The transition is determined by [property@Leaflet:transition-type] and
+[property@Leaflet:child-transition-params]. The transition can be cancelled
+by the user, in which case visible child will change back to the previously
+visible child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The name of the widget currently visible when the leaflet is folded.
+
+See [property@Leaflet:visible-child].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+
+
+
+
+ An auxiliary class used by [class@Leaflet].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ Gets the leaflet child to which @self belongs.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the child to which @self belongs
+
+
+
+
+ a leaflet page
+
+
+
+
+
+ Gets the name of @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ the name of @self.
+
+
+
+
+ a leaflet page
+
+
+
+
+
+ Gets whether the child can be navigated to when folded.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+ whether @self can be navigated to when folded
+
+
+
+
+ a leaflet page
+
+
+
+
+
+ Sets the name of the @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet page
+
+
+
+ the new value to set
+
+
+
+
+
+ Sets whether @self can be navigated to when folded.
+
+If `FALSE`, the child will be ignored by [method@Leaflet.get_adjacent_child],
+[method@Leaflet.navigate], and swipe gestures.
+
+This can be used used to prevent switching to widgets like separators.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+ a leaflet page
+
+
+
+ whether @self can be navigated to when folded
+
+
+
+
+
+ The leaflet child to which the page belongs.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ The name of the child page.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+ Whether the child can be navigated to when folded.
+
+If `FALSE`, the child will be ignored by
+[method@Leaflet.get_adjacent_child], [method@Leaflet.navigate], and swipe
+gestures.
+
+This can be used used to prevent switching to widgets like separators.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+
+
+
+
+
+
+
+
+
+ Describes the possible transitions in a [class@Leaflet] widget.
+
+New values may be added to this enumeration over time.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwleaflet)
+
+ Cover the old page or uncover the new page, sliding from or towards the end according to orientation, text direction and children order
+
+
+ Uncover the new page or cover the old page, sliding from or towards the start according to orientation, text direction and children order
+
+
+ Slide from left, right, up or down according to the orientation, text direction and the children order
+
+
+
+ Describes length units.
+
+| Unit | Regular Text | Large Text |
+| ---- | ------------ | ---------- |
+| 1px | 1px | 1px |
+| 1pt | 1.333333px | 1.666667px |
+| 1sp | 1px | 1.25px |
+
+New values may be added to this enumeration over time.
+
+ pixels
+
+
+ points, changes with text scale factor
+
+
+ scale independent pixels, changes with text scale factor
+
+
+ Converts @value from pixels to @unit.
+
+
+ the length in @unit
+
+
+
+
+ a length unit
+
+
+
+ a value in pixels
+
+
+
+ settings to use, or `NULL` for default settings
+
+
+
+
+
+ Converts @value from @unit to pixels.
+
+
+ the length in pixels
+
+
+
+
+ a length unit
+
+
+
+ a value in @unit
+
+
+
+ settings to use, or `NULL` for default settings
+
+
+
+
+
+
+ Adwaita major version component (e.g. 1 if the version is 1.2.3).
+
+
+
+
+ Adwaita micro version component (e.g. 3 if the version is 1.2.3).
+
+
+
+
+ Adwaita minor version component (e.g. 2 if the version is 1.2.3).
+
+
+
+
+ A dialog presenting a message or a question.
+
+<picture>
+ <source srcset="message-dialog-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="message-dialog.png" alt="message-dialog">
+</picture>
+
+Message dialogs have a heading, a body, an optional child widget, and one or
+multiple responses, each presented as a button.
+
+Each response has a unique string ID, and a button label. Additionally, each
+response can be enabled or disabled, and can have a suggested or destructive
+appearance.
+
+When one of the responses is activated, or the dialog is closed, the
+[signal@MessageDialog::response] signal will be emitted. This signal is
+detailed, and the detail, as well as the `response` parameter will be set to
+the ID of the activated response, or to the value of the
+[property@MessageDialog:close-response] property if the dialog had been
+closed without activating any of the responses.
+
+Response buttons can be presented horizontally or vertically depending on
+available space.
+
+When a response is activated, `AdwMessageDialog` is closed automatically.
+
+An example of using a message dialog:
+
+```c
+GtkWidget *dialog;
+
+dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
+
+adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+
+adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
+ "cancel", _("_Cancel"),
+ "replace", _("_Replace"),
+ NULL);
+
+adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
+
+adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
+adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
+
+g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);
+
+gtk_window_present (GTK_WINDOW (dialog));
+```
+
+## Async API
+
+`AdwMessageDialog` can also be used via the [method@MessageDialog.choose]
+method. This API follows the GIO async pattern, for example:
+
+```c
+static void
+dialog_cb (AdwMessageDialog *dialog,
+ GAsyncResult *result,
+ MyWindow *self)
+{
+ const char *response = adw_message_dialog_choose_finish (dialog, result);
+
+ // ...
+}
+
+static void
+show_dialog (MyWindow *self)
+{
+ GtkWidget *dialog;
+
+ dialog = adw_message_dialog_new (GTK_WINDOW (self), _("Replace File?"), NULL);
+
+ adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+
+ adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
+ "cancel", _("_Cancel"),
+ "replace", _("_Replace"),
+ NULL);
+
+ adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
+
+ adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
+ adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
+
+ adw_message_dialog_choose (ADW_MESSAGE_DIALOG (dialog), NULL, (GAsyncReadyCallback) dialog_cb, self);
+}
+```
+
+## AdwMessageDialog as GtkBuildable
+
+`AdwMessageDialog` supports adding responses in UI definitions by via the
+`<responses>` element that may contain multiple `<response>` elements, each
+representing a response.
+
+Each of the `<response>` elements must have the `id` attribute specifying the
+response ID. The contents of the element are used as the response label.
+
+Response labels can be translated with the usual `translatable`, `context`
+and `comments` attributes.
+
+The `<response>` elements can also have `enabled` and/or `appearance`
+attributes. See [method@MessageDialog.set_response_enabled] and
+[method@MessageDialog.set_response_appearance] for details.
+
+Example of an `AdwMessageDialog` UI definition:
+
+```xml
+<object class="AdwMessageDialog" id="dialog">
+ <property name="heading" translatable="yes">Save Changes?</property>
+ <property name="body" translatable="yes">Open documents contain unsaved changes. Changes which are not saved will be permanently lost.</property>
+ <property name="default-response">save</property>
+ <property name="close-response">cancel</property>
+ <signal name="response" handler="response_cb"/>
+ <responses>
+ <response id="cancel" translatable="yes">_Cancel</response>
+ <response id="discard" translatable="yes" appearance="destructive">_Discard</response>
+ <response id="save" translatable="yes" appearance="suggested" enabled="false">_Save</response>
+ </responses>
+</object>
+```
+
+## Accessibility
+
+`AdwMessageDialog` uses the [enum@Gtk.AccessibleRole.dialog] role.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+
+
+ Creates a new `AdwMessageDialog`.
+
+@heading and @body can be set to `NULL`. This can be useful if they need to
+be formatted or use markup. In that case, set them to `NULL` and call
+[method@MessageDialog.format_body] or similar methods afterwards:
+
+```c
+GtkWidget *dialog;
+
+dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
+adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
+ _("A file named “%s” already exists. Do you want to replace it?"),
+ filename);
+```
+ Use [class@AlertDialog].
+
+
+ the newly created `AdwMessageDialog`
+
+
+
+
+ transient parent
+
+
+
+ the heading
+
+
+
+ the body text
+
+
+
+
+
+
+ Emits the [signal@MessageDialog::response] signal with the given response ID.
+
+Used to indicate that the user has responded to the dialog in some way.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ response ID
+
+
+
+
+
+ Adds a response with @id and @label to @self.
+
+Responses are represented as buttons in the dialog.
+
+Response ID must be unique. It will be used in
+[signal@MessageDialog::response] to tell which response had been activated,
+as well as to inspect and modify the response later.
+
+An embedded underline in @label indicates a mnemonic.
+
+[method@MessageDialog.set_response_label] can be used to change the response
+label after it had been added.
+
+[method@MessageDialog.set_response_enabled] and
+[method@MessageDialog.set_response_appearance] can be used to customize the
+responses further.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the response ID
+
+
+
+ the response label
+
+
+
+
+
+ Adds multiple responses to @self.
+
+This is the same as calling [method@MessageDialog.add_response] repeatedly.
+The variable argument list should be `NULL`-terminated list of response IDs
+and labels.
+
+Example:
+
+```c
+adw_message_dialog_add_responses (dialog,
+ "cancel", _("_Cancel"),
+ "discard", _("_Discard"),
+ "save", _("_Save"),
+ NULL);
+```
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ response id
+
+
+
+ label for first response, then more id-label pairs
+
+
+
+
+
+ This function shows @self to the user.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ a `GCancellable` to cancel the operation
+
+
+
+ a callback to call when the operation is complete
+
+
+
+ data to pass to @callback
+
+
+
+
+
+ Finishes the [method@MessageDialog.choose] call and returns the response ID.
+ Use [class@AlertDialog].
+
+
+ the ID of the response that was selected, or
+ [property@MessageDialog:close-response] if the call was cancelled.
+
+
+
+
+ a message dialog
+
+
+
+ a `GAsyncResult`
+
+
+
+
+
+ Sets the formatted body text of @self.
+
+See [property@MessageDialog:body].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the formatted string for the body text
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted body text of @self with Pango markup.
+
+The @format is assumed to contain Pango markup.
+
+Special XML characters in the `printf()` arguments passed to this function
+will automatically be escaped as necessary, see
+[func@GLib.markup_printf_escaped].
+
+See [property@MessageDialog:body].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the formatted string for the body text with Pango markup
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted heading of @self.
+
+See [property@MessageDialog:heading].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the formatted string for the heading
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Sets the formatted heading of @self with Pango markup.
+
+The @format is assumed to contain Pango markup.
+
+Special XML characters in the `printf()` arguments passed to this function
+will automatically be escaped as necessary, see
+[func@GLib.markup_printf_escaped].
+
+See [property@MessageDialog:heading].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the formatted string for the heading with Pango markup
+
+
+
+ the parameters to insert into @format
+
+
+
+
+
+ Gets the body text of @self.
+ Use [class@AlertDialog].
+
+
+ the body of @self.
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets whether the body text of @self includes Pango markup.
+ Use [class@AlertDialog].
+
+
+ whether @self uses markup for body text
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets the ID of the close response of @self.
+ Use [class@AlertDialog].
+
+
+ the close response ID
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets the ID of the default response of @self.
+ Use [class@AlertDialog].
+
+
+ the default response ID
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets the child widget of @self.
+ Use [class@AlertDialog].
+
+
+ the child widget of @self.
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets the heading of @self.
+ Use [class@AlertDialog].
+
+
+ the heading of @self.
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets whether the heading of @self includes Pango markup.
+ Use [class@AlertDialog].
+
+
+ whether @self uses markup for heading
+
+
+
+
+ a message dialog
+
+
+
+
+
+ Gets the appearance of @response.
+
+See [method@MessageDialog.set_response_appearance].
+ Use [class@AlertDialog].
+
+
+ the appearance of @response
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets whether @response is enabled.
+
+See [method@MessageDialog.set_response_enabled].
+ Use [class@AlertDialog].
+
+
+ whether @response is enabled
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets the label of @response.
+
+See [method@MessageDialog.set_response_label].
+ Use [class@AlertDialog].
+
+
+ the label of @response
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+
+
+ Gets whether @self has a response with the ID @response.
+ Use [class@AlertDialog].
+
+
+ whether @self has a response with the ID @response.
+
+
+
+
+ a message dialog
+
+
+
+ response ID
+
+
+
+
+
+ Removes a response from @self.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the response ID
+
+
+
+
+
+
+ Emits the [signal@MessageDialog::response] signal with the given response ID.
+
+Used to indicate that the user has responded to the dialog in some way.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ response ID
+
+
+
+
+
+ Sets the body text of @self.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the body of @self
+
+
+
+
+
+ Sets whether the body text of @self includes Pango markup.
+
+See [func@Pango.parse_markup].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ whether to use markup for body text
+
+
+
+
+
+ Sets the ID of the close response of @self.
+
+It will be passed to [signal@MessageDialog::response] if the window is
+closed by pressing <kbd>Escape</kbd> or with a system action.
+
+It doesn't have to correspond to any of the responses in the dialog.
+
+The default close response is `close`.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the close response ID
+
+
+
+
+
+ Sets the ID of the default response of @self.
+
+The button corresponding to this response will be set as the default widget
+of @self.
+
+If not set, the default widget will not be set, and the last added response
+will be focused by default.
+
+See [property@Gtk.Window:default-widget].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the default response ID
+
+
+
+
+
+ Sets the child widget of @self.
+
+The child widget is displayed below the heading and body.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the heading of @self.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ the heading of @self
+
+
+
+
+
+ Sets whether the heading of @self includes Pango markup.
+
+See [func@Pango.parse_markup].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ whether to use markup for heading
+
+
+
+
+
+ Sets the appearance for @response.
+
+<picture>
+ <source srcset="message-dialog-appearance-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="message-dialog-appearance.png" alt="message-dialog-appearance">
+</picture>
+
+Use [enum@Adw.ResponseAppearance.suggested] to mark important responses such
+as the affirmative action, like the Save button in the example.
+
+Use [enum@Adw.ResponseAppearance.destructive] to draw attention to the
+potentially damaging consequences of using @response. This appearance acts as
+a warning to the user. The Discard button in the example is using this
+appearance.
+
+The default appearance is [enum@Adw.ResponseAppearance.default].
+
+Negative responses like Cancel or Close should use the default appearance.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+ appearance for @response
+
+
+
+
+
+ Sets whether @response is enabled.
+
+If @response is not enabled, the corresponding button will have
+[property@Gtk.Widget:sensitive] set to `FALSE` and it can't be activated as
+a default response.
+
+@response can still be used as [property@MessageDialog:close-response] while
+it's not enabled.
+
+Responses are enabled by default.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+ whether to enable @response
+
+
+
+
+
+ Sets the label of @response to @label.
+
+Labels are displayed on the dialog buttons. An embedded underline in @label
+indicates a mnemonic.
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ a message dialog
+
+
+
+ a response ID
+
+
+
+ the label of @response
+
+
+
+
+
+ The body text of the dialog.
+ Use [class@AlertDialog].
+
+
+
+ Whether the body text includes Pango markup.
+
+See [func@Pango.parse_markup].
+ Use [class@AlertDialog].
+
+
+
+ The ID of the close response.
+
+It will be passed to [signal@MessageDialog::response] if the window is
+closed by pressing <kbd>Escape</kbd> or with a system action.
+
+It doesn't have to correspond to any of the responses in the dialog.
+
+The default close response is `close`.
+ Use [class@AlertDialog].
+
+
+
+ The response ID of the default response.
+
+The button corresponding to this response will be set as the default widget
+of the dialog.
+
+If not set, the default widget will not be set, and the last added response
+will be focused by default.
+
+See [property@Gtk.Window:default-widget].
+ Use [class@AlertDialog].
+
+
+
+ The child widget.
+
+Displayed below the heading and body.
+ Use [class@AlertDialog].
+
+
+
+ The heading of the dialog.
+ Use [class@AlertDialog].
+
+
+
+ Whether the heading includes Pango markup.
+
+See [func@Pango.parse_markup].
+ Use [class@AlertDialog].
+
+
+
+
+
+
+ This signal is emitted when the dialog is closed.
+
+@response will be set to the response ID of the button that had been
+activated.
+
+if the dialog was closed by pressing <kbd>Escape</kbd> or with a system
+action, @response will be set to the value of
+[property@MessageDialog:close-response].
+ Use [class@AlertDialog].
+
+
+
+
+
+ the response ID
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a message dialog
+
+
+
+ response ID
+
+
+
+
+
+
+
+
+
+
+
+
+ A widget for switching between different layouts.
+
+`AdwMultiLayoutView` contains layouts and children. Each child has
+an ID, each layout has slots inside it, each slot also has an ID. When
+switching layouts, children are inserted into slots with matching IDs. The
+[property@Gtk.Widget:visible] property of each slot is updated to match
+that of the inserted child.
+
+This can be useful for rearranging children when it's difficult to do so
+otherwise, for example to move a child from a sidebar to a bottom bar.
+
+The currently used layout can be switched using the
+[property@MultiLayoutView:layout] or [property@MultiLayoutView:layout-name]
+properties. For example, it can be done via a [class@Adw.Breakpoint] setter
+to change layouts depending on the window size.
+
+## AdwMultiLayoutView as GtkBuildable
+
+The `AdwMultiLayoutView` implementation of the [iface@Gtk.Buildable]
+interface supports adding layouts via `<child>` element with the `type`
+attribute omitted.
+
+It also supports setting children via `<child type="ID">`.
+
+Example of an `AdwMultiLayoutView` UI definition that can display a secondary
+child as either a sidebar or a bottom sheet.
+
+```xml
+<object class="AdwMultiLayoutView">
+ <child>
+ <object class="AdwLayout">
+ <property name="name">sidebar</property>
+ <property name="content">
+ <object class="AdwOverlaySplitView">
+ <property name="sidebar">
+ <object class="AdwLayoutSlot">
+ <property name="id">secondary</property>
+ </object>
+ </property>
+ <property name="content">
+ <object class="AdwLayoutSlot">
+ <property name="id">primary</property>
+ </object>
+ </property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwLayout">
+ <property name="name">bottom-sheet</property>
+ <property name="content">
+ <object class="AdwBottomSheet">
+ <property name="open">True</property>
+ <property name="content">
+ <object class="AdwLayoutSlot">
+ <property name="id">primary</property>
+ </object>
+ </property>
+ <property name="sheet">
+ <object class="AdwLayoutSlot">
+ <property name="id">secondary</property>
+ </object>
+ </property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <child type="primary">
+ <!-- put your primary child here -->
+ </child>
+ <child type="secondary">
+ <!-- put your secondary child here -->
+ </child>
+</object>
+```
+
+## CSS nodes
+
+`AdwMultiLayoutView` has a single CSS node with name `multi-layout-view`.
+
+
+
+
+
+ Creates a new `AdwMultiLayoutView`.
+
+
+ the newly created `AdwMultiLayoutView`
+
+
+
+
+ Adds @layout to @self.
+
+
+
+
+
+
+ a multi-layout view
+
+
+
+ the layout to add
+
+
+
+
+
+ Gets the child for @id to @self.
+
+
+ the child for @id
+
+
+
+
+ a multi-layout view
+
+
+
+ the id of the child
+
+
+
+
+
+ Gets the currently used layout of @self.
+
+
+ the current layout
+
+
+
+
+ a multi-layout view
+
+
+
+
+
+ Gets layout with the name @name from @self, or `NULL` if it doesn't exist.
+
+See [property@Layout:name].
+
+
+ the layout with @name
+
+
+
+
+ a multi-layout view
+
+
+
+ the name of the layout
+
+
+
+
+
+ Returns the name of the currently used layout of @self.
+
+
+ the name of the current layout
+
+
+
+
+ a multi-layout view
+
+
+
+
+
+ Removes @layout from @self.
+
+
+
+
+
+
+ a multi-layout view
+
+
+
+ the layout to add
+
+
+
+
+
+ Sets @child as the child for @id in @self.
+
+When changing layouts, it will be inserted into the slot with @id.
+
+
+
+
+
+
+ a multi-layout view
+
+
+
+ the id of the child
+
+
+
+ the child to set
+
+
+
+
+
+ Makes @layout the current layout of @self.
+
+
+
+
+
+
+ a multi-layout view
+
+
+
+ a layout in @self
+
+
+
+
+
+ Makes the layout with @name the current layout of @self.
+
+See [property@Layout:name].
+
+
+
+
+
+
+ a multi-layout view
+
+
+
+ the name of the layout
+
+
+
+
+
+ The currently used layout.
+
+
+
+ The name of the currently used layout.
+
+See [property@Layout:name].
+
+
+
+
+
+
+
+
+
+
+ Describes the direction of a swipe navigation gesture.
+
+ Corresponds to start or top, depending on orientation and text direction
+
+
+ Corresponds to end or bottom, depending on orientation and text direction
+
+
+
+ A page within [class@NavigationView] or [class@NavigationSplitView].
+
+Each page has a child widget, a title and optionally a tag.
+
+The [signal@NavigationPage::showing], [signal@NavigationPage::shown],
+[signal@NavigationPage::hiding] and [signal@NavigationPage::hidden] signals
+can be used to track the page's visibility within its `AdwNavigationView`.
+
+## Header Bar Integration
+
+When placed inside `AdwNavigationPage`, [class@HeaderBar] will display the
+page title instead of window title.
+
+When used together with [class@NavigationView], it will also display a back
+button that can be used to go back to the previous page. Set
+[property@HeaderBar:show-back-button] to `FALSE` to disable that behavior if
+it's unwanted.
+
+## CSS Nodes
+
+`AdwNavigationPage` has a single CSS node with name
+`navigation-view-page`.
+
+## Accessibility
+
+`AdwNavigationPage` uses the [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwNavigationPage`.
+
+
+ the new created `AdwNavigationPage`
+
+
+
+
+ the child widget
+
+
+
+ the page title
+
+
+
+
+
+ Creates a new `AdwNavigationPage` with provided tag.
+
+
+ the new created `AdwNavigationPage`
+
+
+
+
+ the child widget
+
+
+
+ the page title
+
+
+
+ the page tag
+
+
+
+
+
+ Called when the navigation view transition has been completed and the page
+is fully hidden.
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Called when the page starts hiding at the beginning of the navigation view
+transition.
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Called when the page shows at the beginning of the navigation view
+transition.
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Called when the navigation view transition has been completed and the page
+is fully shown.
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Gets whether @self can be popped from navigation stack.
+
+
+ whether the page can be popped from navigation stack
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Gets the tag of @self.
+
+
+ the page tag
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title of @self
+
+
+
+
+ a navigation page
+
+
+
+
+
+ Sets whether @self can be popped from navigation stack.
+
+Set it to `FALSE` to disable shortcuts and gestures, as well as remove the
+back button from [class@HeaderBar].
+
+Manually calling [method@NavigationView.pop] or using the `navigation.pop`
+action will still work.
+
+See [property@HeaderBar:show-back-button] for removing only the back button,
+but not shortcuts.
+
+
+
+
+
+
+ a navigation page
+
+
+
+ whether the page can be popped from navigation stack
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a navigation page
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the tag for @self.
+
+The tag can be used to retrieve the page with
+[method@NavigationView.find_page], as well as with
+[method@NavigationView.push_by_tag], [method@NavigationView.pop_to_tag] or
+[method@NavigationView.replace_with_tags].
+
+Tags must be unique within each [class@NavigationView].
+
+The tag also must be set to use the `navigation.push` action.
+
+
+
+
+
+
+ a navigation page
+
+
+
+ the page tag
+
+
+
+
+
+ Sets the title of @self.
+
+It's displayed in [class@HeaderBar] instead of the window title, and used as
+the tooltip on the next page's back button, as well as by screen reader.
+
+
+
+
+
+
+ a navigation page
+
+
+
+ the title
+
+
+
+
+
+ Whether the page can be popped from navigation stack.
+
+Set it to `FALSE` to disable shortcuts and gestures, as well as remove the
+back button from [class@HeaderBar].
+
+Manually calling [method@NavigationView.pop] or using the `navigation.pop`
+action will still work.
+
+See [property@HeaderBar:show-back-button] for removing only the back
+button, but not shortcuts.
+
+
+
+ The child widget.
+
+
+
+ The page tag.
+
+The tag can be used to retrieve the page with
+[method@NavigationView.find_page], as well as with
+[method@NavigationView.push_by_tag], [method@NavigationView.pop_to_tag] or
+[method@NavigationView.replace_with_tags].
+
+Tags must be unique within each [class@NavigationView].
+
+The tag also must be set to use the `navigation.push` action.
+
+
+
+ The page title.
+
+It's displayed in [class@HeaderBar] instead of the window title, and used
+as the tooltip on the next page's back button, as well as by screen reader.
+
+
+
+
+
+
+ Emitted when the navigation view transition has been completed and the page
+is fully hidden.
+
+It will always be preceded by [signal@NavigationPage::hiding] or
+[signal@NavigationPage::showing].
+
+
+
+
+
+ Emitted when the page starts hiding at the beginning of the navigation view
+transition.
+
+It will always be followed by [signal@NavigationPage::hidden] or
+[signal@NavigationPage::shown].
+
+
+
+
+
+ Emitted when the page shows at the beginning of the navigation view
+transition.
+
+It will always be followed by [signal@NavigationPage::shown] or
+[signal@NavigationPage::hidden].
+
+
+
+
+
+ Emitted when the navigation view transition has been completed and the page
+is fully shown.
+
+It will always be preceded by [signal@NavigationPage::showing] or
+[signal@NavigationPage::hiding].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a navigation page
+
+
+
+
+
+
+
+
+
+
+
+
+ A widget presenting sidebar and content side by side or as a navigation view.
+
+<picture>
+ <source srcset="navigation-split-view-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="navigation-split-view.png" alt="navigation-split-view">
+</picture>
+<picture>
+ <source srcset="navigation-split-view-collapsed-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="navigation-split-view-collapsed.png" alt="navigation-split-view-collapsed">
+</picture>
+
+`AdwNavigationSplitView` has two [class@NavigationPage] children: sidebar and
+content, and displays them side by side.
+
+When [property@NavigationSplitView:collapsed] is set to `TRUE`, it instead
+puts both children inside an [class@NavigationView]. The
+[property@NavigationSplitView:show-content] controls which child is visible
+while collapsed.
+
+See also [class@OverlaySplitView].
+
+`AdwNavigationSplitView` is typically used together with an [class@Breakpoint]
+setting the `collapsed` property to `TRUE` on small widths, as follows:
+
+```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="AdwNavigationSplitView" id="split_view">
+ <property name="sidebar">
+ <object class="AdwNavigationPage">
+ <property name="title" translatable="yes">Sidebar</property>
+ <property name="child">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <!-- put your sidebar here, e.g.
+ AdwSidebar or AdwViewSwitcherSidebar -->
+ </property>
+ <object>
+ </property>
+ </object>
+ </property>
+ <property name="content">
+ <object class="AdwNavigationPage">
+ <property name="title" translatable="yes">Content</property>
+ <property name="child">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <!-- put your content here -->
+ </property>
+ <object>
+ </property>
+ </object>
+ </property>
+ </object>
+ </property>
+</object>
+```
+
+## Sizing
+
+When not collapsed, `AdwNavigationSplitView` 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@NavigationSplitView:sidebar-width-fraction] property.
+
+The sidebar also has minimum and maximum sizes, controlled with the
+[property@NavigationSplitView:min-sidebar-width] and
+[property@NavigationSplitView:max-sidebar-width] properties.
+
+The minimum and maximum sizes are using the length unit specified with the
+[property@NavigationSplitView: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.
+
+## Header Bar Integration
+
+When used inside `AdwNavigationSplitView`, [class@HeaderBar] will
+automatically hide the window buttons in the middle.
+
+When collapsed, it also displays a back button for the content widget, as
+well as the page titles. See [class@NavigationView] documentation for details.
+
+## Actions
+
+`AdwNavigationSplitView` defines the same actions as `AdwNavigationView`, but
+they can be used even when the split view is not collapsed:
+
+- `navigation.push` takes a string parameter specifying the tag of the page
+to push. If it matches the tag of the content widget, it sets
+[property@NavigationSplitView:show-content] to `TRUE`.
+
+- `navigation.pop` doesn't take any parameters and sets
+[property@NavigationSplitView:show-content] to `FALSE`.
+
+## `AdwNavigationSplitView` as `GtkBuildable`
+
+The `AdwNavigationSplitView` 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
+
+`AdwNavigationSplitView` has a single CSS node with the name
+`navigation-split-view`.
+
+When collapsed, it contains a child node with the name `navigation-view`
+containing both children.
+
+```
+navigation-split-view
+╰── navigation-view
+ ├── [sidebar child]
+ ╰── [content child]
+```
+
+When not collapsed, it contains two nodes with the name `widget`, one with
+the `.sidebar-pane` style class, the other one with `.content-view` style
+class, containing the sidebar and content children respectively.
+
+```
+navigation-split-view
+├── widget.sidebar-pane
+│ ╰── [sidebar child]
+╰── widget.content-pane
+ ╰── [content child]
+```
+
+## Accessibility
+
+`AdwNavigationSplitView` uses the [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwNavigationSplitView`.
+
+
+ the newly created `AdwNavigationSplitView`
+
+
+
+
+ Gets whether @self is collapsed.
+
+
+ whether @self is collapsed
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Sets the content widget for @self.
+
+
+ the content widget
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the maximum sidebar width for @self.
+
+
+ the maximum width
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the minimum sidebar width for @self.
+
+
+ the minimum width
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets which page is visible when @self is collapsed.
+
+
+ whether to show content when collapsed
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the sidebar widget for @self.
+
+
+ the sidebar widget
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the sidebar position for @self.
+
+
+ the sidebar position for @self
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the preferred sidebar width fraction for @self.
+
+
+ the preferred width fraction
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Gets the length unit for minimum and maximum sidebar widths.
+
+
+ the length unit
+
+
+
+
+ a navigation split view
+
+
+
+
+
+ Sets whether @self is collapsed.
+
+When collapsed, the children are put inside an [class@NavigationView],
+otherwise they are displayed side by side.
+
+The [property@NavigationSplitView:show-content] controls which child is
+visible while collapsed.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ whether @self is collapsed
+
+
+
+
+
+ Sets the content widget for @self.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the content widget
+
+
+
+
+
+ Sets the maximum sidebar width for @self.
+
+Maximum width is affected by
+[property@NavigationSplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the maximum width
+
+
+
+
+
+ Sets the minimum sidebar width for @self.
+
+Minimum width is affected by
+[property@NavigationSplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the minimum width
+
+
+
+
+
+ Sets which page is visible when @self is collapsed.
+
+If set to `TRUE`, the content widget will be the visible page when
+[property@NavigationSplitView:collapsed] is `TRUE`; otherwise the sidebar
+widget will be visible.
+
+If the split view is already collapsed, the visible page changes immediately.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ whether to show content when collapsed
+
+
+
+
+
+ Sets the sidebar widget for @self.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the sidebar widget
+
+
+
+
+
+ Sets the sidebar position for @self.
+
+If set to [enum@Gtk.PackType.start], the sidebar is displayed before the
+content, and the sidebar will be the root page when collapsed.
+
+If set to [enum@Gtk.PackType.end], the sidebar is displayed after the
+content, and the content will be the root page.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the new position
+
+
+
+
+
+ Sets the preferred sidebar width as a fraction of the total width of @self.
+
+The preferred width is additionally limited by
+[property@NavigationSplitView:min-sidebar-width] and
+[property@NavigationSplitView:max-sidebar-width].
+
+The sidebar widget can be allocated with larger width if its own minimum
+width exceeds the preferred width.
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the preferred width fraction
+
+
+
+
+
+ Sets the length unit for minimum and maximum sidebar widths.
+
+See [property@NavigationSplitView:min-sidebar-width] and
+[property@NavigationSplitView:max-sidebar-width].
+
+
+
+
+
+
+ a navigation split view
+
+
+
+ the length unit
+
+
+
+
+
+ Whether the split view is collapsed.
+
+When collapsed, the children are put inside an [class@NavigationView],
+otherwise they are displayed side by side.
+
+The [property@NavigationSplitView:show-content] controls which child is
+visible while collapsed.
+
+
+
+ The content widget.
+
+
+
+ The maximum sidebar width.
+
+Maximum width is affected by
+[property@NavigationSplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+ The minimum sidebar width.
+
+Minimum width is affected by
+[property@NavigationSplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+ Determines the visible page when collapsed.
+
+If set to `TRUE`, the content widget will be the visible page when
+[property@NavigationSplitView:collapsed] is `TRUE`; otherwise the sidebar
+widget will be visible.
+
+If the split view is already collapsed, the visible page changes
+immediately.
+
+
+
+ The sidebar widget.
+
+
+
+ The sidebar position.
+
+If set to [enum@Gtk.PackType.start], the sidebar is displayed before the
+content, and the sidebar will be the root page when collapsed.
+
+If set to [enum@Gtk.PackType.end], the sidebar is displayed after the
+content, and the content will be the root page.
+
+
+
+ The preferred sidebar width as a fraction of the total width.
+
+The preferred width is additionally limited by
+[property@NavigationSplitView:min-sidebar-width] and
+[property@NavigationSplitView:max-sidebar-width].
+
+The sidebar widget can be allocated with larger width if its own minimum
+width exceeds the preferred width.
+
+
+
+ The length unit for minimum and maximum sidebar widths.
+
+See [property@NavigationSplitView:min-sidebar-width] and
+[property@NavigationSplitView:max-sidebar-width].
+
+
+
+
+
+
+
+
+
+
+ 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
+[class@Gtk.Stack].
+
+`AdwNavigationView` can only contain [class@NavigationPage] children.
+
+It maintains a navigation stack that can be controlled with
+[method@NavigationView.push] and [method@NavigationView.pop]. The whole
+navigation stack can also be replaced using [method@NavigationView.replace].
+
+`AdwNavigationView` allows to manage pages statically or dynamically.
+
+Static pages can be added using the [method@NavigationView.add] method. The
+`AdwNavigationView` will keep a reference to these pages, but they aren't
+accessible to the user until [method@NavigationView.push] is called (except
+for the first page, which is pushed automatically). Use the
+[method@NavigationView.remove] method to remove them. This is useful for
+applications that have a small number of unique pages and just need
+navigation between them.
+
+Dynamic pages are automatically destroyed once they are popped off the
+navigation stack. To add a page like this, push it using the
+[method@NavigationView.push] method without calling
+[method@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">
+ <!-- put your content here -->
+ </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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+
+ Creates a new `AdwNavigationView`.
+
+
+ the new created `AdwNavigationView`
+
+
+
+
+ Permanently adds @page to @self.
+
+Any page that has been added will stay in @self even after being popped from
+the navigation stack.
+
+Adding a page while no page is visible will automatically push it to the
+navigation stack.
+
+See [method@NavigationView.remove].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ the page to add
+
+
+
+
+
+ Finds a page in @self by its tag.
+
+See [property@NavigationPage:tag].
+
+
+ the page with the given tag
+
+
+
+
+ a navigation view
+
+
+
+ a page tag
+
+
+
+
+
+ Gets whether @self animates page transitions.
+
+
+ whether to animate page transitions
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Gets whether @self is horizontally homogeneous.
+
+
+ whether @self is horizontally homogeneous
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the pages in navigation stack.
+
+The pages are sorted from root page to visible page.
+
+This can be used to keep an up-to-date view.
+
+
+ a list model for the navigation stack
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Gets whether pressing Escape pops the current page on @self.
+
+
+ whether to pop the current page
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Gets the previous page for @page.
+
+If @page is in the navigation stack, returns the page popping @page will
+reveal.
+
+If @page is the root page or is not in the navigation stack, returns `NULL`.
+
+
+ the previous page
+
+
+
+
+ a navigation view
+
+
+
+ a page in @self
+
+
+
+
+
+ Gets whether @self is vertically homogeneous.
+
+
+ whether @self is vertically homogeneous
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Gets the currently visible page in @self.
+
+
+ the currently visible page
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Gets the tag of the currently visible page in @self.
+
+
+ the tag of the currently visible page
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Pops the visible page from the navigation stack.
+
+Does nothing if the navigation stack contains less than two pages.
+
+If [method@NavigationView.add] hasn't been called, the page is automatically
+removed.
+
+[signal@NavigationView::popped] will be emitted for the current visible page.
+
+See [method@NavigationView.pop_to_page] and
+[method@NavigationView.pop_to_tag].
+
+
+ `TRUE` if a page has been popped
+
+
+
+
+ a navigation view
+
+
+
+
+
+ Pops pages from the navigation stack until @page is visible.
+
+@page must be in the navigation stack.
+
+If [method@NavigationView.add] hasn't been called for any of the popped pages,
+they are automatically removed.
+
+[signal@NavigationView::popped] will be be emitted for each of the popped
+pages.
+
+See [method@NavigationView.pop] and [method@NavigationView.pop_to_tag].
+
+
+ `TRUE` if any pages have been popped
+
+
+
+
+ a navigation view
+
+
+
+ the page to pop to
+
+
+
+
+
+ Pops pages from the navigation stack until page with the tag @tag is visible.
+
+The page must be in the navigation stack.
+
+If [method@NavigationView.add] hasn't been called for any of the popped pages,
+they are automatically removed.
+
+[signal@NavigationView::popped] will be emitted for each of the popped pages.
+
+See [method@NavigationView.pop_to_page] and [property@NavigationPage:tag].
+
+
+ `TRUE` if any pages have been popped
+
+
+
+
+ a navigation view
+
+
+
+ a page tag
+
+
+
+
+
+ Pushes @page onto the navigation stack.
+
+If [method@NavigationView.add] hasn't been called, the page is automatically
+removed once it's popped.
+
+[signal@NavigationView::pushed] will be emitted for @page.
+
+See [method@NavigationView.push_by_tag].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ the page to push
+
+
+
+
+
+ Pushes the page with the tag @tag onto the navigation stack.
+
+If [method@NavigationView.add] hasn't been called, the page is automatically
+removed once it's popped.
+
+[signal@NavigationView::pushed] will be emitted for the page.
+
+See [method@NavigationView.push] and [property@NavigationPage:tag].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ the page tag
+
+
+
+
+
+ Removes @page from @self.
+
+If @page is currently in the navigation stack, it will be removed once it's
+popped. Otherwise, it's removed immediately.
+
+See [method@NavigationView.add].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ the page to remove
+
+
+
+
+
+ Replaces the current navigation stack with @pages.
+
+The last page becomes the visible page.
+
+Replacing the navigation stack has no animation.
+
+If [method@NavigationView.add] hasn't been called for any pages that are no
+longer in the navigation stack, they are automatically removed.
+
+@n_pages can be 0, in that case no page will be visible after calling this
+method. This can be useful for removing all pages from @self.
+
+The [signal@NavigationView::replaced] signal will be emitted.
+
+See [method@NavigationView.replace_with_tags].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ the new navigation stack
+
+
+
+
+
+ the number of pages in @pages
+
+
+
+
+
+ Replaces the current navigation stack with pages with the tags @tags.
+
+The last page becomes the visible page.
+
+Replacing the navigation stack has no animation.
+
+If [method@NavigationView.add] hasn't been called for any pages that are no
+longer in the navigation stack, they are automatically removed.
+
+@n_tags can be 0, in that case no page will be visible after calling this
+method. This can be useful for removing all pages from @self.
+
+The [signal@NavigationView::replaced] signal will be emitted.
+
+See [method@NavigationView.replace] and [property@NavigationPage:tag].
+
+
+
+
+
+
+ a navigation view
+
+
+
+ tags of the pages in the
+ navigation stack
+
+
+
+
+
+ the number of tags
+
+
+
+
+
+ Sets whether @self should animate page transitions.
+
+Gesture-based transitions are always animated.
+
+
+
+
+
+
+ a navigation view
+
+
+
+ whether to animate page transitions
+
+
+
+
+
+ Sets @self to be horizontally homogeneous or not.
+
+If the view is horizontally homogeneous, it allocates the same width for
+all pages.
+
+If it's not, the view may change width when a different page becomes visible.
+
+
+
+
+
+
+ a navigation view
+
+
+
+ whether to make @self horizontally homogeneous
+
+
+
+
+
+ Sets whether pressing Escape pops the current page on @self.
+
+Applications using `AdwNavigationView` to implement a browser may want to
+disable it.
+
+
+
+
+
+
+ a navigation view
+
+
+
+ whether to pop the current page when pressing Escape
+
+
+
+
+
+ Sets @self to be vertically homogeneous or not.
+
+If the view is vertically homogeneous, it allocates the same height for
+all pages.
+
+If it's not, the view may change height when a different page becomes
+visible.
+
+
+
+
+
+
+ a navigation view
+
+
+
+ whether to make @self vertically homogeneous
+
+
+
+
+
+ Whether to animate page transitions.
+
+Gesture-based transitions are always animated.
+
+
+
+ Whether the view is horizontally homogeneous.
+
+If the view is horizontally homogeneous, it allocates the same width for
+all pages.
+
+If it's not, the page may change width when a different page becomes
+visible.
+
+
+
+ A list model that contains the pages in navigation stack.
+
+The pages are sorted from root page to visible page.
+
+This can be used to keep an up-to-date view.
+
+
+
+ Whether pressing Escape pops the current page.
+
+Applications using `AdwNavigationView` to implement a browser may want to
+disable it.
+
+
+
+ Whether the view is vertically homogeneous.
+
+If the view is vertically homogeneous, it allocates the same height for
+all pages.
+
+If it's not, the view may change height when a different page becomes
+visible.
+
+
+
+ The currently visible page.
+
+
+
+ The tag of the currently visible page.
+
+
+
+ Emitted when a push shortcut or a gesture is triggered.
+
+To support the push shortcuts and gestures, the application is expected to
+return the page to push in the handler.
+
+This signal can be emitted multiple times for the gestures, for example
+when the gesture is cancelled by the user. As such, the application must
+not make any irreversible changes in the handler, such as removing the page
+from a forward stack.
+
+Instead, it should be done in the [signal@NavigationView::pushed] handler.
+
+ the page to push
+
+
+
+
+ Emitted after @page has been popped from the navigation stack.
+
+See [method@NavigationView.pop].
+
+When using [method@NavigationView.pop_to_page] or
+[method@NavigationView.pop_to_tag], this signal is emitted for each of the
+popped pages.
+
+
+
+
+
+ the popped page
+
+
+
+
+
+ Emitted after a page has been pushed to the navigation stack.
+
+See [method@NavigationView.push].
+
+
+
+
+
+ Emitted after the navigation stack has been replaced.
+
+See [method@NavigationView.replace].
+
+
+
+
+
+
+
+
+
+
+
+
+ An [class@AnimationTarget] that doesn't do anything.
+
+
+ Creates a new `AdwAnimationTarget` that doesn't do anything.
+
+
+ the newly created target
+
+
+
+
+
+
+
+
+ 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
+them side by side.
+
+When [property@OverlaySplitView:collapsed] is set to `TRUE`, the sidebar is
+instead shown as an overlay above the content widget.
+
+The sidebar can be hidden or shown using the
+[property@OverlaySplitView:show-sidebar] property.
+
+Sidebar can be displayed before or after the content, this can be controlled
+with the [property@OverlaySplitView:sidebar-position] property.
+
+Collapsing the split view automatically hides the sidebar widget, and
+uncollapsing it shows the sidebar. If this behavior is not desired, the
+[property@OverlaySplitView:pin-sidebar] property can be used to override it.
+
+`AdwOverlaySplitView` supports an edge swipe gesture for showing the sidebar,
+and a swipe from the sidebar for hiding it. Gestures are only supported on
+touchscreen, but not touchpad. Gestures can be controlled with the
+[property@OverlaySplitView:enable-show-gesture] and
+[property@OverlaySplitView:enable-hide-gesture] properties.
+
+See also [class@NavigationSplitView].
+
+`AdwOverlaySplitView` is typically used together with an [class@Breakpoint]
+setting the `collapsed` property to `TRUE` on small widths, as follows:
+
+```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">
+ <!-- put your sidebar here -->
+ </property>
+ <property name="content">
+ <!-- put your content here -->
+ </property>
+ </object>
+ </property>
+</object>
+```
+
+`AdwOverlaySplitView` is often used for implementing the
+[utility pane](https://developer.gnome.org/hig/patterns/containers/utility-panes.html)
+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 `.overlay-pane`
+style class and the other one has no style classes.
+
+```
+overlay-split-view
+├── widget.overlay-pane
+│ ╰── [sidebar child]
+╰── widget
+ ╰── [content child]
+```
+
+## Accessibility
+
+`AdwOverlaySplitView` uses the [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+
+ Creates a new `AdwOverlaySplitView`.
+
+
+ the newly created `AdwOverlaySplitView`
+
+
+
+
+ Gets whether @self is collapsed.
+
+
+ whether @self is collapsed
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the content widget for @self.
+
+
+ the content widget for @self
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets whether @self can be closed with a swipe gesture.
+
+
+ `TRUE` if @self can be closed with a swipe gesture
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets whether @self can be opened with an edge swipe gesture.
+
+
+ `TRUE` if @self can be opened with a swipe gesture
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the maximum sidebar width for @self.
+
+
+ the maximum width
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the minimum sidebar width for @self.
+
+
+ the minimum width
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets whether the sidebar widget is pinned for @self.
+
+
+ whether if the sidebar widget is pinned
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets whether the sidebar widget is shown for @self.
+
+
+ `TRUE` if the sidebar widget is shown
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the sidebar widget for @self.
+
+
+ the sidebar widget for @self
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the sidebar position for @self.
+
+
+ the sidebar position for @self
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the preferred sidebar width fraction for @self.
+
+
+ the preferred width fraction
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Gets the length unit for minimum and maximum sidebar widths.
+
+
+ the length unit
+
+
+
+
+ an overlay split view
+
+
+
+
+
+ Sets whether @self view is collapsed.
+
+When collapsed, the sidebar widget is presented as an overlay above the
+content widget, otherwise they are displayed side by side.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ whether @self is collapsed
+
+
+
+
+
+ Sets the content widget for @self.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the content widget
+
+
+
+
+
+ Sets whether @self can be closed with a swipe gesture.
+
+Only touchscreen swipes are supported.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ whether @self can be closed with a swipe gesture
+
+
+
+
+
+ Sets whether @self can be opened with an edge swipe gesture.
+
+Only touchscreen swipes are supported.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ whether @self can be opened with a swipe gesture
+
+
+
+
+
+ Sets the maximum sidebar width for @self.
+
+Maximum width is affected by [property@OverlaySplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the maximum width
+
+
+
+
+
+ Sets the minimum sidebar width for @self.
+
+Minimum width is affected by [property@OverlaySplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the minimum width
+
+
+
+
+
+ Sets whether the sidebar widget is pinned for @self.
+
+By default, collapsing @self automatically hides the sidebar widget, and
+uncollapsing it shows the sidebar. If set to `TRUE`, sidebar visibility never
+changes on its own.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ whether to pin the sidebar widget
+
+
+
+
+
+ Sets whether the sidebar widget is shown for @self.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ whether to show the sidebar widget
+
+
+
+
+
+ Sets the sidebar widget for @self.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the sidebar widget
+
+
+
+
+
+ Sets the sidebar position for @self.
+
+If it's set to [enum@Gtk.PackType.start], the sidebar is displayed before the
+content; if [enum@Gtk.PackType.end], it's displayed after the content.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the new position
+
+
+
+
+
+ Sets the preferred sidebar width as a fraction of the total width of @self.
+
+The preferred width is additionally limited by
+[property@OverlaySplitView:min-sidebar-width] and
+[property@OverlaySplitView:max-sidebar-width].
+
+The sidebar widget can be allocated with larger width if its own minimum
+width exceeds the preferred width.
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the preferred width fraction
+
+
+
+
+
+ Sets the length unit for minimum and maximum sidebar widths.
+
+See [property@OverlaySplitView:min-sidebar-width] and
+[property@OverlaySplitView:max-sidebar-width].
+
+
+
+
+
+
+ an overlay split view
+
+
+
+ the length unit
+
+
+
+
+
+ Whether the split view is collapsed.
+
+When collapsed, the sidebar widget is presented as an overlay above the
+content widget, otherwise they are displayed side by side.
+
+
+
+ The content widget.
+
+
+
+ Whether the sidebar can be closed with a swipe gesture.
+
+Only touchscreen swipes are supported.
+
+
+
+ Whether the sidebar can be opened with an edge swipe gesture.
+
+Only touchscreen swipes are supported.
+
+
+
+ The maximum sidebar width.
+
+Maximum width is affected by
+[property@OverlaySplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+ The minimum sidebar width.
+
+Minimum width is affected by
+[property@OverlaySplitView:sidebar-width-unit].
+
+The sidebar widget can still be allocated with larger width if its own
+minimum width exceeds it.
+
+
+
+ Whether the sidebar widget is pinned.
+
+By default, collapsing @self automatically hides the sidebar widget, and
+uncollapsing it shows the sidebar. If set to `TRUE`, sidebar visibility
+never changes on its own.
+
+
+
+ Whether the sidebar widget is shown.
+
+
+
+ The sidebar widget.
+
+
+
+ The sidebar position.
+
+If it's set to [enum@Gtk.PackType.start], the sidebar is displayed before
+the content; if [enum@Gtk.PackType.end], it's displayed after the content.
+
+
+
+ The preferred sidebar width as a fraction of the total width.
+
+The preferred width is additionally limited by
+[property@OverlaySplitView:min-sidebar-width] and
+[property@OverlaySplitView:max-sidebar-width].
+
+The sidebar widget can be allocated with larger width if its own minimum
+width exceeds the preferred width.
+
+
+
+ The length unit for minimum and maximum sidebar widths.
+
+See [property@OverlaySplitView:min-sidebar-width] and
+[property@OverlaySplitView:max-sidebar-width].
+
+
+
+
+
+
+
+
+
+
+ Describes child packing behavior in a [class@WrapLayout] or [class@WrapBox].
+
+See [property@WrapLayout:pack-direction] and
+[property@WrapBox:pack-direction].
+
+ Pack children from left to right for LTR languages,
+ or top to bottom vertically.
+
+
+ Pack children from right to left for LTR languages,
+ or bottom to top vertically.
+
+
+
+ A [class@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
+clipboard, and shows a warning when Caps Lock is engaged. If the underlying
+platform allows it, `AdwPasswordEntryRow` will also place the text in a
+non-pageable memory area, to avoid it being written out to disk by the
+operating system.
+
+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.
+
+
+
+
+
+
+
+ Creates a new `AdwPasswordEntryRow`.
+
+
+ the newly created `AdwPasswordEntryRow`
+
+
+
+
+
+
+
+
+
+
+
+ A dialog showing application's preferences.
+
+<picture>
+ <source srcset="preferences-dialog-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="preferences-dialog.png" alt="preferences-dialog">
+</picture>
+
+The `AdwPreferencesDialog` widget presents an application's preferences
+gathered into pages and groups. The preferences are searchable by the user.
+
+## Actions
+
+`AdwPrefencesDialog` defines the `navigation.pop` action, it doesn't take any
+parameters and pops the current subpage from the navigation stack, equivalent
+to calling [method@PreferencesDialog.pop_subpage].
+
+## CSS nodes
+
+`AdwPreferencesDialog` has a main CSS node with the name `dialog` and the
+style class `.preferences`.
+
+
+
+
+
+
+ Creates a new `AdwPreferencesDialog`.
+
+
+ the newly created `AdwPreferencesDialog`
+
+
+
+
+ Adds a preferences page to @self.
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ the page to add
+
+
+
+
+
+ Displays @toast.
+
+See [method@ToastOverlay.add_toast].
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ a toast
+
+
+
+
+
+ Gets whether search is enabled for @self.
+
+
+ whether search is enabled for @self.
+
+
+
+
+ a preferences dialog
+
+
+
+
+
+ Gets the currently visible page of @self.
+
+
+ the visible page
+
+
+
+
+ a preferences dialog
+
+
+
+
+
+ Gets the name of currently visible page of @self.
+
+
+ the name of the visible page
+
+
+
+
+ a preferences dialog
+
+
+
+
+
+ Pop the visible page from the subpage stack of @self.
+
+
+ `TRUE` if a page has been popped
+
+
+
+
+ a preferences dialog
+
+
+
+
+
+ Pushes @page onto the subpage stack of @self.
+
+The page will be automatically removed when popped.
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ the subpage
+
+
+
+
+
+ Removes a page from @self.
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ the page to remove
+
+
+
+
+
+ Sets whether search is enabled for @self.
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ whether search is enabled
+
+
+
+
+
+ Makes @page the visible page of @self.
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ a page of @self
+
+
+
+
+
+ Makes the page with the given name visible.
+
+See [property@PreferencesDialog:visible-page].
+
+
+
+
+
+
+ a preferences dialog
+
+
+
+ the name of the page to make visible
+
+
+
+
+
+ Whether search is enabled.
+
+
+
+ The currently visible page.
+
+
+
+ The name of the currently visible page.
+
+See [property@AdwPreferencesDialog:visible-page].
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ 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,
+which in turn are represented by [class@PreferencesRow].
+
+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]
+to let the user look for a preference.
+
+The [property@PreferencesGroup:separate-rows] property can be used to
+separate the rows within the group, same as when using the
+[`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class
+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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwPreferencesGroup`.
+
+
+ the newly created `AdwPreferencesGroup`
+
+
+
+
+ Adds a child to @self.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ the widget to add
+
+
+
+
+
+ Binds @model to @self.
+
+See [method@Gtk.ListBox.bind_model].
+
+
+
+
+
+
+ a preferences group
+
+
+
+ a list model to bind
+
+
+
+
+ a function creating a row for each item, or `NULL` in case @model is `NULL`
+
+
+
+ user data passed to @create_row_func
+
+
+
+ function for freeing @user_data
+
+
+
+
+
+ Gets the description of @self.
+
+
+ the description of @self
+
+
+
+
+ a preferences group
+
+
+
+
+
+ Gets the suffix for @self's header.
+
+
+ the suffix for @self's header.
+
+
+
+
+ a preferences group
+
+
+
+
+
+ Gets the row at @index.
+
+Can return `NULL` if @index is larger than the number of rows in the group.
+
+
+ the row at @index
+
+
+
+
+ a preferences group
+
+
+
+ a row index
+
+
+
+
+
+ Gets whether @self's rows are separated.
+
+
+ whether rows are separated
+
+
+
+
+ a preferences group
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title of @self
+
+
+
+
+ a preferences group
+
+
+
+
+
+ Removes a child from @self.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ the child to remove
+
+
+
+
+
+ Sets the description for @self.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ the description
+
+
+
+
+
+ Sets the suffix for @self's header.
+
+Displayed above the list, next to the title and description.
+
+Suffixes are commonly used to show a button or a spinner for the whole group.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ the suffix to set
+
+
+
+
+
+ Sets whether @self's rows are separated.
+
+Equivalent to using the
+[`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class
+on a [class@Gtk.ListBox] instead of `.boxed-list`.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ whether to separate rows
+
+
+
+
+
+ Sets the title for @self.
+
+
+
+
+
+
+ a preferences group
+
+
+
+ the title
+
+
+
+
+
+ The description for this group of preferences.
+
+
+
+ The header suffix widget.
+
+Displayed above the list, next to the title and description.
+
+Suffixes are commonly used to show a button or a spinner for the whole
+group.
+
+
+
+ Whether to separate rows.
+
+Equivalent to using the
+[`.boxed-list-separate`](style-classes.html#boxed-lists-cards) style class
+on a [class@Gtk.ListBox] instead of `.boxed-list`.
+
+
+
+ The title for this group of preferences.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ A page from [class@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
+of a preferences window.
+
+## CSS nodes
+
+`AdwPreferencesPage` has a single CSS node with name `preferencespage`.
+
+## Accessibility
+
+`AdwPreferencesPage` uses the [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwPreferencesPage`.
+
+
+ the newly created `AdwPreferencesPage`
+
+
+
+
+ Adds a preferences group to @self.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the group to add
+
+
+
+
+
+ Gets the banner displayed at the top of the page.
+
+
+ the banner for @self
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets the description of @self.
+
+
+ the description of @self.
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets whether the description is centered.
+
+
+ whether the description is centered.
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets the group at @index.
+
+Can return `NULL` if @index is larger than the number of groups in the page.
+
+
+ the group at @index
+
+
+
+
+ a preferences page
+
+
+
+ a group index
+
+
+
+
+
+ Gets the icon name for @self.
+
+
+ the icon name for @self
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets the name of @self.
+
+
+ the name of @self
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title of @self.
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Gets whether an embedded underline in the title indicates a mnemonic.
+
+
+ whether an embedded underline in the title indicates a mnemonic
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Inserts a preferences group to @self at @index.
+
+If @index is negative or larger than the number of groups, appends the group,
+same as [method@PreferencesPage.add].
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the group to add
+
+
+
+ the index to insert @group a
+
+
+
+
+
+ Removes a group from @self.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the group to remove
+
+
+
+
+
+ Scrolls the scrolled window of @self to the top.
+
+
+
+
+
+
+ a preferences page
+
+
+
+
+
+ Sets the banner displayed at the top of the page.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the banner to display at the top of the page
+
+
+
+
+
+ Sets the description of @self.
+
+The description is displayed at the top of the page.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the description
+
+
+
+
+
+ Sets whether the description should be centered.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ If the description should be centered
+
+
+
+
+
+ Sets the icon name for @self.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the name of @self.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the name
+
+
+
+
+
+ Sets the title of @self.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ the title
+
+
+
+
+
+ Sets whether an embedded underline in the title indicates a mnemonic.
+
+
+
+
+
+
+ a preferences page
+
+
+
+ `TRUE` if underlines in the text indicate mnemonics
+
+
+
+
+
+ A [class@Banner] displayed at the top of the page.
+
+
+
+ The description to be displayed at the top of the page.
+
+
+
+ Whether the description should be centered.
+
+
+
+ The icon name for this page.
+
+
+
+ The name of this page.
+
+
+
+ The title for this page.
+
+
+
+ Whether an embedded underline in the title indicates a mnemonic.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ A [class@Gtk.ListBoxRow] used to present preferences.
+
+The `AdwPreferencesRow` widget has a title that [class@PreferencesDialog]
+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.
+
+[class@ActionRow] and its derivatives are convenient to use as preference
+rows as they take care of presenting the preference's title while letting you
+compose the inputs of the preference around it.
+
+
+
+
+
+
+ Creates a new `AdwPreferencesRow`.
+
+
+ the newly created `AdwPreferencesRow`
+
+
+
+
+ Gets the title of the preference represented by @self.
+
+
+ the title
+
+
+
+
+ a preferences row
+
+
+
+
+
+ Gets whether the user can copy the title from the label
+
+
+ whether the user can copy the title from the label
+
+
+
+
+ a preferences row
+
+
+
+
+
+ Gets whether to use Pango markup for the title label.
+
+
+ whether to use markup
+
+
+
+
+ a preferences row
+
+
+
+
+
+ Gets whether an embedded underline in the title indicates a mnemonic.
+
+
+ whether an embedded underline in the title indicates a mnemonic
+
+
+
+
+ a preferences row
+
+
+
+
+
+ Sets the title of the preference represented by @self.
+
+The title is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+
+
+
+ a preferences row
+
+
+
+ the title
+
+
+
+
+
+ Sets whether the user can copy the title from the label
+
+See also [property@Gtk.Label:selectable].
+
+
+
+
+
+
+ a preferences row
+
+
+
+ `TRUE` if the user can copy the title from the label
+
+
+
+
+
+ Sets whether to use Pango markup for the title label.
+
+Subclasses may also use it for other labels, such as subtitle.
+
+See also [func@Pango.parse_markup].
+
+
+
+
+
+
+ a preferences row
+
+
+
+ whether to use markup
+
+
+
+
+
+ Sets whether an embedded underline in the title indicates a mnemonic.
+
+
+
+
+
+
+ a preferences row
+
+
+
+ `TRUE` if underlines in the text indicate mnemonics
+
+
+
+
+
+ The title of the preference represented by this row.
+
+The title is interpreted as Pango markup unless
+[property@PreferencesRow:use-markup] is set to `FALSE`.
+
+
+
+ Whether the user can copy the title from the label.
+
+See also [property@Gtk.Label:selectable].
+
+
+
+ Whether to use Pango markup for the title label.
+
+Subclasses may also use it for other labels, such as subtitle.
+
+See also [func@Pango.parse_markup].
+
+
+
+ Whether an embedded underline in the title indicates a mnemonic.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ A window to present an application's preferences.
+
+<picture>
+ <source srcset="preferences-window-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="preferences-window.png" alt="preferences-window">
+</picture>
+
+The `AdwPreferencesWindow` widget presents an application's preferences
+gathered into pages and groups. The preferences are searchable by the user.
+
+## CSS nodes
+
+`AdwPreferencesWindow` has a main CSS node with the name `window` and the
+style class `.preferences`.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+
+
+ Creates a new `AdwPreferencesWindow`.
+ Use [class@PreferencesDialog].
+
+
+ the newly created `AdwPreferencesWindow`
+
+
+
+
+ Adds a preferences page to @self.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the page to add
+
+
+
+
+
+ Displays @toast.
+
+See [method@ToastOverlay.add_toast].
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ a toast
+
+
+
+
+
+ Closes the current subpage.
+
+If there is no presented subpage, this does nothing.
+ Use [method@PreferencesWindow.pop_subpage] instead.
+
+
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Gets whether gestures and shortcuts for closing subpages are enabled.
+ Use [method@NavigationPage.get_can_pop] instead.
+
+
+ whether gestures and shortcuts are enabled.
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Gets whether search is enabled for @self.
+ Use [class@PreferencesDialog].
+
+
+ whether search is enabled for @self.
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Gets the currently visible page of @self.
+ Use [class@PreferencesDialog].
+
+
+ the visible page
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Gets the name of currently visible page of @self.
+ Use [class@PreferencesDialog].
+
+
+ the name of the visible page
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Pop the visible page from the subpage stack of @self.
+ Use [class@PreferencesDialog].
+
+
+ `TRUE` if a page has been popped
+
+
+
+
+ a preferences window
+
+
+
+
+
+ Sets @subpage as the window's subpage and opens it.
+
+The transition can be cancelled by the user, in which case visible child will
+change back to the previously visible child.
+ Use [method@PreferencesWindow.push_subpage] instead.
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the subpage
+
+
+
+
+
+ Pushes @page onto the subpage stack of @self.
+
+The page will be automatically removed when popped.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the subpage
+
+
+
+
+
+ Removes a page from @self.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the page to remove
+
+
+
+
+
+ Sets whether gestures and shortcuts for closing subpages are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back mouse button
+
+The keyboard back key is also supported, as well as the
+<kbd>Alt</kbd>+<kbd>←</kbd> shortcut.
+
+For right-to-left locales, gestures and shortcuts are reversed.
+
+Has no effect for subpages added with [method@PreferencesWindow.push_subpage].
+ Use [method@NavigationPage.set_can_pop] instead.
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the new value
+
+
+
+
+
+ Sets whether search is enabled for @self.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ whether search is enabled
+
+
+
+
+
+ Makes @page the visible page of @self.
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ a page of @self
+
+
+
+
+
+ Makes the page with the given name visible.
+
+See [property@PreferencesWindow:visible-page].
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+ a preferences window
+
+
+
+ the name of the page to make visible
+
+
+
+
+
+ Whether gestures and shortcuts for closing subpages are enabled.
+
+The supported gestures are:
+
+- One-finger swipe on touchscreens
+- Horizontal scrolling on touchpads (usually two-finger swipe)
+- Back mouse button
+
+The keyboard back key is also supported, as well as the
+<kbd>Alt</kbd>+<kbd>←</kbd> shortcut.
+
+For right-to-left locales, gestures and shortcuts are reversed.
+
+Has no effect for subpages added with
+[method@PreferencesWindow.push_subpage].
+ Use [property@NavigationPage:can-pop] instead.
+
+
+
+ Whether search is enabled.
+ Use [class@PreferencesDialog].
+
+
+
+ The currently visible page.
+ Use [class@PreferencesDialog].
+
+
+
+ The name of the currently visible page.
+
+See [property@PreferencesWindow:visible-page].
+ Use [class@PreferencesDialog].
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ An [class@AnimationTarget] changing the value of a property of a
+[class@GObject.Object] instance.
+
+
+ Creates a new `AdwPropertyAnimationTarget` for the @property_name property on
+@object.
+
+
+ the newly created `AdwPropertyAnimationTarget`
+
+
+
+
+ an object to be animated
+
+
+
+ the name of the property on @object to animate
+
+
+
+
+
+ Creates a new `AdwPropertyAnimationTarget` for the @pspec property on
+@object.
+
+
+ new newly created `AdwPropertyAnimationTarget`
+
+
+
+
+ an object to be animated
+
+
+
+ the param spec of the property on @object to animate
+
+
+
+
+
+ Gets the object animated by @self.
+
+The `AdwPropertyAnimationTarget` instance does not hold a strong reference on
+the object; make sure the object is kept alive throughout the target's
+lifetime.
+
+
+ the animated object
+
+
+
+
+ a property animation target
+
+
+
+
+
+ Gets the `GParamSpec` of the property animated by @self.
+
+
+ the animated property's `GParamSpec`
+
+
+
+
+ a property animation target
+
+
+
+
+
+ The object whose property will be animated.
+
+The `AdwPropertyAnimationTarget` instance does not hold a strong reference
+on the object; make sure the object is kept alive throughout the target's
+lifetime.
+
+
+
+ The `GParamSpec` of the property to be animated.
+
+
+
+
+
+
+
+ Describes the possible styles of [class@AlertDialog] response buttons.
+
+See [method@AlertDialog.set_response_appearance].
+
+ the default appearance.
+
+
+ used to denote important responses such as the
+ affirmative action.
+
+
+ used to draw attention to the potentially damaging
+ consequences of using the response. This appearance acts as a warning to
+ the user.
+
+
+
+ A widget that displays a keyboard shortcut.
+
+<picture>
+ <source srcset="shortcut-label-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label.png" alt="shortcut-label">
+</picture>
+
+The shown shortcut can be set using the [property@ShortcutLabel:accelerator]
+property.
+
+Optionally, if no shortcut is set, `AdwShortcutLabel` will display a
+placeholder set with the [property@ShortcutLabel:disabled-text] property.
+
+The following types of shortcuts can be displayed:
+
+- A single shortcut in [func@Gtk.accelerator_parse] format, e.g. `<Control>C`:
+
+ <picture>
+ <source srcset="shortcut-label-single-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label-single.png" alt="shortcut-label-single">
+ </picture>
+
+- Multiple alternative shortcuts, separated with spaces, e.g. `<Shift>A Home`:
+
+ <picture>
+ <source srcset="shortcut-label-alternative-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label-alternative.png" alt="shortcut-label-alternative">
+ </picture>
+
+- A range of shortcuts, separated with `...`, e.g. `<Alt>1...9`:
+
+ <picture>
+ <source srcset="shortcut-label-range-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label-range.png" alt="shortcut-label-range">
+ </picture>
+
+- Multiple keys pressed at once, separated with `&`, e.g. `Control_L&Control_R`:
+
+ <picture>
+ <source srcset="shortcut-label-multiple-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label-multiple.png" alt="shortcut-label-multiple">
+ </picture>
+
+- Multiple shortcuts or keys, pressed sequentially, separated with `+`, e.g. `<Control>C+<Control>X`:
+
+ <picture>
+ <source srcset="shortcut-label-sequence-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcut-label-sequence.png" alt="shortcut-label-sequence">
+ </picture>
+
+::: note
+ `<`, `>` and `&` need to be escaped as `<`, `>` and `&` when used in UI files.
+
+## CSS nodes
+
+`AdwShortcutLabel` has a single CSS node with name `shortcut-label`. The
+individual keycap labels each have the `.keycap` style class, while the
+labels separating them have the `.dimmed` style class.
+
+## Accessibility
+
+`AdwShortcutLabel` uses the [enum@Gtk.AccessibleRole.label] role.
+
+See also: [class@ShortcutsDialog].
+
+
+
+
+
+ Creates a new `AdwShortcutLabel` showing @accelerator.
+
+
+ the newly created `AdwShortcutLabel`
+
+
+
+
+ the accelerator to show
+
+
+
+
+
+ Gets the accelerator displayed by @self.
+
+
+ the displayed accelerator
+
+
+
+
+ a shortcut label
+
+
+
+
+
+ Gets the text displayed by @self when no accelerator is set.
+
+
+ the text displayed when no accelerator is set
+
+
+
+
+ a shortcut label
+
+
+
+
+
+ Sets the accelerator to be displayed by @self.
+
+
+
+
+
+
+ a shortcut label
+
+
+
+ the accelerator to be displayed
+
+
+
+
+
+ Sets the text to be displayed by @self when no accelerator is set.
+
+
+
+
+
+
+ a shortcut label
+
+
+
+ the text displayed when no accelerator is set
+
+
+
+
+
+ The displayed accelerator.
+
+
+
+ The text displayed when no accelerator is set.
+
+
+
+
+
+
+
+
+
+
+ A dialog that displays application's keyboard shortcuts.
+
+<picture>
+ <source srcset="shortcuts-dialog-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcuts-dialog.png" alt="shortcuts-dialog">
+</picture>
+
+Shortcuts are grouped into sections, represented by [class@ShortcutsSection]
+objects. Each section has one or more items, represented by
+[class@ShortcutsItem] objects.
+
+To add a section to the dialog, use [method@ShortcutsDialog.add], or add it
+as a child when using UI files.
+
+Sections without titles can be used to further subdivide each section into
+groups.
+
+Example of an `AdwShortcutsDialog` UI definition:
+
+```xml
+<object class="AdwShortcutsDialog" id="shortcuts_dialog">
+ <child>
+ <object class="AdwShortcutsSection">
+ <property name="title" translatable="yes">General</property>
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Open Menu</property>
+ <property name="accelerator">F10</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Quit</property>
+ <property name="action-name">app.quit</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwShortcutsSection">
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Move Tab Left</property>
+ <property name="accelerator"><Shift><Ctrl>Page_Up</property>
+ <property name="direction">ltr</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Move Tab Right</property>
+ <property name="accelerator"><Shift><Ctrl>Page_Down</property>
+ <property name="direction">ltr</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Move Tab Right</property>
+ <property name="accelerator"><Shift><Ctrl>Page_Up</property>
+ <property name="direction">rtl</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwShortcutsItem">
+ <property name="title" translatable="yes">Move Tab Left</property>
+ <property name="accelerator"><Shift><Ctrl>Page_Down</property>
+ <property name="direction">rtl</property>
+ </object>
+ </child>
+ </object>
+ </child>
+</object>
+```
+
+If the `app.quit` action has the <kbd>Ctrl</kbd><kbd>Q</kbd> accelerator
+associated with it, the result will look as follows:
+
+<picture>
+ <source srcset="shortcuts-dialog-example-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="shortcuts-dialog-example.png" alt="shortcuts-dialog-example">
+</picture>
+
+The recommended way to use `AdwShortcutsDialog` is via [class@Application]'s
+automatic resource loading.
+
+See also: [class@ShortcutLabel].
+
+
+
+
+
+
+ Creates a new `AdwShortcutsDialog`.
+
+
+ the newly created `AdwShortcutsDialog`
+
+
+
+
+ Adds @section to @self.
+
+
+
+
+
+
+ a shortcuts dialog
+
+
+
+ the section to add
+
+
+
+
+
+
+
+
+
+
+
+
+ An object representing an individual shortcut in [class@ShortcutsSection].
+
+A shortcut has a title, an optional subtitle, and an accelerator.
+
+Accelerator must be specified in the format [class@ShortcutLabel] accepts.
+
+Alternatively, the [property@ShortcutsItem:action-name] property can be used
+to automatically get accelerator associated with the specified action, as set
+via [method@Gtk.Application.set_accels_for_action].
+
+If both are specified, the accelerator will be used if the action couldn't
+be found or doesn't have an accelerator associated for it.
+
+If [property@ShortcutsItem:direction] is set, the shortcut will only be
+displayed for the specified text direction. This allows to display different
+shortcuts for different text directions.
+
+
+ Creates a new `AdwShortcutsItem` with @title and @accelerator.
+
+
+ the newly created `AdwShortcutsItem`
+
+
+
+
+ the shortcut title
+
+
+
+ the shortcut accelerator
+
+
+
+
+
+ Creates a new `AdwShortcutsItem` with @title and @action_name.
+
+
+ the newly created `AdwShortcutsItem`
+
+
+
+
+ the shortcut title
+
+
+
+ the shortcut action name
+
+
+
+
+
+ Gets the accelerator of @self.
+
+
+ the accelerator
+
+
+
+
+ a shortcuts item
+
+
+
+
+
+ Gets the action name to get the accelerator from.
+
+
+ the action name
+
+
+
+
+ a shortcuts item
+
+
+
+
+
+ Gets the direction of @self.
+
+
+ the shortcut direction
+
+
+
+
+ a shortcuts item
+
+
+
+
+
+ Gets the subtitle of @self.
+
+
+ the subtitle
+
+
+
+
+ a shortcuts item
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a shortcuts item
+
+
+
+
+
+ Sets the accelerator of @self.
+
+@accelerator must be in the format [class@ShortcutLabel] accepts.
+
+
+
+
+
+
+ a shortcuts item
+
+
+
+ the accelerator to use
+
+
+
+
+
+ Sets the action name to get the accelerator from.
+
+
+
+
+
+
+ a shortcuts item
+
+
+
+ the action name to use
+
+
+
+
+
+ Sets the direction of @self.
+
+If set to [enum@Gtk.TextDirection.ltr] or [enum@Gtk.TextDirection.rtl], the
+shortcut will only be displayed for this direction.
+
+
+
+
+
+
+ a shortcuts item
+
+
+
+ the shortcut direction
+
+
+
+
+
+ Sets the subtitle of @self.
+
+
+
+
+
+
+ a shortcuts item
+
+
+
+ the subtitle to use
+
+
+
+
+
+ Sets the title of @self.
+
+
+
+
+
+
+ a shortcuts item
+
+
+
+ the title to use
+
+
+
+
+
+ The shortcut accelerator.
+
+Accelerator must be in the format [class@ShortcutLabel] accepts.
+
+
+
+ Fully qualified action name to get the accelerator from.
+
+
+
+ The shortcut direction.
+
+If set to [enum@Gtk.TextDirection.LTR] or [enum@Gtk.TextDirection.rtl], the
+shortcut will only be displayed for this direction.
+
+
+
+ The subtitle of the shortcut.
+
+
+
+ The title of the shortcut.
+
+
+
+
+
+
+
+
+
+
+ An object representing a section in [class@ShortcutsDialog].
+
+It contains [class@ShortcutsItem] objects, use [method@ShortcutsSection.add] to
+add them.
+
+`AdwShortcutsSection` implements the [iface@Gio.ListModel] interface and
+allows to access the added shortcut items through it.
+
+## `AdwShortcutsSection` as `GtkBuildable`
+
+`AdwShortcutsSection` allows adding `AdwShortcutsItem` objects as children.
+
+
+
+
+ Creates a new `AdwShortcutsSection` with @title as its title if provided.
+
+
+ the newly created `AdwShortcutsSection`
+
+
+
+
+ the section title
+
+
+
+
+
+ Adds @item to @self.
+
+
+
+
+
+
+ a shortcuts section
+
+
+
+ the item to add
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a shortcuts section
+
+
+
+
+
+ Sets the title of @self.
+
+
+
+
+
+
+ a shortcuts section
+
+
+
+ the title to use
+
+
+
+
+
+ The type of the items. See [method@Gio.ListModel.get_item_type].
+
+
+
+ The number of items. See [method@Gio.ListModel.get_n_items].
+
+
+
+ The title of the section, can be `NULL`.
+
+
+
+
+
+
+
+
+
+
+ Adaptive sidebar widget.
+
+<picture>
+ <source srcset="sidebar-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="sidebar.png" alt="sidebar">
+</picture>
+
+`AdwSidebar` contains [class@SidebarSection] objects, which in turn contain
+[class@SidebarItem] objects.
+
+To add sections, use [method@Sidebar.append], [method@Sidebar.prepend] or
+[method@Sidebar.insert].
+
+To remove sections, use [method@Sidebar.remove] or
+[method@Sidebar.remove_all].
+
+To inspect the items, use [method@Sidebar.get_item] or
+[property@Sidebar:items].
+
+To inspect sections themselves, use [method@Sidebar.get_section] or
+[property@Sidebar:sections].
+
+## Selection and activation
+
+`AdwSidebar` has zero or one selected items. The index of the item can be
+accessed and changed via [property@Sidebar:selected]. Set it to
+[const@Gtk.INVALID_LIST_POSITION] to remove selection.
+
+Selection cannot be permanently disabled.
+
+[property@Sidebar:selected-item] can be used to access the selected item.
+
+Connect to the [signal@Sidebar::activated] signal to run code when an item
+has been activated. This can be used to toggle the visible pane when used in
+a split view.
+
+See also: [class@ViewSwitcherSidebar].
+
+## Modes
+
+<picture>
+ <source srcset="sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="sidebar-modes.png" alt="sidebar-modes">
+</picture>
+
+`AdwSidebar` is adaptive and can act as either a regular sidebar, or a page
+of boxed lists.
+
+Use the [property@Sidebar:mode] to determine its look and behavior.
+
+A typical use case involves using `AdwSidebar` inside the sidebar pane of a
+[class@NavigationSplitView], and switching mode to page whenever it's
+collapsed, as follows:
+
+```xml
+<object class="AdwWindow">
+ <property name="default-width">800</property>
+ <property name="default-height">600</property>
+ <child>
+ <object class="AdwBreakpoint">
+ <condition>max-width: 400sp</condition>
+ <setter object="split_view" property="collapsed">True</setter>
+ <setter object="sidebar" property="mode">page</setter>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwNavigationSplitView" id="split_view">
+ <property name="sidebar">
+ <object class="AdwNavigationPage">
+ <property name="title" translatable="yes">Items</property>
+ <property name="child">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <object class="AdwSidebar" id="sidebar">
+ <!-- Calls adw_navigation_split_view_set_show_content (split_view, TRUE); -->
+ <signal name="activated" handler="sidebar_activated_cb"/>
+ <!-- put your items here -->
+ </object>
+ </property>
+ </object>
+ </property>
+ </object>
+ </property>
+ <property name="content">
+ <object class="AdwNavigationPage">
+ <property name="title" translatable="yes">Details</property>
+ <property name="child">
+ <!-- put your details view here -->
+ </property>
+ </object>
+ </property>
+ </object>
+ </property>
+</object>
+```
+
+When used with [class@OverlaySplitView], the sidebar should stay in sidebar
+mode, as the sidebar pane is still a sidebar when collapsed.
+
+## Search
+
+`AdwSidebar` supports filtering items via the [property@Sidebar:filter]
+property.
+
+Use [property@Sidebar:placeholder] to provide an empty state widget. It will
+be shown when all items have been filtered out, or the sidebar has no items
+otherwise.
+
+## Context Menu
+
+To create a context menu for the sidebar items, use the
+[property@Sidebar:menu-model] property to provide a menu model, and the
+[signal@Sidebar::setup-menu] signal to set up actions for the given item.
+
+To set or override the menu for just one section, use
+[property@SidebarSection:menu-model] instead.
+
+## Drag-and-Drop
+
+`AdwSidebar` items can have a drop target for arbitrary content.
+
+Use [method@Sidebar.setup_drop_target] to set it up, specifying the
+supported content types and drag actions, then connect to
+[signal@Sidebar::drop] to handle drops.
+
+In some cases, it may be necessary to determine the used action based on the
+dragged content, or the hovered item.
+
+To determine it based on the sidebar item, connect to the
+[signal@Sidebar::drop-enter] signal and return the action from its handler.
+
+To determine it based on the content, set [property@Sidebar:drop-preload] to
+`TRUE`, then connect to [signal@Sidebar::drop-value-loaded] signal and return
+the action from its handler.
+
+In both cases the action will be passed as a parameter to the
+[signal@Sidebar::drop] signal.
+
+Regardless of whether a drop target was set up, dragging content over sidebar
+items activates them after a timeout. To disable this behavior for specific
+items, set [property@SidebarItem:drag-motion-activate] to `FALSE` on them.
+
+## Prefix and Suffix
+
+`AdwSidebar` can display additional widgets before and after the sidebar
+items. Use the [property@Sidebar:prefix] and [property@Sidebar:suffix]
+properties to add them.
+
+## `AdwSidebar` as `GtkBuildable`
+
+`AdwSidebar` allows adding sections as children.
+
+Example of an `AdwSidebar` UI definition:
+
+```xml
+<object class="AdwSidebar">
+ <child>
+ <object class="AdwSidebarSection">
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Recent</property>
+ <property name="icon-name">document-open-recent-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Starred</property>
+ <property name="icon-name">starred-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarSection">
+ <property name="title" translatable="yes">Places</property>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Music</property>
+ <property name="icon-name">folder-music-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Pictures</property>
+ <property name="icon-name">folder-pictures-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Videos</property>
+ <property name="icon-name">folder-videos-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarSection">
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Trash</property>
+ <property name="icon-name">user-trash-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
+</object>
+```
+
+## CSS nodes
+
+`AdwSidebar` has a main CSS node with the name `sidebar`.
+
+Internally, it's using a [class@Gtk.ListBox] with the
+[`.navigation-sidebar`](style-classes.html#sidebars) style class in sidebar
+mode, or an [class@PreferencesPage] in page mode.
+
+## Accessibility
+
+`AdwSidebar` uses the [enum@Gtk.AccessibleRole.generic] role.
+
+
+
+
+
+ Creates a new `AdwSidebar`.
+
+
+ the newly created `AdwSidebar`
+
+
+
+
+ Appends @section to @self.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ a section to append
+
+
+
+
+
+ Gets whether drop data should be preloaded on hover.
+
+
+ whether drop data should be preloaded on hover
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the item filter for @self.
+
+
+ the item filter
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the item at @index within @self.
+
+The index starts from 0 at the top of the sidebar, and is same as the one
+returned by [method@SidebarItem.get_index].
+
+Can return `NULL` if @index is larger or equal to the number of items.
+
+
+ the item at @index
+
+
+
+
+ a sidebar
+
+
+
+ index of the item
+
+
+
+
+
+ Gets a list model with @self's items.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel] and creates sections
+corresponding to the sidebar's sections.
+
+The model also implements [iface@Gtk.SelectionModel] and can be used to
+track and change the selection.
+
+To only track sections, use [property@Sidebar:sections] instead.
+
+
+ a model containing the items
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the context menu model for @self's items.
+
+
+ the context menu model
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets @self's look and behavior.
+
+
+ the current mode
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the placeholder widget for @self.
+
+
+ the placeholder widget
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the widget displayed before the sidebar items.
+
+
+ the prefix widget
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the section at @index within @self.
+
+Can return `NULL` if @index is larger or equal to the number of sections.
+
+
+ the section at @index
+
+
+
+
+ a sidebar
+
+
+
+ index of the section
+
+
+
+
+
+ Gets a list model with @self's sections.
+
+This can be used to keep an up-to-date view.
+
+To track items, use [property@Sidebar:items] instead.
+
+
+ a model containing the sections
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the index of the currently selected item.
+
+See also: [method@Sidebar.get_selected_item].
+
+
+ index of the currently selected item
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the currently selected item.
+
+This is a convenience method, equivalent to calling [method@Sidebar.get_item]
+with [property@Sidebar:selected] provided as the index.
+
+To change selection, use [method@Sidebar.set_selected].
+
+
+ the selected item
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Gets the widget displayed after sidebar items.
+
+
+ the suffix widget
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Inserts @section at @position to @self.
+
+If @position is -1, or larger than the total number of sections in @self,
+the section will be appended to the end.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ a section to insert
+
+
+
+ position to insert @section at
+
+
+
+
+
+ Prepends @section to @self.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ a section to prepend
+
+
+
+
+
+ Removes @section from @self.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ a section to remove
+
+
+
+
+
+ Removes all sections from @self.
+
+
+
+
+
+
+ a sidebar
+
+
+
+
+
+ Sets whether drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+
+
+
+ a sidebar
+
+
+
+ whether to preload drop data
+
+
+
+
+
+ Sets the item filter for @self.
+
+Can be used to implement search within the sidebar.
+
+Use [property@Sidebar:placeholder] to provide an empty state.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the item filter
+
+
+
+
+
+ Sets the context menu model for @self's items.
+
+When a context menu is shown for an item, it will be constructed from the
+provided menu model. Use the [signal@Sidebar::setup-menu] signal to set up
+the menu actions for the particular item.
+
+[property@Sidebar:menu-model] will be preferred over this model if set.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ a menu model
+
+
+
+
+
+ Sets @self's look and behavior.
+
+<picture>
+ <source srcset="sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="sidebar-modes.png" alt="sidebar-modes">
+</picture>
+
+If set to [enum@Adw.SidebarMode.sidebar], behaves like a sidebar: with a
+sidebar style and a persistent selection.
+
+If set to [enum@Adw.SidebarMode.page], behaves like a page of boxed lists.
+In this mode, the selection is invisible and only tracked to determine the
+initially selected item once switched back to sidebar mode.
+
+The page mode is intended to be used with [class@NavigationSplitView] when
+collapsed, as the sidebar pane becomes a page there.
+
+When used with [class@OverlaySplitView], the sidebar should stay in sidebar
+mode, as the sidebar pane is still a sidebar when collapsed.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the new mode
+
+
+
+
+
+ Sets the placeholder widget for @self.
+
+This widget will be shown if @self has no items, or all of its items have
+been filtered out by [property@Sidebar:filter].
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the placeholder widget
+
+
+
+
+
+ Sets the widget to be displayed before the sidebar items.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the prefix widget
+
+
+
+
+
+ Selects the item at @selected.
+
+If set to [const@Gtk.INVALID_LIST_POSITION], no item is selected.
+
+If [property@Sidebar:mode] is set to [enum@Adw.SidebarMode.page], the
+selection is invisible, but still tracked, indicating which item will be
+selected once the mode is changed to [enum@Adw.SidebarMode.sidebar].
+
+See also: [property@Sidebar:selected-item].
+
+
+
+
+
+
+ a sidebar
+
+
+
+ index of the newly selected item
+
+
+
+
+
+ Sets the widget to be displayed after the sidebar items.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the suffix widget
+
+
+
+
+
+ Sets up a drop target on the items.
+
+This allows to drag arbitrary content onto items.
+
+The [signal@Sidebar::drop] signal can be used to handle the drop.
+
+
+
+
+
+
+ a sidebar
+
+
+
+ the supported actions
+
+
+
+
+ all supported `GType`s that can be dropped
+
+
+
+
+
+ number of @types
+
+
+
+
+
+ Whether the drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+ The item filter.
+
+Can be used to implement search within the sidebar.
+
+Use [property@Sidebar:placeholder] to provide an empty state.
+
+
+
+ A list model with the sidebar's items.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel] and creates sections
+corresponding to the sidebar's sections.
+
+The model also implements [iface@Gtk.SelectionModel] and can be used to
+track and change the selection.
+
+To only track sections, use [property@Sidebar:sections] instead.
+
+
+
+ Context menu model for the items.
+
+When a context menu is shown for an item, it will be constructed from the
+provided menu model. Use the [signal@Sidebar::setup-menu] signal to set up
+the menu actions for the particular item.
+
+[property@Sidebar:menu-model] will be preferred over this model if set.
+
+
+
+ Determines the sidebar's look and behavior.
+
+<picture>
+ <source srcset="sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="sidebar-modes.png" alt="sidebar-modes">
+</picture>
+
+If set to [enum@Adw.SidebarMode.sidebar], behaves like a sidebar: with a
+sidebar style and a persistent selection.
+
+If set to [enum@Adw.SidebarMode.page], behaves like a page of boxed lists.
+In this mode, the selection is invisible and only tracked to determine the
+initially selected item once switched back to sidebar mode.
+
+The page mode is intended to be used with [class@NavigationSplitView] when
+collapsed, as the sidebar pane becomes a page there.
+
+When used with [class@OverlaySplitView], the sidebar should stay in sidebar
+mode, as the sidebar pane is still a sidebar when collapsed.
+
+
+
+ The placeholder widget.
+
+This widget will be shown if the sidebar has no items, or all of its items
+have been filtered out by [property@Sidebar:filter].
+
+
+
+ A widget to be displayed before the sidebar items.
+
+
+
+ A list model with the sidebar's sections.
+
+This can be used to keep an up-to-date view.
+
+To track items, use [property@Sidebar:items] instead.
+
+
+
+ The index of the currently selected item.
+
+If set to [const@Gtk.INVALID_LIST_POSITION], no item is selected.
+
+If [property@Sidebar:mode] is set to [enum@Adw.SidebarMode.page], the
+selection is invisible, but still tracked, indicating which item will be
+selected once the mode is changed to [enum@Adw.SidebarMode.sidebar].
+
+See also: [property@Sidebar:selected-item].
+
+
+
+ The currently selected item.
+
+This is a convenience property, equivalent to calling
+[method@Sidebar.get_item] with [property@Sidebar:selected] provided as the
+index.
+
+To change selection, use [property@Sidebar:selected].
+
+
+
+ A widget to be displayed after the sidebar items.
+
+
+
+ Emitted when an item at @index has been activated.
+
+
+
+
+
+ the item index
+
+
+
+
+
+ Emitted when content is dropped onto the item at @index.
+
+The content must be of one of the types set up via
+[method@Sidebar.setup_drop_target].
+
+See [signal@Gtk.DropTarget::drop].
+
+ whether the drop was accepted
+
+SinceL 1.9
+
+
+
+
+ index of the item the content was dropped onto
+
+
+
+ the `GValue` being dropped
+
+
+
+ the preferred drop action
+
+
+
+
+
+ Emitted when the pointer enters the item at @index.
+
+Applications can use this to set their default drop action even when
+[property@Sidebar:drop-preload] is set to `FALSE`.
+
+See [signal@Gtk.DropTarget::enter].
+
+ the preferred action for the drop
+
+
+
+
+ index of the hovered item
+
+
+
+
+
+ Emitted when the dropped content is preloaded for the item at @index.
+
+In order for data to be preloaded, [property@Sidebar:drop-preload]
+must be set to `TRUE`.
+
+The content must be of one of the types set up via
+[method@Sidebar.setup_drop_target].
+
+See [property@Gtk.DropTarget:value].
+
+ the preferred action for the drop
+
+
+
+
+ index of the hovered item
+
+
+
+ the `GValue` being dropped
+
+
+
+
+
+ Emitted when a context menu is opened or closed for @item.
+
+If the menu has been closed, @item will be set to `NULL`.
+
+It can be used to set up menu actions before showing the menu, for example
+disable actions not applicable to @item.
+
+
+
+
+
+ an item in @self
+
+
+
+
+
+
+
+
+
+
+
+
+ An item within [class@SidebarSection].
+
+Sidebar items must have a title, set via [property@SidebarItem:title].
+
+Sidebar items should, but are not required to, have an icon. Icons can be set
+from an icon name, via [property@SidebarItem:icon-name], or a
+[iface@Gdk.Paintable], via [property@SidebarItem:icon-paintable].
+
+Items can also have subtitles, set with the [property@SidebarItem:subtitle]
+property. Subtitles should be used sparingly.
+
+To add a tooltip, use [property@SidebarItem:tooltip]. Tooltips always use
+Pango markup.
+
+Items can have an arbitrary prefix and suffix widgets, set with the
+[property@SidebarItem:prefix] and [property@SidebarItem:suffix] properties.
+They will be displayed at the start (before icon) and end of its row, and
+before the arrow in the [enum@Adw.SidebarMode.page] mode.
+
+To hide or disable the item, use the [property@SidebarItem:visible] and
+[property@SidebarItem:enabled] properties respectively.
+
+To access the items's section, use [property@SidebarItem:section].
+
+It's also possible to access the index of the item in both the section and
+the sidebar, using [method@SidebarItem.get_section_index] and
+[method@SidebarItem.get_index] respectively.
+
+Dragging content over sidebar items activates them by default. To disable
+this behavior, set [property@SidebarItem:drag-motion-activate] to `FALSE`.
+
+`AdwSidebarItem` is derivable, and applications that need to associate each
+page with data can store it in the items themselves this way.
+
+
+ Creates a new `AdwSidebarItem` with @title as its title.
+
+
+ the newly created `AdwSidebarItem`
+
+
+
+
+ the item title
+
+
+
+
+
+ Gets whether @self will be activated on pointer motion during Drag-and-Drop.
+
+
+ whether to enable the item on drag motion
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets whether @self is enabled.
+
+
+ whether the item is enabled
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the icon name for @item.
+
+
+ the icon name
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the paintable used as the icon for @item.
+
+
+ the icon paintable
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets index of @self within its [class@Sidebar].
+
+If @self is within a section, but that section is not in a sidebar, index
+will be within the section only.
+
+If @self is not within a section, the index will be 0.
+
+The item can later be retrieved by passing this index into
+[method@Sidebar.get_item].
+
+
+ the index of @self
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the prefix widget for @self.
+
+
+ the prefix widget
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the section @self is in.
+
+
+ the section of @self
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets index of @self within its [class@SidebarSection].
+
+If @self is not within a section, the index will be 0.
+
+The item can later be retrieved by passing this index into
+[method@SidebarSection.get_item].
+
+
+ the index of @self
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the subtitle of @self.
+
+
+ the subtitle
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the suffix widget for @self.
+
+
+ the suffix widget
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets the tooltip of @self.
+
+
+ the tooltip
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets whether an underline in the title indicates a mnemonic.
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Gets whether @self is visible.
+
+
+ whether the item is visible
+
+
+
+
+ a sidebar item
+
+
+
+
+
+ Sets whether to activate @self on pointer motion during Drag-and-Drop.
+
+This is needed to be able to drag content into the page the item
+represents, when the sidebar is used as a page switcher. However, it may be
+unwanted when dropping content onto the item itself, so it can be disabled.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ whether to enable the item on drag motion
+
+
+
+
+
+ Sets whether @self is enabled.
+
+See [property@Gtk.Widget:sensitive].
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ whether to enable the item
+
+
+
+
+
+ Sets the icon name for @item.
+
+Mutually exclusive with [property@SidebarItem:icon-paintable].
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the paintable to use as the icon for @item.
+
+Mutually exclusive with [property@SidebarItem:icon-name].
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the icon paintable
+
+
+
+
+
+ Sets the prefix widget for @self.
+
+Prefix will be shown at the start of the item's row, before the icon.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the prefix widget
+
+
+
+
+
+ Sets the subtitle of @self.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the subtitle
+
+
+
+
+
+ Sets the suffix widget for @self.
+
+Suffix will be shown at the end of the item's row, or before the arrow in
+the [enum@Adw.SidebarMode.page] mode.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the suffix widget
+
+
+
+
+
+ Sets the title of @self.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the title
+
+
+
+
+
+ Sets the tooltip of @self.
+
+The tooltip can be marked up with the Pango text markup language.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ the tooltip
+
+
+
+
+
+ Sets whether an underline in the title indicates a mnemonic.
+
+The mnemonic can be used to activate the item.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+
+ Sets whether @self is visible.
+
+
+
+
+
+
+ a sidebar item
+
+
+
+ whether the item is visible
+
+
+
+
+
+ Whether to activate the item on pointer motion during Drag-and-Drop.
+
+This is needed to be able to drag content into the page the item
+represents, when the sidebar is used as a page switcher. However, it may be
+unwanted when dropping content onto the item itself, so it can be disabled.
+
+
+
+ Whether the item is enabled.
+
+See [property@Gtk.Widget:sensitive].
+
+
+
+ The icon name for this item.
+
+Mutually exclusive with [property@SidebarItem:icon-paintable].
+
+
+
+ The paintable to use as the icon for this item.
+
+Mutually exclusive with [property@SidebarItem:icon-name].
+
+
+
+ The prefix widget for this item.
+
+Prefix will be shown at the start of the item's row, before the icon.
+
+
+
+ The section the item is in.
+
+
+
+ Subtitle of the item.
+
+
+
+ The suffix widget for this item.
+
+Suffix will be shown at the end of the item's row, or before the arrow in
+the [enum@Adw.SidebarMode.page] mode.
+
+
+
+ Title of the item.
+
+
+
+ The tooltip of the item.
+
+The tooltip can be marked up with the Pango text markup language.
+
+
+
+ Whether an underline in the title indicates a mnemonic.
+
+The mnemonic can be used to activate the item.
+
+
+
+ Whether the item is visible.
+
+
+
+
+
+
+
+
+
+ The parent class
+
+
+
+
+
+
+
+
+
+ Determines how an [class@Sidebar] should look and behave.
+
+See [property@Sidebar:mode] and [property@ViewSwitcherSidebar:mode].
+
+ The sidebar should be displayed as a sidebar
+
+
+ The sidebar should be displayed as boxed lists page
+
+
+
+ A section within [class@Sidebar].
+
+`AdwSidebarSection` contains [class@SidebarItem] objects.
+
+Section can optionally have a title, set with the
+[property@SidebarSection:title] property. If a title is not set, the section
+will have a separator in front of it, or just spacing in the
+[enum@Adw.SidebarMode.page] mode.
+
+Sections can also have an arbitrary suffix widget, set with the
+[property@SidebarSection:suffix] properties. It will be displayed at the end
+of its header.
+
+To add items, use [method@SidebarSection.append],
+[method@SidebarSection.prepend] or [method@SidebarSection.insert].
+
+To remove items, use [method@SidebarSection.remove] or
+[method@SidebarSection.remove_all].
+
+To inspect the items, use [method@SidebarSection.get_item] or
+[property@SidebarSection:items].
+
+To get the sidebar the section is in, use[property@SidebarSection:sidebar].
+
+## Binding models
+
+`AdwSidebarSection` can show items from a provided [iface@Gio.ListModel],
+using [method@SidebarSection.bind_model]. It works the same way as
+[method@Gtk.ListBox.bind_model], except the provided function creates an
+[class@SidebarItem] rather than a [class@Gtk.ListBoxRow].
+
+While a model is bound, adding or removing items manually is not allowed.
+Inspecting them is still allowed, but discouraged.
+
+## `AdwSidebarSection` as `GtkBuildable`
+
+`AdwSidebarSection` allows adding items as children.
+
+Example of an `AdwSidebarSection` UI definition:
+
+```xml
+<object class="AdwSidebarSection">
+ <property name="title" translatable="yes">Places</property>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Music</property>
+ <property name="icon-name">folder-music-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Pictures</property>
+ <property name="icon-name">folder-pictures-symbolic</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwSidebarItem">
+ <property name="title" translatable="yes">Videos</property>
+ <property name="icon-name">folder-videos-symbolic</property>
+ </object>
+ </child>
+</object>
+```
+
+Result:
+
+<picture>
+ <source srcset="sidebar-section-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="sidebar-section.png" alt="sidebar-section">
+</picture>
+
+
+
+ Creates a new `AdwSidebarSection`.
+
+
+ the newly created `AdwSidebarSection`
+
+
+
+
+ Appends @item to @self.
+
+Cannot be used while a model is bound via [method@SidebarSection.bind_model].
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ an item to append
+
+
+
+
+
+ Binds @model to @self.
+
+If @self was already bound to a model, that previous binding is
+destroyed.
+
+The contents of @self are cleared and then filled with items that
+represent items from @model. @self is updated whenever @model changes.
+
+If @model is `NULL`, @self is left empty.
+
+Calling [method@SidebarSection.prepend], [method@SidebarSection.insert],
+[method@SidebarSection.append], [method@SidebarSection.remove] or
+[method@SidebarSection.remove_all] while a model is bound is not allowed.
+
+Accessing items and modifying them is allowed, but the changes will be erased
+whenever that part of the model changes, so it's not recommended.
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ the model to be bound
+
+
+
+
+ a function that creates [class@SidebarItem] for model items, or `NULL` in
+ case @model is also `NULL`
+
+
+
+ user data passed to @create_widget_func
+
+
+
+ function for freeing @user_data
+
+
+
+
+
+ Gets the item at @index within @self.
+
+The index starts from 0 at the top of the section, and is same as the one
+returned by [method@SidebarItem.get_section_index].
+
+Can return `NULL` if @index is larger or equal to the number of items.
+
+
+ the item at @index
+
+
+
+
+ a sidebar section
+
+
+
+ index of the item
+
+
+
+
+
+ Gets a list model with @self's items.
+
+This can be used to keep an up-to-date view.
+
+
+ a model containing the items
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Gets the context menu model for @self's items.
+
+
+ the context menu model
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Gets the sidebar @self is in.
+
+
+ the sidebar of @self
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Gets the suffix widget for @self.
+
+
+ the suffix widget
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Inserts @item at @position to @self.
+
+If @position is -1, or larger than the total number of items in @self,
+the item will be appended to the end.
+
+Cannot be used while a model is bound via [method@SidebarSection.bind_model].
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ an item to insert
+
+
+
+ position to insert @item at
+
+
+
+
+
+ Prepends @item to @self.
+
+Cannot be used while a model is bound via [method@SidebarSection.bind_model].
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ an item to prepend
+
+
+
+
+
+ Removes @item from @self.
+
+Cannot be used while a model is bound via [method@SidebarSection.bind_model].
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ an item to remove
+
+
+
+
+
+ Removes all items from @self.
+
+Cannot be used while a model is bound via [method@SidebarSection.bind_model].
+
+
+
+
+
+
+ a sidebar section
+
+
+
+
+
+ Sets the context menu model for @self's items.
+
+When a context menu is shown for an item, it will be constructed from the
+provided menu model. Use the [signal@Sidebar::setup-menu] signal to set up
+the menu actions for the particular item.
+
+If not set, [property@Sidebar:menu-model] will be used instead.
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ a menu model
+
+
+
+
+
+ Sets the suffix widget for @self.
+
+Suffix will be shown at the end of the header.
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ the suffix widget
+
+
+
+
+
+ Sets the title of @self.
+
+If set, it will be displayed instead of the separator before the section.
+
+
+
+
+
+
+ a sidebar section
+
+
+
+ the title
+
+
+
+
+
+ A list model with the section's items.
+
+This can be used to keep an up-to-date view.
+
+
+
+ Context menu model for the section items.
+
+When a context menu is shown for an item, it will be constructed from the
+provided menu model. Use the [signal@Sidebar::setup-menu] signal to set up
+the menu actions for the particular item.
+
+If not set, [property@Sidebar:menu-model] will be used instead.
+
+
+
+ The sidebar the section is in.
+
+
+
+ The suffix widget for this section.
+
+Suffix will be displayed at the end of the header.
+
+
+
+ Title of the section.
+
+If set, it will be displayed instead of the separator before the section.
+
+
+
+
+
+
+
+
+
+
+ Called for sidebars that are bound to a [iface@Gio.ListModel] with
+[method@SidebarSection.bind_model] for each
+item that gets added to the model.
+
+
+ an `AdwSidebarItem` that represents @item
+
+
+
+
+ the item from the model for which to create an item for
+
+
+
+ user data
+
+
+
+
+
+ An [class@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:
+
+```xml
+<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.
+
+## 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
+[enum@Gtk.AccessibleRole.spin-button] role.
+
+
+
+
+
+
+
+ Creates a new `AdwSpinRow`.
+
+
+ the newly created `AdwSpinRow`
+
+
+
+
+ the adjustment that this spin row should use
+
+
+
+ the rate the value changes when holding a button or key
+
+
+
+ the number of decimal places to display
+
+
+
+
+
+ Creates a new `AdwSpinRow` with the given properties.
+
+This is a convenience constructor that allows creation of a numeric
+`AdwSpinRow` without manually creating an adjustment. The value is initially
+set to the minimum value and a page increment of 10 * @step is the default.
+The precision of the spin row is equivalent to the precisions of @step.
+
+::: note
+ The way in which the precision is derived works best if @step is a power
+ of ten. If the resulting precision is not suitable for your needs, use
+ [method@SpinRow.set_digits] to correct it.
+
+
+ the new `AdwSpinRow`
+
+
+
+
+ minimum allowable value
+
+
+
+ maximum allowable value
+
+
+
+ increment added or subtracted by spinning the widget
+
+
+
+
+
+ Changes the properties of an existing spin row.
+
+The adjustment, climb rate, and number of decimal places are updated
+accordingly.
+
+
+
+
+
+
+ a spin row
+
+
+
+ the adjustment that this spin row should use
+
+
+
+ the new climb rate
+
+
+
+ the number of decimal places to display
+
+
+
+
+
+ Gets the adjustment that holds the value for the spin row.
+
+
+ the adjustment that holds the spin row's value
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets the acceleration rate when you hold down a button or key.
+
+
+ the acceleration rate when you hold down a button or key
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets the number of decimal places to display.
+
+
+ the number of decimal places to display
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets whether non-numeric characters should be ignored.
+
+
+ whether non-numeric characters should be ignored.
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets whether invalid values are snapped to nearest step increment.
+
+
+ whether invalid values are snapped to the nearest step increment
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets the policy for updating the spin row.
+
+
+ the policy for updating the spin row
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets the current value.
+
+
+ the current value
+
+
+
+
+ a spin row
+
+
+
+
+
+ Gets whether the spin row should wrap upon reaching its limits.
+
+
+ whether the spin row should wrap upon reaching its limits
+
+
+
+
+ a spin row
+
+
+
+
+
+ Sets the adjustment that holds the value for the spin row.
+
+
+
+
+
+
+ a spin row
+
+
+
+ an adjustment
+
+
+
+
+
+ Sets the acceleration rate when you hold down a button or key.
+
+
+
+
+
+
+ a spin row
+
+
+
+ the acceleration rate when you hold down a button or key
+
+
+
+
+
+ Sets the number of decimal places to display.
+
+
+
+
+
+
+ a spin row
+
+
+
+ the number of decimal places to display
+
+
+
+
+
+ Sets whether non-numeric characters should be ignored.
+
+
+
+
+
+
+ a spin row
+
+
+
+ whether non-numeric characters should be ignored
+
+
+
+
+
+ Sets the minimum and maximum allowable values for @self.
+
+If the current value is outside this range, it will be adjusted
+to fit within the range, otherwise it will remain unchanged.
+
+
+
+
+
+
+ a spin row
+
+
+
+ minimum allowable value
+
+
+
+ maximum allowable value
+
+
+
+
+
+ Sets whether invalid values are snapped to the nearest step increment.
+
+
+
+
+
+
+ a spin row
+
+
+
+ whether invalid values are snapped to the nearest step increment
+
+
+
+
+
+ Sets the policy for updating the spin row.
+
+The options are always, or only when the value is invalid.
+
+
+
+
+
+
+ a spin row
+
+
+
+ the policy for updating the spin row
+
+
+
+
+
+ Sets the current value.
+
+
+
+
+
+
+ a spin row
+
+
+
+ a new value
+
+
+
+
+
+ Sets whether the spin row should wrap upon reaching its limits.
+
+
+
+
+
+
+ a spin row
+
+
+
+ whether the spin row should wrap upon reaching its limits
+
+
+
+
+
+ Manually force an update of the spin row.
+
+
+
+
+
+
+ a spin row
+
+
+
+
+
+ The adjustment that holds the value of the spin row.
+
+
+
+ The acceleration rate when you hold down a button or key.
+
+
+
+ The number of decimal places to display.
+
+
+
+ Whether non-numeric characters should be ignored.
+
+
+
+ Whether invalid values are snapped to the nearest step increment.
+
+
+
+ The policy for updating the spin row.
+
+The options are always, or only when the value is invalid.
+
+
+
+ The current value.
+
+
+
+ Whether the spin row should wrap upon reaching its limits.
+
+
+
+ Emitted to convert the user's input into a double value.
+
+The signal handler is expected to use [method@Gtk.Editable.get_text] to
+retrieve the text of the spinbutton and set new_value to the new value.
+
+The default conversion uses [func@GLib.strtod].
+
+See [signal@Gtk.SpinButton::input].
+
+ `TRUE` for a successful conversion, `FALSE` if the input was not
+ handled, and [const@Gtk.INPUT_ERROR] if the conversion failed.
+
+
+
+
+ return location for the new value
+
+
+
+
+
+ Emitted to tweak the formatting of the value for display.
+
+See [signal@Gtk.SpinButton::output].
+
+ `TRUE` if the value has been displayed
+
+
+
+
+ Emitted right after the spinbutton wraps.
+
+See [signal@Gtk.SpinButton::wrapped].
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+16×16 pixels and never larger than 64×64 pixels.
+
+Use the [property@Gtk.Widget:halign] and [property@Gtk.Widget:valign]
+properties in combination with [property@Gtk.Widget:width-request] and
+[property@Gtk.Widget:height-request] for fine sizing control.
+
+For example, the following snippet shows the spinner at 48×48 pixels:
+
+```xml
+<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
+impossible, such as [property@StatusPage: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.
+
+
+
+
+
+ Creates a new `AdwSpinner`.
+
+
+ the newly created `AdwSpinner`
+
+
+
+
+
+
+
+
+
+
+
+ A paintable showing a loading spinner.
+
+<picture>
+ <source srcset="spinner-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="spinner.png" alt="spinner">
+</picture>
+
+`AdwSpinnerPaintable` size varies depending on the available space, but is
+capped at 64×64 pixels.
+
+To be able to animate, `AdwSpinnerPaintable` needs a widget. It will be
+animated according to that widget's frame clock, and only if that widget is
+mapped. Ideally it should be the same widget the paintable is displayed in,
+but that's not a requirement.
+
+Most applications should be using [class@Spinner] instead.
+`AdwSpinnerPaintable` is provided for the cases where using a widget is
+impractical or impossible, such as [property@StatusPage:paintable]:
+
+```xml
+<object class="AdwStatusPage" id="status_page">
+ <property name="paintable">
+ <object class="AdwSpinnerPaintable">
+ <property name="widget">status_page</property>
+ </object>
+ </property>
+ <!-- ... -->
+</object>
+```
+
+
+
+
+ Creates a new `AdwSpinnerPaintable` for @widget.
+
+
+ the newly created `AdwSpinnerPaintable`
+
+
+
+
+ the widget used for frame clock
+
+
+
+
+
+ Gets the widget used for frame clock.
+
+
+ the widget
+
+
+
+
+ a spinner paintable
+
+
+
+
+
+ Sets the widget used for frame clock.
+
+
+
+
+
+
+ a spinner paintable
+
+
+
+ the widget to use for frame clock
+
+
+
+
+
+ The widget the spinner uses for frame clock.
+
+
+
+
+
+
+
+
+
+
+ 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,
+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
+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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+
+ Creates a new `AdwSplitButton`.
+
+
+ the newly created `AdwSplitButton`
+
+
+
+
+ gets whether the button can be smaller than the natural size of its contents.
+
+
+ whether the button can shrink
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the child widget.
+
+
+ the child widget
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the direction in which the popup will be popped up.
+
+
+ the direction
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the tooltip of the dropdown button of @self.
+
+
+ the dropdown tooltip of @self
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the name of the icon used to automatically populate the button.
+
+
+ the icon name
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the label for @self.
+
+
+ the label for @self
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the menu model from which the popup will be created.
+
+
+ the menu model
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets the popover that will be popped up when the dropdown is clicked.
+
+
+ the popover
+
+
+
+
+ a split button
+
+
+
+
+
+ Gets whether an underline in the text indicates a mnemonic.
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+ a split button
+
+
+
+
+
+ Dismisses the menu.
+
+
+
+
+
+
+ a split button
+
+
+
+
+
+ Pops up the menu.
+
+
+
+
+
+
+ a split button
+
+
+
+
+
+ Sets whether the button can be smaller than the natural size of its contents.
+
+If set to `TRUE`, the label will ellipsize.
+
+See [method@Gtk.Button.set_can_shrink] and
+[method@Gtk.MenuButton.set_can_shrink].
+
+
+
+
+
+
+ a split button
+
+
+
+ whether the button can shrink
+
+
+
+
+
+ Sets the child widget.
+
+Setting the child widget will set [property@SplitButton:label] and
+[property@SplitButton:icon-name] to `NULL`.
+
+
+
+
+
+
+ a split button
+
+
+
+ the new child widget
+
+
+
+
+
+ Sets the direction in which the popup will be popped up.
+
+The dropdown arrow icon will point at the same direction.
+
+If the does not fit in the available space in the given direction, GTK will
+try its best to keep it inside the screen and fully visible.
+
+[enum@Gtk.ArrowType.none] behaves same as [enum@Gtk.ArrowType.down].
+
+
+
+
+
+
+ a split button
+
+
+
+ the direction
+
+
+
+
+
+ Sets the tooltip of the dropdown button of @self.
+
+The tooltip can be marked up with the Pango text markup language.
+
+
+
+
+
+
+ a split button
+
+
+
+ the dropdown tooltip of @self
+
+
+
+
+
+ Sets the name of the icon used to automatically populate the button.
+
+Setting the icon name will set [property@SplitButton:label] and
+[property@SplitButton:child] to `NULL`.
+
+
+
+
+
+
+ a split button
+
+
+
+ the icon name to set
+
+
+
+
+
+ Sets the label for @self.
+
+Setting the label will set [property@SplitButton:icon-name] and
+[property@SplitButton:child] to `NULL`.
+
+
+
+
+
+
+ a split button
+
+
+
+ the label to set
+
+
+
+
+
+ Sets the menu model from which the popup will be created.
+
+If the menu model is `NULL`, the dropdown is disabled.
+
+A [class@Gtk.Popover] will be created from the menu model with
+[ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as
+documented for this function.
+
+If [property@SplitButton:popover] is already set, it will be dissociated from
+the button, and the property is set to `NULL`.
+
+
+
+
+
+
+ a split button
+
+
+
+ the menu model
+
+
+
+
+
+ Sets the popover that will be popped up when the dropdown is clicked.
+
+If the popover is `NULL`, the dropdown is disabled.
+
+If [property@SplitButton:menu-model] is set, the menu model is dissociated
+from the button, and the property is set to `NULL`.
+
+
+
+
+
+
+ a split button
+
+
+
+ the popover
+
+
+
+
+
+ Sets whether an underline in the text indicates a mnemonic.
+
+See [property@SplitButton:label].
+
+
+
+
+
+
+ a split button
+
+
+
+ whether an underline in the text indicates a mnemonic
+
+
+
+
+
+ Whether the button can be smaller than the natural size of its contents.
+
+If set to `TRUE`, the label will ellipsize.
+
+See [property@Gtk.Button:can-shrink] and
+[property@Gtk.MenuButton:can-shrink].
+
+
+
+ The child widget.
+
+Setting the child widget will set [property@SplitButton:label] and
+[property@SplitButton:icon-name] to `NULL`.
+
+
+
+ The direction in which the popup will be popped up.
+
+The dropdown arrow icon will point at the same direction.
+
+If the does not fit in the available space in the given direction, GTK will
+try its best to keep it inside the screen and fully visible.
+
+[enum@Gtk.ArrowType.none] behaves same as [enum@Gtk.ArrowType.down].
+
+
+
+ The tooltip of the dropdown button.
+
+The tooltip can be marked up with the Pango text markup language.
+
+
+
+ The name of the icon used to automatically populate the button.
+
+Setting the icon name will set [property@SplitButton:label] and
+[property@SplitButton:child] to `NULL`.
+
+
+
+ The label for the button.
+
+Setting the label will set [property@SplitButton:icon-name] and
+[property@SplitButton:child] to `NULL`.
+
+
+
+ The `GMenuModel` from which the popup will be created.
+
+If the menu model is `NULL`, the dropdown is disabled.
+
+A [class@Gtk.Popover] will be created from the menu model with
+[ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as
+documented for this function.
+
+If [property@SplitButton:popover] is already set, it will be dissociated
+from the button, and the property is set to `NULL`.
+
+
+
+ The `GtkPopover` that will be popped up when the dropdown is clicked.
+
+If the popover is `NULL`, the dropdown is disabled.
+
+If [property@SplitButton:menu-model] is set, the menu model is dissociated
+from the button, and the property is set to `NULL`.
+
+
+
+ Whether an underline in the text indicates a mnemonic.
+
+See [property@SplitButton:label].
+
+
+
+ Emitted to animate press then release.
+
+This is an action signal. Applications should never connect to this signal,
+but use the [signal@SplitButton::clicked] signal.
+
+
+
+
+
+ Emitted when the button has been activated (pressed and released).
+
+
+
+
+
+
+
+
+
+
+
+
+ A spring-based [class@Animation].
+
+`AdwSpringAnimation` implements an animation driven by a physical model of a
+spring described by [struct@SpringParams], with a resting position in
+[property@SpringAnimation:value-to], stretched to
+[property@SpringAnimation:value-from].
+
+Since the animation is physically simulated, spring animations don't have a
+fixed duration. The animation will stop when the simulated spring comes to a
+rest - when the amplitude of the oscillations becomes smaller than
+[property@SpringAnimation:epsilon], or immediately when it reaches
+[property@SpringAnimation:value-to] if
+[property@SpringAnimation:clamp] is set to `TRUE`. The estimated duration can
+be obtained with [property@SpringAnimation:estimated-duration].
+
+Due to the nature of spring-driven motion the animation can overshoot
+[property@SpringAnimation:value-to] before coming to a rest. Whether the
+animation will overshoot or not depends on the damping ratio of the spring.
+See [struct@SpringParams] for more information about specific damping ratio
+values.
+
+If [property@SpringAnimation:clamp] is `TRUE`, the animation will abruptly
+end as soon as it reaches the final value, preventing overshooting.
+
+Animations can have an initial velocity value, set via
+[property@SpringAnimation:initial-velocity], which adjusts the curve without
+changing the duration. This makes spring animations useful for deceleration
+at the end of gestures.
+
+If the initial and final values are equal, and the initial velocity is not 0,
+the animation value will bounce and return to its resting position.
+
+
+ Creates a new `AdwSpringAnimation` on @widget.
+
+The animation will animate @target from @from to @to with the dynamics of a
+spring described by @spring_params.
+
+
+ the newly created animation
+
+
+
+
+ a widget to create animation on
+
+
+
+ a value to animate from
+
+
+
+ a value to animate to
+
+
+
+ physical parameters of the spring
+
+
+
+ a target value to animate
+
+
+
+
+
+ Calculates the value @self will have at @time.
+
+The time starts at 0 and ends at
+[property@SpringAnimation:estimated_duration].
+
+See also [method@SpringAnimation.calculate_velocity].
+
+
+ the value at @time
+
+
+
+
+ a spring animation
+
+
+
+ elapsed time, in milliseconds
+
+
+
+
+
+ Calculates the velocity @self will have at @time.
+
+The time starts at 0 and ends at
+[property@SpringAnimation:estimated_duration].
+
+See also [method@SpringAnimation.calculate_value].
+
+
+ the velocity at @time
+
+
+
+
+ a spring animation
+
+
+
+ elapsed time, in milliseconds
+
+
+
+
+
+ Gets whether @self should be clamped.
+
+
+ whether @self is clamped
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the precision of the spring.
+
+
+ the epsilon value
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the estimated duration of @self, in milliseconds.
+
+Can be [const@DURATION_INFINITE] if the spring damping is set to 0.
+
+
+ the estimated duration
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the initial velocity of @self.
+
+
+ the initial velocity
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the physical parameters of the spring of @self.
+
+
+ the spring parameters
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the value @self will animate from.
+
+
+ the value to animate from
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the value @self will animate to.
+
+
+ the value to animate to
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Gets the current velocity of @self.
+
+
+ the current velocity
+
+
+
+
+ a spring animation
+
+
+
+
+
+ Sets whether @self should be clamped.
+
+If set to `TRUE`, the animation will abruptly end as soon as it reaches the
+final value, preventing overshooting.
+
+It won't prevent overshooting [property@SpringAnimation:value-from] if a
+relative negative [property@SpringAnimation:initial-velocity] is set.
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the new value
+
+
+
+
+
+ Sets the precision of the spring.
+
+The level of precision used to determine when the animation has come to a
+rest, that is, when the amplitude of the oscillations becomes smaller than
+this value.
+
+If the epsilon value is too small, the animation will take a long time to
+stop after the animated value has stopped visibly changing.
+
+If the epsilon value is too large, the animation will end prematurely.
+
+The default value is 0.001.
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the new value
+
+
+
+
+
+ Sets the initial velocity of @self.
+
+Initial velocity affects only the animation curve, but not its duration.
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the initial velocity
+
+
+
+
+
+ Sets the physical parameters of the spring of @self.
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the new spring parameters
+
+
+
+
+
+ Sets the value @self will animate from.
+
+The animation will start at this value and end at
+[property@SpringAnimation:value-to].
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the value to animate from
+
+
+
+
+
+ Sets the value @self will animate to.
+
+The animation will start at [property@SpringAnimation:value-from] and end at
+this value.
+
+
+
+
+
+
+ a spring animation
+
+
+
+ the value to animate to
+
+
+
+
+
+ Whether the animation should be clamped.
+
+If set to `TRUE`, the animation will abruptly end as soon as it reaches the
+final value, preventing overshooting.
+
+It won't prevent overshooting [property@SpringAnimation:value-from] if a
+relative negative [property@SpringAnimation:initial-velocity] is set.
+
+
+
+ Precision of the spring.
+
+The level of precision used to determine when the animation has come to a
+rest, that is, when the amplitude of the oscillations becomes smaller than
+this value.
+
+If the epsilon value is too small, the animation will take a long time to
+stop after the animated value has stopped visibly changing.
+
+If the epsilon value is too large, the animation will end prematurely.
+
+The default value is 0.001.
+
+
+
+ Estimated duration of the animation, in milliseconds.
+
+Can be [const@DURATION_INFINITE] if the spring damping is set to 0.
+
+
+
+ The initial velocity to start the animation with.
+
+Initial velocity affects only the animation curve, but not its duration.
+
+
+
+ Physical parameters describing the spring.
+
+
+
+ The value to animate from.
+
+The animation will start at this value and end at
+[property@SpringAnimation:value-to].
+
+
+
+ The value to animate to.
+
+The animation will start at [property@SpringAnimation:value-from] and end
+at this value.
+
+
+
+ Current velocity of the animation.
+
+
+
+
+
+
+
+ Physical parameters of a spring for [class@SpringAnimation].
+
+Any spring can be described by three parameters: mass, stiffness and damping.
+
+An undamped spring will produce an oscillatory motion which will go on
+forever.
+
+The frequency and amplitude of the oscillations will be determined by the
+stiffness (how "strong" the spring is) and its mass (how much "inertia" it
+has).
+
+If damping is larger than 0, the amplitude of that oscillating motion will
+exponientally decrease over time. If that damping is strong enough that the
+spring can't complete a full oscillation, it's called an overdamped spring.
+
+If we the spring can oscillate, it's called an underdamped spring.
+
+The value between these two behaviors is called critical damping; a
+critically damped spring will comes to rest in the minimum possible time
+without producing oscillations.
+
+The damping can be replaced by damping ratio, which produces the following
+springs:
+
+* 0: an undamped spring.
+* Between 0 and 1: an underdamped spring.
+* 1: a critically damped spring.
+* Larger than 1: an overdamped spring.
+
+As such
+
+
+ Creates a new `AdwSpringParams` from @mass, @stiffness and @damping_ratio.
+
+The damping value is calculated from @damping_ratio and the other two
+parameters.
+
+* If @damping_ratio is 0, the spring will not be damped and will oscillate
+ endlessly.
+* If @damping_ratio is between 0 and 1, the spring is underdamped and will
+ always overshoot.
+* If @damping_ratio is 1, the spring is critically damped and will reach its
+ resting position the quickest way possible.
+* If @damping_ratio is larger than 1, the spring is overdamped and will reach
+ its resting position faster than it can complete an oscillation.
+
+[ctor@SpringParams.new_full] allows to pass a raw damping value instead.
+
+
+ the newly created spring parameters
+
+
+
+
+ the damping ratio of the spring
+
+
+
+ the mass of the spring
+
+
+
+ the stiffness of the spring
+
+
+
+
+
+ Creates a new `AdwSpringParams` from @mass, @stiffness and @damping.
+
+See [ctor@SpringParams.new] for a simplified constructor using damping ratio
+instead of @damping.
+
+
+ the newly created spring parameters
+
+
+
+
+ the damping of the spring
+
+
+
+ the mass of the spring
+
+
+
+ the stiffness of the spring
+
+
+
+
+
+ Gets the damping of @self.
+
+
+ the damping
+
+
+
+
+ spring params
+
+
+
+
+
+ Gets the damping ratio of @self.
+
+
+ the damping ratio
+
+
+
+
+ spring params
+
+
+
+
+
+ Gets the mass of @self.
+
+
+ the mass
+
+
+
+
+ spring params
+
+
+
+
+
+ Gets the stiffness of @self.
+
+
+ the stiffness
+
+
+
+
+ spring params
+
+
+
+
+
+ Increases the reference count of @self.
+
+
+ @self
+
+
+
+
+ spring params
+
+
+
+
+
+ Decreases the reference count of @self.
+
+If the last reference is dropped, the structure is freed.
+
+
+
+
+
+
+ spring params
+
+
+
+
+
+
+ A best fit container.
+
+<picture>
+ <source srcset="squeezer-wide-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="squeezer-wide.png" alt="squeezer-wide">
+</picture>
+<picture>
+ <source srcset="squeezer-narrow-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="squeezer-narrow.png" alt="squeezer-narrow">
+</picture>
+
+The `AdwSqueezer` widget is a container which only shows the first of its
+children that fits in the available size. It is convenient to offer different
+widgets to represent the same data with different levels of detail, making
+the widget seem to squeeze itself to fit in the available space.
+
+Transitions between children can be animated as fades. This can be controlled
+with [property@Squeezer:transition-type].
+
+## CSS nodes
+
+`AdwSqueezer` has a single CSS node with name `squeezer`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ Creates a new `AdwSqueezer`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the newly created `AdwSqueezer`
+
+
+
+
+ Adds a child to @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the [class@SqueezerPage] for @child
+
+
+
+
+ a squeezer
+
+
+
+ the widget to add
+
+
+
+
+
+ Gets whether to allow squeezing beyond the last child's minimum size.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ whether @self allows squeezing beyond the last child
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets whether all children have the same size for the opposite orientation.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ whether @self is homogeneous
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets whether @self interpolates its size when changing the visible child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ whether the size is interpolated
+
+
+
+
+ A squeezer
+
+
+
+
+
+ Returns the [class@SqueezerPage] object for @child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the page object for @child
+
+
+
+
+ a squeezer
+
+
+
+ a child of @self
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the pages of @self.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track the visible page.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ a `GtkSelectionModel` for the squeezer's children
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the switch threshold policy for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the fold threshold policy
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the transition animation duration for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the transition duration, in milliseconds
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets whether a transition is currently running for @self.
+
+If a transition is impossible, the property value will be set to `TRUE` and
+then immediately to `FALSE`, so it's possible to rely on its notifications
+to know that a transition has happened.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ whether a transition is currently running
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the type of animation used for transitions between children in @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the current transition type of @self
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the currently visible child of @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the visible child
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the horizontal alignment, from 0 (start) to 1 (end).
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the alignment value
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Gets the vertical alignment, from 0 (top) to 1 (bottom).
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the alignment value
+
+
+
+
+ a squeezer
+
+
+
+
+
+ Removes a child widget from @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the child to remove
+
+
+
+
+
+ Sets whether to allow squeezing beyond the last child's minimum size.
+
+If set to `TRUE`, the squeezer can shrink to the point where no child can be
+shown. This is functionally equivalent to appending a widget with 0×0 minimum
+size.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ whether @self allows squeezing beyond the last child
+
+
+
+
+
+ Sets whether all children have the same size for the opposite orientation.
+
+For example, if a squeezer is horizontal and is homogeneous, it will request
+the same height for all its children. If it isn't, the squeezer may change
+size when a different child becomes visible.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ whether @self is homogeneous
+
+
+
+
+
+ Sets whether @self interpolates its size when changing the visible child.
+
+If `TRUE`, the squeezer will interpolate its size between the one of the
+previous visible child and the one of the new visible child, according to the
+set transition duration and the orientation, e.g. if the squeezer is
+horizontal, it will interpolate the its height.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ A squeezer
+
+
+
+ whether to interpolate the size
+
+
+
+
+
+ Sets the switch threshold policy for @self.
+
+Determines when the squeezer will switch children.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], it will only switch when
+the visible child cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural],
+it will switch as soon as the visible child doesn't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately switching.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the policy to use
+
+
+
+
+
+ Sets the transition animation duration for @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the new duration, in milliseconds
+
+
+
+
+
+ Sets the type of animation used for transitions between children in @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the new transition type
+
+
+
+
+
+ Sets the horizontal alignment, from 0 (start) to 1 (end).
+
+This affects the children allocation during transitions, when they exceed the
+size of the squeezer.
+
+For example, 0.5 means the child will be centered, 0 means it will keep the
+start side aligned and overflow the end side, and 1 means the opposite.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the new alignment value
+
+
+
+
+
+ Sets the vertical alignment, from 0 (top) to 1 (bottom).
+
+This affects the children allocation during transitions, when they exceed the
+size of the squeezer.
+
+For example, 0.5 means the child will be centered, 0 means it will keep the
+top side aligned and overflow the bottom side, and 1 means the opposite.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer
+
+
+
+ the new alignment value
+
+
+
+
+
+ Whether to allow squeezing beyond the last child's minimum size.
+
+If set to `TRUE`, the squeezer can shrink to the point where no child can
+be shown. This is functionally equivalent to appending a widget with 0×0
+minimum size.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ Whether all children have the same size for the opposite orientation.
+
+For example, if a squeezer is horizontal and is homogeneous, it will
+request the same height for all its children. If it isn't, the squeezer may
+change size when a different child becomes visible.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ Whether the squeezer interpolates its size when changing the visible child.
+
+If `TRUE`, the squeezer will interpolate its size between the one of the
+previous visible child and the one of the new visible child, according to
+the set transition duration and the orientation, e.g. if the squeezer is
+horizontal, it will interpolate the its height.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ A selection model with the squeezer's pages.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track the visible page.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The switch threshold policy.
+
+Determines when the squeezer will switch children.
+
+If set to [enum@Adw.FoldThresholdPolicy.minimum], it will only switch when
+the visible child cannot fit anymore. With [enum@Adw.FoldThresholdPolicy.natural],
+it will switch as soon as the visible child doesn't get their natural size.
+
+This can be useful if you have a long ellipsizing label and want to let it
+ellipsize instead of immediately switching.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The transition animation duration, in milliseconds.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ Whether a transition is currently running.
+
+If a transition is impossible, the property value will be set to `TRUE` and
+then immediately to `FALSE`, so it's possible to rely on its notifications
+to know that a transition has happened.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The type of animation used for transitions between children.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The currently visible child.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The horizontal alignment, from 0 (start) to 1 (end).
+
+This affects the children allocation during transitions, when they exceed
+the size of the squeezer.
+
+For example, 0.5 means the child will be centered, 0 means it will keep the
+start side aligned and overflow the end side, and 1 means the opposite.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ The vertical alignment, from 0 (top) to 1 (bottom).
+
+This affects the children allocation during transitions, when they exceed
+the size of the squeezer.
+
+For example, 0.5 means the child will be centered, 0 means it will keep the
+top side aligned and overflow the bottom side, and 1 means the opposite.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+
+
+
+
+ An auxiliary class used by [class@Squeezer].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ Returns the squeezer child to which @self belongs.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ the child to which @self belongs
+
+
+
+
+ a squeezer page
+
+
+
+
+
+ Gets whether @self is enabled.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+ whether @self is enabled
+
+
+
+
+ a squeezer page
+
+
+
+
+
+ Sets whether @self is enabled.
+
+If a child is disabled, it will be ignored when looking for the child
+fitting the available size best.
+
+This allows to programmatically and prematurely hide a child even if it fits
+in the available space.
+
+This can be used e.g. to ensure a certain child is hidden below a certain
+window width, or any other constraint you find suitable.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+ a squeezer page
+
+
+
+ whether @self is enabled
+
+
+
+
+
+ The the squeezer child to which the page belongs.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+ Whether the child is enabled.
+
+If a child is disabled, it will be ignored when looking for the child
+fitting the available size best.
+
+This allows to programmatically and prematurely hide a child even if it
+fits in the available space.
+
+This can be used e.g. to ensure a certain child is hidden below a certain
+window width, or any other constraint you find suitable.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+
+
+
+
+
+
+
+
+
+ Describes the possible transitions in a [class@Squeezer] widget.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwsqueezer)
+
+ No transition
+
+
+ A cross-fade
+
+
+
+ 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
+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>
+
+
+
+
+
+ Creates a new `AdwStatusPage`.
+
+
+ the newly created `AdwStatusPage`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a status page
+
+
+
+
+
+ Gets the description markup for @self.
+
+
+ the description
+
+
+
+
+ a status page
+
+
+
+
+
+ Gets the icon name for @self.
+
+
+ the icon name
+
+
+
+
+ a status page
+
+
+
+
+
+ Gets the paintable for @self.
+
+
+ the paintable
+
+
+
+
+ a status page
+
+
+
+
+
+ Gets the title for @self.
+
+
+ the title
+
+
+
+
+ a status page
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a status page
+
+
+
+ the child widget
+
+
+
+
+
+ Sets the description markup for @self.
+
+The description is displayed below the title. It is parsed as Pango markup.
+
+
+
+
+
+
+ a status page
+
+
+
+ the description
+
+
+
+
+
+ Sets the icon name for @self.
+
+Changing this will set [property@StatusPage:paintable] to `NULL`.
+
+
+
+
+
+
+ a status page
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the paintable for @self.
+
+Changing this will set [property@StatusPage:icon-name] to `NULL`.
+
+
+
+
+
+
+ a status page
+
+
+
+ the paintable
+
+
+
+
+
+ Sets the title for @self.
+
+The title is displayed below the icon. It is not parsed as Pango markup.
+
+
+
+
+
+
+ a status page
+
+
+
+ the title
+
+
+
+
+
+ The child widget.
+
+
+
+ The description markup to be displayed below the title.
+
+
+
+ The name of the icon to be used.
+
+Changing this will set [property@StatusPage:paintable] to `NULL`.
+
+
+
+ The paintable to be used.
+
+Changing this will set [property@StatusPage:icon-name] to `NULL`.
+
+
+
+ The title to be displayed below the icon.
+
+It is not parsed as Pango markup.
+
+
+
+
+
+
+
+
+
+
+ A class for managing application-wide styling.
+
+`AdwStyleManager` provides a way to query and influence the application
+styles, such as whether to use dark style, the system accent color or high
+contrast appearance.
+
+It allows to set the color scheme via the
+[property@StyleManager:color-scheme] property, and to query the current
+appearance, as well as whether a system-wide color scheme and accent color
+preferences exists.
+
+
+ Gets the default `AdwStyleManager` instance.
+
+It manages all [class@Gdk.Display] instances unless the style manager for
+that display has an override.
+
+See [func@StyleManager.get_for_display].
+
+
+ the default style manager
+
+
+
+
+ Gets the `AdwStyleManager` instance managing @display.
+
+It can be used to override styles for that specific display instead of the
+whole application.
+
+Most applications should use [func@StyleManager.get_default] instead.
+
+
+ the style manager for @display
+
+
+
+
+ a `GdkDisplay`
+
+
+
+
+
+ Gets the current system accent color.
+
+See also [property@StyleManager:accent-color-rgba].
+
+
+ the current system accent color
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets the current system accent color as a `GdkRGBA`.
+
+Equivalent to calling [func@AccentColor.to_rgba] on the value of
+[property@StyleManager:accent-color].
+
+This is a background color. The matching foreground color is white.
+
+
+ the current system accent color
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets the requested application color scheme.
+
+
+ the color scheme
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets whether the application is using dark appearance.
+
+This can be used to query the current appearance, as requested via
+[property@StyleManager:color-scheme].
+
+
+ whether the application is using dark appearance
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets the display the style manager is associated with.
+
+The display will be `NULL` for the style manager returned by
+[func@StyleManager.get_default].
+
+
+ the display
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets the system document font.
+
+The font is in the same format as [property@Gtk.Settings:gtk-font-name],
+e.g. "Adwaita Sans 12".
+
+Use [func@Pango.FontDescription.from_string] to parse it.
+
+
+ the system document font
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets whether the application is using high contrast appearance.
+
+This cannot be overridden by applications.
+
+
+ whether the application is using high contrast appearance
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets the system monospace font.
+
+The font is in the same format as [property@Gtk.Settings:gtk-font-name],
+e.g. "Adwaita Mono 11".
+
+Use [func@Pango.FontDescription.from_string] to parse it.
+
+
+ the system monospace font
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets whether the system supports accent colors.
+
+This can be used to check if the current environment provides an accent color
+preference. For example, applications might want to show a preference for
+choosing accent color if it's set to `FALSE`.
+
+See [property@StyleManager:accent-color].
+
+
+ whether the system supports accent colors
+
+
+
+
+ a style manager
+
+
+
+
+
+ Gets whether the system supports color schemes.
+
+This can be used to check if the current environment provides a color scheme
+preference. For example, applications might want to show a separate
+appearance switcher if it's set to `FALSE`.
+
+
+ whether the system supports color schemes
+
+
+
+
+ a style manager
+
+
+
+
+
+ Sets the requested application color scheme.
+
+The effective appearance will be decided based on the application color
+scheme and the system preferred color scheme. The
+[property@StyleManager:dark] property can be used to query the current
+effective appearance.
+
+The [enum@Adw.ColorScheme.prefer-light] color scheme results in the
+application using light appearance unless the system prefers dark colors.
+This is the default value.
+
+The [enum@Adw.ColorScheme.prefer-dark] color scheme results in the
+application using dark appearance, but can still switch to the light
+appearance if the system can prefers it, for example, when the high contrast
+preference is enabled.
+
+The [enum@Adw.ColorScheme.force-light] and [enum@Adw.ColorScheme.force-dark]
+values ignore the system preference entirely. They are useful if the
+application wants to match its UI to its content or to provide a separate
+color scheme switcher.
+
+If a per-[class@Gdk.Display] style manager has its color scheme set to
+[enum@Adw.ColorScheme.default], it will inherit the color scheme from the
+default style manager.
+
+For the default style manager, [enum@Adw.ColorScheme.default] is equivalent
+to [enum@Adw.ColorScheme.prefer-light].
+
+The [property@StyleManager:system-supports-color-schemes] property can be
+used to check if the current environment provides a color scheme
+preference.
+
+
+
+
+
+
+ a style manager
+
+
+
+ the color scheme
+
+
+
+
+
+ The current system accent color.
+
+See also [property@StyleManager:accent-color-rgba].
+
+
+
+ The current system accent color as a `GdkRGBA`.
+
+Equivalent to calling [func@AccentColor.to_rgba] on the value of
+[property@StyleManager:accent-color].
+
+This is a background color. The matching foreground color is white.
+
+
+
+ The requested application color scheme.
+
+The effective appearance will be decided based on the application color
+scheme and the system preferred color scheme. The
+[property@StyleManager:dark] property can be used to query the current
+effective appearance.
+
+The [enum@Adw.ColorScheme.prefer-light] color scheme results in the
+application using light appearance unless the system prefers dark colors.
+This is the default value.
+
+The [enum@Adw.ColorScheme.prefer-dark] color scheme results in the
+application using dark appearance, but can still switch to the light
+appearance if the system can prefers it, for example, when the high
+contrast preference is
+enabled.
+
+The [enum@Adw.ColorScheme.force-light] and [enum@Adw.ColorScheme.force-dark]
+values ignore the system preference entirely. They are useful if the
+application wants to match its UI to its content or to provide a separate
+color scheme switcher.
+
+If a per-[class@Gdk.Display] style manager has its color scheme set to
+[enum@Adw.ColorScheme.default], it will inherit the color scheme from the
+default style manager.
+
+For the default style manager, [enum@Adw.ColorScheme.default] is equivalent
+to [enum@Adw.ColorScheme.prefer-light].
+
+The [property@StyleManager:system-supports-color-schemes] property can be
+used to check if the current environment provides a color scheme
+preference.
+
+
+
+ Whether the application is using dark appearance.
+
+This property can be used to query the current appearance, as requested via
+[property@StyleManager:color-scheme].
+
+
+
+ The display the style manager is associated with.
+
+The display will be `NULL` for the style manager returned by
+[func@StyleManager.get_default].
+
+
+
+ The system document font.
+
+The font is in the same format as [property@Gtk.Settings:gtk-font-name],
+e.g. "Adwaita Sans 12".
+
+Use [func@Pango.FontDescription.from_string] to parse it.
+
+
+
+ Whether the application is using high contrast appearance.
+
+This cannot be overridden by applications.
+
+
+
+ The system monospace font.
+
+The font is in the same format as [property@Gtk.Settings:gtk-font-name],
+e.g. "Adwaita Mono 11".
+
+Use [func@Pango.FontDescription.from_string] to parse it.
+
+
+
+ Whether the system supports accent colors.
+
+This property can be used to check if the current environment provides an
+accent color preference. For example, applications might want to show a
+preference for choosing accent color if it's set to `FALSE`.
+
+See [property@StyleManager:accent-color].
+
+
+
+ Whether the system supports color schemes.
+
+This property can be used to check if the current environment provides a
+color scheme preference. For example, applications might want to show a
+separate appearance switcher if it's set to `FALSE`.
+
+See [property@StyleManager:color-scheme].
+
+
+
+
+
+
+
+
+
+
+ A swipe tracker used in [class@Carousel], [class@NavigationView] and
+[class@OverlaySplitView].
+
+The `AdwSwipeTracker` object can be used for implementing widgets with swipe
+gestures. It supports touch-based swipes, pointer dragging, and touchpad
+scrolling.
+
+The widgets will probably want to expose the [property@SwipeTracker:enabled]
+property. If they expect to use horizontal orientation,
+[property@SwipeTracker:reversed] can be used for supporting RTL text
+direction.
+
+
+
+ Creates a new `AdwSwipeTracker` for @widget.
+
+
+ the newly created `AdwSwipeTracker`
+
+
+
+
+ a widget to add the tracker on
+
+
+
+
+
+ Gets whether to allow swiping for more than one snap point at a time.
+
+
+ whether long swipes are allowed
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether @self can be dragged with mouse pointer.
+
+
+ whether mouse dragging is allowed
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether to allow touchscreen swiping from `GtkWindowHandle`.
+
+
+ whether swiping from window handles is allowed
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether @self is enabled.
+
+
+ whether @self is enabled
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether to allow swiping past the first available snap point.
+
+
+ whether to allow swiping past the first available snap point
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether @self is reversing the swipe direction.
+
+
+ whether the direction is reversed
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Get the widget @self is attached to.
+
+
+ the swipeable widget
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Gets whether to allow swiping past the last available snap point.
+
+
+ whether to allow swiping past the last available snap point
+
+
+
+
+ a swipe tracker
+
+
+
+
+
+ Sets whether to allow swiping for more than one snap point at a time.
+
+If the value is `FALSE`, each swipe can only move to the adjacent snap
+points.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to allow long swipes
+
+
+
+
+
+ Sets whether @self can be dragged with mouse pointer.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to allow mouse dragging
+
+
+
+
+
+ Sets whether to allow touchscreen swiping from `GtkWindowHandle`.
+
+Setting it to `TRUE` will make dragging the window impossible.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to allow swiping from window handles
+
+
+
+
+
+ Sets whether @self is enabled.
+
+When it's not enabled, no events will be processed. Usually widgets will want
+to expose this via a property.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether @self is enabled
+
+
+
+
+
+ Sets whether to allow swiping past the first available snap point.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to allow swiping past the first available snap point
+
+
+
+
+
+ Sets whether to reverse the swipe direction.
+
+If the swipe tracker is horizontal, it can be used for supporting RTL text
+direction.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to reverse the swipe direction
+
+
+
+
+
+ Sets whether to allow swiping past the last available snap point.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ whether to allow swiping past the last available snap point
+
+
+
+
+
+ Moves the current progress value by @delta.
+
+This can be used to adjust the current position if snap points move during
+the gesture.
+
+
+
+
+
+
+ a swipe tracker
+
+
+
+ the position delta
+
+
+
+
+
+ Whether to allow swiping for more than one snap point at a time.
+
+If the value is `FALSE`, each swipe can only move to the adjacent snap
+points.
+
+
+
+ Whether to allow dragging with mouse pointer.
+
+
+
+ Whether to allow touchscreen swiping from `GtkWindowHandle`.
+
+This will make dragging the window impossible.
+
+
+
+ Whether the swipe tracker is enabled.
+
+When it's not enabled, no events will be processed. Usually widgets will
+want to expose this via a property.
+
+
+
+ Whether to allow swiping past the first available snap point.
+
+
+
+ Whether to reverse the swipe direction.
+
+If the swipe tracker is horizontal, it can be used for supporting RTL text
+direction.
+
+
+
+ The widget the swipe tracker is attached to.
+
+
+
+ Whether to allow swiping past the last available snap point.
+
+
+
+ This signal is emitted right before a swipe will be started, after the
+drag threshold has been passed.
+
+
+
+
+
+ This signal is emitted as soon as the gesture has stopped.
+
+The user is expected to animate the deceleration from the current progress
+value to @to with an animation using @velocity as the initial velocity,
+provided in pixels per second. [class@SpringAnimation] is usually a good
+fit for this.
+
+
+
+
+
+ the velocity of the swipe
+
+
+
+ the progress value to animate to
+
+
+
+
+
+ This signal is emitted when a possible swipe is detected.
+
+The @direction value can be used to restrict the swipe to a certain
+direction.
+
+
+
+
+
+ the direction of the swipe
+
+
+
+
+
+ This signal is emitted every time the progress value changes.
+
+
+
+
+
+ the current animation progress value
+
+
+
+
+
+
+
+
+
+
+
+
+ An interface for swipeable widgets.
+
+The `AdwSwipeable` interface is implemented by all swipeable widgets.
+
+See [class@SwipeTracker] for details about implementing it.
+
+
+
+ Gets the progress @self will snap back to after the gesture is canceled.
+
+
+ the cancel progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the swipe distance of @self.
+
+This corresponds to how many pixels 1 unit represents.
+
+
+ the swipe distance in pixels
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the current progress of @self.
+
+
+ the current progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the snap points of @self.
+
+Each snap point represents a progress value that is considered acceptable to
+end the swipe on.
+
+
+ the snap points
+
+
+
+
+
+
+ a swipeable
+
+
+
+ location to return the number of the snap points
+
+
+
+
+
+ Gets the area @self can start a swipe from for the given direction and
+gesture type.
+
+This can be used to restrict swipes to only be possible from a certain area,
+for example, to only allow edge swipes, or to have a draggable element and
+ignore swipes elsewhere.
+
+If not implemented, the default implementation returns the allocation of
+@self, allowing swipes from anywhere.
+
+
+
+
+
+
+ a swipeable
+
+
+
+ the direction of the swipe
+
+
+
+ whether the swipe is caused by a dragging gesture
+
+
+
+ a pointer to a rectangle to store the swipe area
+
+
+
+
+
+ Gets the progress @self will snap back to after the gesture is canceled.
+
+
+ the cancel progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the swipe distance of @self.
+
+This corresponds to how many pixels 1 unit represents.
+
+
+ the swipe distance in pixels
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the current progress of @self.
+
+
+ the current progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+ Gets the snap points of @self.
+
+Each snap point represents a progress value that is considered acceptable to
+end the swipe on.
+
+
+ the snap points
+
+
+
+
+
+
+ a swipeable
+
+
+
+ location to return the number of the snap points
+
+
+
+
+
+ Gets the area @self can start a swipe from for the given direction and
+gesture type.
+
+This can be used to restrict swipes to only be possible from a certain area,
+for example, to only allow edge swipes, or to have a draggable element and
+ignore swipes elsewhere.
+
+If not implemented, the default implementation returns the allocation of
+@self, allowing swipes from anywhere.
+
+
+
+
+
+
+ a swipeable
+
+
+
+ the direction of the swipe
+
+
+
+ whether the swipe is caused by a dragging gesture
+
+
+
+ a pointer to a rectangle to store the swipe area
+
+
+
+
+
+
+ An interface for swipeable widgets.
+
+
+ The parent interface.
+
+
+
+ Gets the swipe distance.
+
+
+
+ the swipe distance in pixels
+
+
+
+
+ a swipeable
+
+
+
+
+
+
+ Gets the snap points.
+
+
+
+ the snap points
+
+
+
+
+
+
+ a swipeable
+
+
+
+ location to return the number of the snap points
+
+
+
+
+
+
+ Gets the current progress.
+
+
+
+ the current progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+
+ Gets the cancel progress.
+
+
+
+ the cancel progress, unitless
+
+
+
+
+ a swipeable
+
+
+
+
+
+
+ Gets the swipeable rectangle.
+
+
+
+
+
+
+
+ a swipeable
+
+
+
+ the direction of the swipe
+
+
+
+ whether the swipe is caused by a dragging gesture
+
+
+
+ a pointer to a rectangle to store the swipe area
+
+
+
+
+
+
+
+
+
+
+
+
+ A [class@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
+to select between two states: "on" or "off". When activated, the row will
+invert its active state.
+
+The user can control the switch by activating the row or by dragging on the
+switch handle.
+
+See [class@Gtk.Switch] for details.
+
+Example of an `AdwSwitchRow` UI definition:
+```xml
+<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
+monitor changes to the active state.
+
+## Accessibility
+
+`AdwSwitchRow` uses the [enum@Gtk.AccessibleRole.switch] role.
+
+
+
+
+
+
+ Creates a new `AdwSwitchRow`.
+
+
+ the newly created `AdwSwitchRow`
+
+
+
+
+ Gets whether @self is in its "on" or "off" position.
+
+
+ whether @self is active or not
+
+
+
+
+ a switch row
+
+
+
+
+
+ Sets whether @self is in its "on" or "off" position
+
+
+
+
+
+
+ a switch row
+
+
+
+ whether @self should be active
+
+
+
+
+
+ Whether the switch row is in the "on" or "off" position.
+
+
+
+
+
+
+
+
+
+
+ A tab bar for [class@TabView].
+
+<picture>
+ <source srcset="tab-bar-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="tab-bar.png" alt="tab-bar">
+</picture>
+
+The `AdwTabBar` widget is a tab bar that can be used with conjunction with
+`AdwTabView`. It is typically used as a top bar within [class@ToolbarView].
+
+`AdwTabBar` can autohide and can optionally contain action widgets on both
+sides of the tabs.
+
+When there's not enough space to show all the tabs, `AdwTabBar` will scroll
+them. Pinned tabs always stay visible and aren't a part of the scrollable
+area.
+
+## Drag-and-Drop
+
+`AdwTabBar` tabs can have an additional drop target for arbitrary content.
+
+Use [method@TabBar.setup_extra_drop_target] to set it up, specifying the
+supported content types and drag actions, then connect to
+[signal@TabBar::extra-drag-drop] to handle a drop.
+
+In some cases, it may be necessary to determine the used action based on the
+content. In that case, set [property@TabBar:extra-drag-preload] to `TRUE`
+and connect to [signal@TabBar::extra-drag-value] signal, then return the
+action from its handler. To access this action from the
+[signal@TabBar::extra-drag-drop] handler, use the
+[property@TabBar:extra-drag-preferred-action] property.
+
+[signal@TabBar::extra-drag-value] is also always emitted when starting to
+hover an item, with a `NULL` value. This happens even when
+[property@TabBar:extra-drag-preload] is `FALSE`.
+
+## CSS nodes
+
+`AdwTabBar` has a single CSS node with name `tabbar`.
+
+## Style classes
+
+By default `AdwTabBar` look like a part of an `AdwHeaderBar` and is intended
+to be used directly attached to one or used as a [class@ToolbarView] toolbar.
+The [`.inline`](style-classes.html#inline) style class removes its background,
+so that it can be used in different contexts instead.
+
+<picture>
+ <source srcset="tab-bar-inline-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="tab-bar-inline.png" alt="tab-bar-inline">
+</picture>
+
+
+
+
+
+ Creates a new `AdwTabBar`.
+
+
+ the newly created `AdwTabBar`
+
+
+
+
+ Gets whether the tabs automatically hide.
+
+
+ whether the tabs automatically hide
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets the widget shown after the tabs.
+
+
+ the widget shown after the tabs
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets whether tabs expand to full width.
+
+
+ whether tabs expand to full width.
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets the current drag action during a drop.
+
+This method should only be used from inside a
+[signal@TabBar::extra-drag-drop] handler.
+
+The action will be a subset of what was originally passed to
+[method@TabBar.setup_extra_drop_target].
+
+
+ the drag action of the current drop
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets whether drop data should be preloaded on hover.
+
+
+ whether drop data should be preloaded on hover
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets whether tabs use inverted layout.
+
+
+ whether tabs use inverted layout
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets whether @self is overflowing.
+
+If `TRUE`, all tabs cannot be displayed at once and require scrolling.
+
+
+ whether @self is overflowing
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets the widget shown before the tabs.
+
+
+ the widget shown before the tabs
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets whether the tabs are currently revealed.
+
+See [property@TabBar:autohide].
+
+
+ whether the tabs are currently revealed
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Gets the tab view @self controls.
+
+
+ the view @self controls
+
+
+
+
+ a tab bar
+
+
+
+
+
+ Sets whether the tabs automatically hide.
+
+If set to `TRUE`, the tab bar disappears when [property@TabBar:view] has 0
+or 1 tab, no pinned tabs, and no tab is being transferred.
+
+See [property@TabBar:tabs-revealed].
+
+
+
+
+
+
+ a tab bar
+
+
+
+ whether the tabs automatically hide
+
+
+
+
+
+ Sets the widget to show after the tabs.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ the widget to show after the tabs
+
+
+
+
+
+ Sets whether tabs expand to full width.
+
+If set to `TRUE`, the tabs will always vary width filling the whole width
+when possible, otherwise tabs will always have the minimum possible size.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ whether to expand tabs
+
+
+
+
+
+ Sets whether drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+
+
+
+ a tab bar
+
+
+
+ whether to preload drop data
+
+
+
+
+
+ Sets whether tabs tabs use inverted layout.
+
+If set to `TRUE`, non-pinned tabs will have the close button at the beginning
+and the indicator at the end rather than the opposite.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ whether tabs use inverted layout
+
+
+
+
+
+ Sets the widget to show before the tabs.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ the widget to show before the tabs
+
+
+
+
+
+ Sets the tab view @self controls.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ a tab view
+
+
+
+
+
+ Sets up an extra drop target on tabs.
+
+This allows to drag arbitrary content onto tabs, for example URLs in a web
+browser.
+
+If a tab is hovered for a certain period of time while dragging the content,
+it will be automatically selected.
+
+The [signal@TabBar::extra-drag-drop] signal can be used to handle the drop.
+
+
+
+
+
+
+ a tab bar
+
+
+
+ the supported actions
+
+
+
+
+ all supported `GType`s that can be dropped
+
+
+
+
+
+ number of @types
+
+
+
+
+
+ Whether the tabs automatically hide.
+
+If set to `TRUE`, the tab bar disappears when [property@TabBar:view] has 0
+or 1 tab, no pinned tabs, and no tab is being transferred.
+
+See [property@TabBar:tabs-revealed].
+
+
+
+ The widget shown after the tabs.
+
+
+
+ Whether tabs expand to full width.
+
+If set to `TRUE`, the tabs will always vary width filling the whole width
+when possible, otherwise tabs will always have the minimum possible size.
+
+
+
+ The current drag action during a drop.
+
+This property should only be used from inside a
+[signal@TabBar::extra-drag-drop] handler.
+
+The action will be a subset of what was originally passed to
+[method@TabBar.setup_extra_drop_target].
+
+
+
+ Whether the drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+ Whether tabs use inverted layout.
+
+If set to `TRUE`, non-pinned tabs will have the close button at the
+beginning and the indicator at the end rather than the opposite.
+
+
+
+ Whether the tab bar is overflowing.
+
+If `TRUE`, all tabs cannot be displayed at once and require scrolling.
+
+
+
+ The widget shown before the tabs.
+
+
+
+ Whether the tabs are currently revealed.
+
+See [property@TabBar:autohide].
+
+
+
+ The tab view the tab bar controls.
+
+
+
+ Emitted when content is dropped onto a tab.
+
+The content must be of one of the types set up via
+[method@TabBar.setup_extra_drop_target].
+
+See [signal@Gtk.DropTarget::drop].
+
+ whether the drop was accepted
+
+
+
+
+ the page matching the tab the content was dropped onto
+
+
+
+ the `GValue` being dropped
+
+
+
+
+
+ Emitted when the dropped content is preloaded.
+
+In order for data to be preloaded, [property@TabBar:extra-drag-preload]
+must be set to `TRUE`.
+
+The content must be of one of the types set up via
+[method@TabBar.setup_extra_drop_target].
+
+See [property@Gtk.DropTarget:value].
+
+ the preferred action for the drop
+
+
+
+
+ the page matching the tab the content was dropped onto
+
+
+
+ the `GValue` being dropped
+
+
+
+
+
+
+
+
+
+
+
+
+ A button that displays the number of [class@TabView] pages.
+
+<picture>
+ <source srcset="tab-button-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="tab-button.png" alt="tab-button">
+</picture>
+
+`AdwTabButton` is a button that displays the number of pages in a given
+`AdwTabView`, as well as whether one of the inactive pages needs attention.
+
+It's intended to be used as a visible indicator when there's no visible tab
+bar, typically opening an [class@TabOverview] on click, e.g. via the
+`overview.open` action name:
+
+```xml
+<object class="AdwTabButton">
+ <property name="view">view</property>
+ <property name="action-name">overview.open</property>
+</object>
+```
+
+## CSS nodes
+
+`AdwTabButton` has a main CSS node with name `tabbutton`.
+
+# Accessibility
+
+`AdwTabButton` uses the [enum@Gtk.AccessibleRole.button] role.
+
+
+
+
+
+
+ Creates a new `AdwTabButton`.
+
+
+ the newly created `AdwTabButton`
+
+
+
+
+ Gets the tab view @self displays.
+
+
+ the tab view
+
+
+
+
+ a tab button
+
+
+
+
+
+ Sets the tab view to display.
+
+
+
+
+
+
+ a tab button
+
+
+
+ a tab view
+
+
+
+
+
+ The view the tab button displays.
+
+
+
+ Emitted to animate press then release.
+
+This is an action signal. Applications should never connect to this signal,
+but use the [signal@TabButton::clicked] signal.
+
+
+
+
+
+ Emitted when the button has been activated (pressed and released).
+
+
+
+
+
+
+
+
+
+
+
+
+ A tab overview for [class@TabView].
+
+<picture>
+ <source srcset="tab-overview-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="tab-overview.png" alt="tab-overview">
+</picture>
+
+`AdwTabOverview` is a widget that can display tabs from an `AdwTabView` in a
+grid.
+
+`AdwTabOverview` shows a thumbnail for each tab. By default thumbnails are
+static for all pages except the selected one. They can be made always live
+by setting [property@TabPage:live-thumbnail] to `TRUE`, or refreshed with
+[method@TabPage.invalidate_thumbnail] or
+[method@TabView.invalidate_thumbnails] otherwise.
+
+If the pages are too tall or too wide, the thumbnails will be cropped; use
+[property@TabPage:thumbnail-xalign] and [property@TabPage:thumbnail-yalign] to
+control which part of the page should be visible in this case.
+
+Pinned tabs are shown as smaller cards without thumbnails above the other
+tabs. Unlike in [class@TabBar], they still have titles, as well as an unpin
+button.
+
+`AdwTabOverview` provides search in open tabs. It searches in tab titles and
+tooltips, as well as [property@TabPage:keyword].
+
+If [property@TabOverview:enable-new-tab] is set to `TRUE`, a new tab button
+will be shown. Connect to the [signal@TabOverview::create-tab] signal to use
+it.
+
+[property@TabOverview:secondary-menu] can be used to provide a secondary menu
+for the overview. Use it to add extra actions, e.g. to open a new window or
+undo closed tab.
+
+`AdwTabOverview` is intended to be used as the direct child of the window,
+with the rest of the window contents set as the [property@TabOverview:child].
+The child is expected to contain an [class@TabView].
+
+`AdwTabOverview` shows window buttons by default. They can be disabled by
+setting [property@TabOverview:show-start-title-buttons] and/or
+[property@TabOverview:show-start-title-buttons] and/or
+[property@TabOverview:show-end-title-buttons] to `FALSE`.
+
+If search and window buttons are disabled, and secondary menu is not set, the
+header bar will be hidden.
+
+## Drag-and-Drop
+
+`AdwTabOverview` thumbnails can have an additional drop target for arbitrary
+content.
+
+Use [method@TabOverview.setup_extra_drop_target] to set it up, specifying the
+supported content types and drag actions, then connect to
+[signal@TabOverview::extra-drag-drop] to handle a drop.
+
+In some cases, it may be necessary to determine the used action based on the
+content. In that case, set [property@TabOverview:extra-drag-preload] to
+`TRUE` and connect to [signal@TabOverview::extra-drag-value] signal, then
+return the action from its handler. To access this action from the
+[signal@TabOverview::extra-drag-drop] handler, use the
+[property@TabOverview:extra-drag-preferred-action] property.
+
+[signal@TabOverview::extra-drag-value] is also always emitted when starting to
+hover an item, with a `NULL` value. This happens even when
+[property@TabOverview:extra-drag-preload] is `FALSE`.
+
+## Actions
+
+`AdwTabOverview` defines the `overview.open` and `overview.close` actions for
+opening and closing itself. They can be convenient when used together with
+[class@TabButton].
+
+## CSS nodes
+
+`AdwTabOverview` has a single CSS node with name `taboverview`.
+
+
+
+
+
+ Creates a new `AdwTabOverview`.
+
+
+ the newly created `AdwTabOverview`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether to new tab button is enabled for @self.
+
+
+ whether new tab button is enabled
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether search in tabs is enabled for @self.
+
+
+ whether search is enabled
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets the current action during a drop on the extra_drop_target.
+
+
+ the drag action of the current drop.
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets the current drag action during a drop.
+
+This method should only be used from inside a
+[signal@TabOverview::extra-drag-drop] handler.
+
+The action will be a subset of what was originally passed to
+[method@TabOverview.setup_extra_drop_target].
+
+
+ the drag action of the current drop
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether thumbnails use inverted layout.
+
+
+ whether thumbnails use inverted layout
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether @self is open.
+
+
+ whether the overview is open
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether search is currently active for @self.
+
+See [property@TabOverview:enable-search].
+
+
+ whether search is active
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets the secondary menu model for @self.
+
+
+ the secondary menu model
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether end title buttons are shown in @self's header bar.
+
+
+ whether end title buttons are shown
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether start title buttons are shown in @self's header bar.
+
+
+ whether start title buttons are shown
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets the tab view @self controls.
+
+
+ the tab view
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ the child widget
+
+
+
+
+
+ Sets whether to enable new tab button for @self.
+
+Connect to the [signal@TabOverview::create-tab] signal to use it.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether to enable new tab button
+
+
+
+
+
+ Sets whether to enable search in tabs for @self.
+
+Search matches tab titles and tooltips, as well as keywords, set via
+[property@TabPage:keyword]. Use keywords to search in e.g. page URLs in a web
+browser.
+
+During search, tab reordering and drag-n-drop are disabled.
+
+Use [property@TabOverview:search-active] to check out if search is currently
+active.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether to enable search
+
+
+
+
+
+ Sets whether drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether to preload drop data
+
+
+
+
+
+ Sets whether thumbnails use inverted layout.
+
+If set to `TRUE`, thumbnails will have the close or unpin button at the
+beginning and the indicator at the end rather than the other way around.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether thumbnails use inverted layout
+
+
+
+
+
+ Sets whether the to open @self.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether the overview is open
+
+
+
+
+
+ Sets the secondary menu model for @self.
+
+Use it to add extra actions, e.g. to open a new window or undo closed tab.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ a menu model
+
+
+
+
+
+ Sets whether to show end title buttons in @self's header bar.
+
+See [property@HeaderBar:show-start-title-buttons] for the other side.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether to show end title buttons
+
+
+
+
+
+ Sets whether to show start title buttons in @self's header bar.
+
+See [property@HeaderBar:show-end-title-buttons] for the other side.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ whether to show start title buttons
+
+
+
+
+
+ Sets the tab view to control.
+
+The view must be inside @self, see [property@TabOverview:child].
+
+
+
+
+
+
+ a tab overview
+
+
+
+ a tab view
+
+
+
+
+
+ Sets up an extra drop target on tabs.
+
+This allows to drag arbitrary content onto tabs, for example URLs in a web
+browser.
+
+If a tab is hovered for a certain period of time while dragging the content,
+it will be automatically selected.
+
+The [signal@TabOverview::extra-drag-drop] signal can be used to handle the
+drop.
+
+
+
+
+
+
+ a tab overview
+
+
+
+ the supported actions
+
+
+
+
+ all supported `GType`s that can be dropped
+
+
+
+
+
+ number of @types
+
+
+
+
+
+ The child widget.
+
+
+
+ Whether to enable new tab button.
+
+Connect to the [signal@TabOverview::create-tab] signal to use it.
+
+
+
+ Whether to enable search in tabs.
+
+Search matches tab titles and tooltips, as well as keywords, set via
+[property@TabPage:keyword]. Use keywords to search in e.g. page URLs in a
+web browser.
+
+During search, tab reordering and drag-n-drop are disabled.
+
+Use [property@TabOverview:search-active] to check out if search is
+currently active.
+
+
+
+ The current drag action during a drop.
+
+This property should only be used from inside a
+[signal@TabOverview::extra-drag-drop] handler.
+
+The action will be a subset of what was originally passed to
+[method@TabOverview.setup_extra_drop_target].
+
+
+
+ Whether the drop data should be preloaded on hover.
+
+See [property@Gtk.DropTarget:preload].
+
+
+
+ Whether thumbnails use inverted layout.
+
+If set to `TRUE`, thumbnails will have the close or unpin buttons at the
+beginning and the indicator at the end rather than the other way around.
+
+
+
+ Whether the overview is open.
+
+
+
+ Whether search is currently active.
+
+See [property@TabOverview:enable-search].
+
+
+
+ The secondary menu model.
+
+Use it to add extra actions, e.g. to open a new window or undo closed tab.
+
+
+
+ Whether to show end title buttons in the overview's header bar.
+
+See [property@HeaderBar:show-start-title-buttons] for the other side.
+
+
+
+ Whether to show start title buttons in the overview's header bar.
+
+See [property@HeaderBar:show-end-title-buttons] for the other side.
+
+
+
+ The tab view the overview controls.
+
+The view must be inside the tab overview, see [property@TabOverview:child].
+
+
+
+ Emitted when a tab needs to be created.
+
+This can happen after the new tab button has been pressed, see
+[property@TabOverview:enable-new-tab].
+
+The signal handler is expected to create a new page in the corresponding
+[class@TabView] and return it.
+
+ the newly created page
+
+
+
+
+ Emitted when content is dropped onto a tab.
+
+The content must be of one of the types set up via
+[method@TabOverview.setup_extra_drop_target].
+
+See [signal@Gtk.DropTarget::drop].
+
+ whether the drop was accepted
+
+
+
+
+ the page matching the tab the content was dropped onto
+
+
+
+ the `GValue` being dropped
+
+
+
+
+
+ Emitted when the dropped content is preloaded.
+
+In order for data to be preloaded, [property@TabOverview:extra-drag-preload]
+must be set to `TRUE`.
+
+The content must be of one of the types set up via
+[method@TabOverview.setup_extra_drop_target].
+
+See [property@Gtk.DropTarget:value].
+
+ the preferred action for the drop
+
+
+
+
+ the page matching the tab the content was dropped onto
+
+
+
+ the `GValue` being dropped
+
+
+
+
+
+
+
+
+
+
+
+
+ An auxiliary class used by [class@TabView].
+
+
+
+ Gets the child of @self.
+
+
+ the child of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the icon of @self.
+
+
+ the icon of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets whether the indicator of @self is activatable.
+
+
+ whether the indicator is activatable
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the indicator icon of @self.
+
+
+ the indicator icon of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the tooltip of the indicator icon of @self.
+
+
+ the indicator tooltip of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the search keyword of @self.
+
+
+ the search keyword of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets whether to live thumbnail is enabled @self.
+
+
+ whether live thumbnail is enabled
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets whether @self is loading.
+
+
+ whether @self is loading
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets whether @self needs attention.
+
+
+ whether @self needs attention
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the parent page of @self.
+
+See [method@TabView.add_page] and [method@TabView.close_page].
+
+
+ the parent page
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets whether @self is pinned.
+
+See [method@TabView.set_page_pinned].
+
+
+ whether @self is pinned
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets whether @self is selected.
+
+
+ whether @self is selected
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the horizontal alignment of the thumbnail for @self.
+
+
+ the horizontal alignment
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the vertical alignment of the thumbnail for @self.
+
+
+ the vertical alignment
+
+
+
+
+ a tab overview
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Gets the tooltip of @self.
+
+
+ the tooltip of @self
+
+
+
+
+ a tab page
+
+
+
+
+
+ Invalidates thumbnail for @self.
+
+If an [class@TabOverview] is open, the thumbnail representing @self will be
+immediately updated. Otherwise it will be update when opening the overview.
+
+Does nothing if [property@TabPage:live-thumbnail] is set to `TRUE`.
+
+See also [method@TabView.invalidate_thumbnails].
+
+
+
+
+
+
+ a tab page
+
+
+
+
+
+ Sets the icon of @self.
+
+[class@TabBar] and [class@TabOverview] display the icon next to the title,
+unless [property@TabPage:loading] is set to `TRUE`.
+
+`AdwTabBar` also won't show the icon if the page is pinned and
+[propertyTabPage:indicator-icon] is set.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the icon of @self
+
+
+
+
+
+ Sets whether the indicator of @self is activatable.
+
+If set to `TRUE`, [signal@TabView::indicator-activated] will be emitted
+when the indicator icon is clicked.
+
+If [property@TabPage:indicator-icon] is not set, does nothing.
+
+
+
+
+
+
+ a tab page
+
+
+
+ whether the indicator is activatable
+
+
+
+
+
+ Sets the indicator icon of @self.
+
+A common use case is an audio or camera indicator in a web browser.
+
+[class@TabBar] will show it at the beginning of the tab, alongside icon
+representing [property@TabPage:icon] or loading spinner.
+
+If the page is pinned, the indicator will be shown instead of icon or
+spinner.
+
+[class@TabOverview] will show it at the at the top part of the thumbnail.
+
+[property@TabPage:indicator-tooltip] can be used to set the tooltip on the
+indicator icon.
+
+If [property@TabPage:indicator-activatable] is set to `TRUE`, the
+indicator icon can act as a button.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the indicator icon of @self
+
+
+
+
+
+ Sets the tooltip of the indicator icon of @self.
+
+The tooltip can be marked up with the Pango text markup language.
+
+See [property@TabPage:indicator-icon].
+
+
+
+
+
+
+ a tab page
+
+
+
+ the indicator tooltip of @self
+
+
+
+
+
+ Sets the search keyword for @self.
+
+[class@TabOverview] can search pages by their keywords in addition to their
+titles and tooltips.
+
+Keywords allow to include e.g. page URLs into tab search in a web browser.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the search keyword
+
+
+
+
+
+ Sets whether to enable live thumbnail for @self.
+
+When set to `TRUE`, @self's thumbnail in [class@TabOverview] will update
+immediately when @self is redrawn or resized.
+
+If it's set to `FALSE`, the thumbnail will only be live when the @self is
+selected, and otherwise it will be static and will only update when
+[method@TabPage.invalidate_thumbnail] or
+[method@TabView.invalidate_thumbnails] is called.
+
+
+
+
+
+
+ a tab page
+
+
+
+ whether to enable live thumbnail
+
+
+
+
+
+ Sets whether @self is loading.
+
+If set to `TRUE`, [class@TabBar] and [class@TabOverview] will display a
+spinner in place of icon.
+
+If the page is pinned and [property@TabPage:indicator-icon] is set, loading
+status will not be visible with `AdwTabBar`.
+
+
+
+
+
+
+ a tab page
+
+
+
+ whether @self is loading
+
+
+
+
+
+ Sets whether @self needs attention.
+
+[class@TabBar] will display a line under the tab representing the page if
+set to `TRUE`. If the tab is not visible, the corresponding edge of the tab
+bar will be highlighted.
+
+[class@TabOverview] will display a dot in the corner of the thumbnail if set
+to `TRUE`.
+
+[class@TabButton] will display a dot if any of the pages that aren't
+selected have [property@TabPage:needs-attention] set to `TRUE`.
+
+
+
+
+
+
+ a tab page
+
+
+
+ whether @self needs attention
+
+
+
+
+
+ Sets the horizontal alignment of the thumbnail for @self.
+
+If the page is so wide that [class@TabOverview] can't display it completely
+and has to crop it, horizontal alignment will determine which part of the
+page will be visible.
+
+For example, 0.5 means the center of the page will be visible, 0 means the
+start edge will be visible and 1 means the end edge will be visible.
+
+The default horizontal alignment is 0.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the new value
+
+
+
+
+
+ Sets the vertical alignment of the thumbnail for @self.
+
+If the page is so tall that [class@TabOverview] can't display it completely
+and has to crop it, vertical alignment will determine which part of the page
+will be visible.
+
+For example, 0.5 means the center of the page will be visible, 0 means the
+top edge will be visible and 1 means the bottom edge will be visible.
+
+The default vertical alignment is 0.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the new value
+
+
+
+
+
+ [class@TabBar] will display it in the center of the tab unless it's pinned,
+and will use it as a tooltip unless [property@TabPage:tooltip] is set.
+
+[class@TabOverview] will display it below the thumbnail unless it's pinned,
+or inside the card otherwise, and will use it as a tooltip unless
+[property@TabPage:tooltip] is set.
+
+Sets the title of @self.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the title of @self
+
+
+
+
+
+ Sets the tooltip of @self.
+
+The tooltip can be marked up with the Pango text markup language.
+
+If not set, [class@TabBar] and [class@TabOverview] will use
+[property@TabPage:title] as a tooltip instead.
+
+
+
+
+
+
+ a tab page
+
+
+
+ the tooltip of @self
+
+
+
+
+
+ The child of the page.
+
+
+
+ The icon of the page.
+
+[class@TabBar] and [class@TabOverview] display the icon next to the title,
+unless [property@TabPage:loading] is set to `TRUE`.
+
+`AdwTabBar` also won't show the icon if the page is pinned and
+[propertyTabPage:indicator-icon] is set.
+
+
+
+ Whether the indicator icon is activatable.
+
+If set to `TRUE`, [signal@TabView::indicator-activated] will be emitted
+when the indicator icon is clicked.
+
+If [property@TabPage:indicator-icon] is not set, does nothing.
+
+
+
+ An indicator icon for the page.
+
+A common use case is an audio or camera indicator in a web browser.
+
+[class@TabBar] will show it at the beginning of the tab, alongside icon
+representing [property@TabPage:icon] or loading spinner.
+
+If the page is pinned, the indicator will be shown instead of icon or
+spinner.
+
+[class@TabOverview] will show it at the at the top part of the thumbnail.
+
+[property@TabPage:indicator-tooltip] can be used to set the tooltip on the
+indicator icon.
+
+If [property@TabPage:indicator-activatable] is set to `TRUE`, the
+indicator icon can act as a button.
+
+
+
+ The tooltip of the indicator icon.
+
+The tooltip can be marked up with the Pango text markup language.
+
+See [property@TabPage:indicator-icon].
+
+
+
+ The search keyboard of the page.
+
+[class@TabOverview] can search pages by their keywords in addition to their
+titles and tooltips.
+
+Keywords allow to include e.g. page URLs into tab search in a web browser.
+
+
+
+ Whether to enable live thumbnail for this page.
+
+When set to `TRUE`, the page's thumbnail in [class@TabOverview] will update
+immediately when the page is redrawn or resized.
+
+If it's set to `FALSE`, the thumbnail will only be live when the page is
+selected, and otherwise it will be static and will only update when
+[method@TabPage.invalidate_thumbnail] or
+[method@TabView.invalidate_thumbnails] is called.
+
+
+
+ Whether the page is loading.
+
+If set to `TRUE`, [class@TabBar] and [class@TabOverview] will display a
+spinner in place of icon.
+
+If the page is pinned and [property@TabPage:indicator-icon] is set,
+loading status will not be visible with `AdwTabBar`.
+
+
+
+ Whether the page needs attention.
+
+[class@TabBar] will display a line under the tab representing the page if
+set to `TRUE`. If the tab is not visible, the corresponding edge of the tab
+bar will be highlighted.
+
+[class@TabOverview] will display a dot in the corner of the thumbnail if set
+to `TRUE`.
+
+[class@TabButton] will display a dot if any of the pages that aren't
+selected have this property set to `TRUE`.
+
+
+
+ The parent page of the page.
+
+See [method@TabView.add_page] and [method@TabView.close_page].
+
+
+
+ Whether the page is pinned.
+
+See [method@TabView.set_page_pinned].
+
+
+
+ Whether the page is selected.
+
+
+
+ The horizontal alignment of the page thumbnail.
+
+If the page is so wide that [class@TabOverview] can't display it completely
+and has to crop it, horizontal alignment will determine which part of the
+page will be visible.
+
+For example, 0.5 means the center of the page will be visible, 0 means the
+start edge will be visible and 1 means the end edge will be visible.
+
+The default horizontal alignment is 0.
+
+
+
+ The vertical alignment of the page thumbnail.
+
+If the page is so tall that [class@TabOverview] can't display it completely
+and has to crop it, vertical alignment will determine which part of the
+page will be visible.
+
+For example, 0.5 means the center of the page will be visible, 0 means the
+top edge will be visible and 1 means the bottom edge will be visible.
+
+The default vertical alignment is 0.
+
+
+
+ The title of the page.
+
+[class@TabBar] will display it in the center of the tab unless it's pinned,
+and will use it as a tooltip unless [property@TabPage:tooltip] is set.
+
+[class@TabOverview] will display it below the thumbnail unless it's pinned,
+or inside the card otherwise, and will use it as a tooltip unless
+[property@TabPage:tooltip] is set.
+
+
+
+ The tooltip of the page.
+
+The tooltip can be marked up with the Pango text markup language.
+
+If not set, [class@TabBar] and [class@TabOverview] will use
+[property@TabPage:title] as a tooltip instead.
+
+
+
+
+
+
+
+
+
+
+ A dynamic tabbed container.
+
+`AdwTabView` is a container which shows one child at a time. While it
+provides keyboard shortcuts for switching between pages, it does not provide
+a visible tab switcher and relies on external widgets for that, such as
+[class@TabBar], [class@TabOverview] and [class@TabButton].
+
+`AdwTabView` maintains a [class@TabPage] object for each page, which holds
+additional per-page properties. You can obtain the `AdwTabPage` for a page
+with [method@TabView.get_page], and as the return value for
+[method@TabView.append] and other functions for adding children.
+
+`AdwTabView` only aims to be useful for dynamic tabs in multi-window
+document-based applications, such as web browsers, file managers, text
+editors or terminals. It does not aim to replace [class@Gtk.Notebook] for use
+cases such as tabbed dialogs.
+
+As such, it does not support disabling page reordering or detaching.
+
+`AdwTabView` adds a number of global page switching and reordering shortcuts.
+The [property@TabView:shortcuts] property can be used to manage them.
+
+See [flags@TabViewShortcuts] for the list of the available shortcuts. All of
+the shortcuts are enabled by default.
+
+[method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts] can be
+used to manage shortcuts in a convenient way, for example:
+
+```c
+adw_tab_view_remove_shortcuts (view, ADW_TAB_VIEW_SHORTCUT_CONTROL_HOME |
+ ADW_TAB_VIEW_SHORTCUT_CONTROL_END);
+```
+
+## CSS nodes
+
+`AdwTabView` has a main CSS node with the name `tabview`.
+
+## Accessibility
+
+`AdwTabView` uses the [enum@Gtk.AccessibleRole.tab-panel] role for the tab
+pages which are the accessible parent objects of the child widgets.
+
+
+
+
+
+ Creates a new `AdwTabView`.
+
+
+ the newly created `AdwTabView`
+
+
+
+
+ Adds @child to @self with @parent as the parent.
+
+This function can be used to automatically position new pages, and to select
+the correct page when this page is closed while being selected (see
+[method@TabView.close_page]).
+
+If @parent is `NULL`, this function is equivalent to [method@TabView.append].
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+ a parent page for @child
+
+
+
+
+
+ Adds @shortcuts for @self.
+
+See [property@TabView:shortcuts] for details.
+
+
+
+
+
+
+ a tab view
+
+
+
+ the shortcuts to add
+
+
+
+
+
+ Inserts @child as the last non-pinned page.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+
+
+ Inserts @child as the last pinned page.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+
+
+ Requests to close all pages other than @page.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Requests to close @page.
+
+Calling this function will result in the [signal@TabView::close-page] signal
+being emitted for @page. Closing the page can then be confirmed or
+denied via [method@TabView.close_page_finish].
+
+If the page is waiting for a [method@TabView.close_page_finish] call, this
+function will do nothing.
+
+The default handler for [signal@TabView::close-page] will immediately confirm
+closing the page if it's non-pinned, or reject it if it's pinned. This
+behavior can be changed by registering your own handler for that signal.
+
+If @page was selected, another page will be selected instead:
+
+If the [property@TabPage:parent] value is `NULL`, the next page will be
+selected when possible, or if the page was already last, the previous page
+will be selected instead.
+
+If it's not `NULL`, the previous page will be selected if it's a descendant
+(possibly indirect) of the parent. If both the previous page and the parent
+are pinned, the parent will be selected instead.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Completes a [method@TabView.close_page] call for @page.
+
+If @confirm is `TRUE`, @page will be closed. If it's `FALSE`, it will be
+reverted to its previous state and [method@TabView.close_page] can be called
+for it again.
+
+This function should not be called unless a custom handler for
+[signal@TabView::close-page] is used.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+ whether to confirm or deny closing @page
+
+
+
+
+
+ Requests to close all pages after @page.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Requests to close all pages before @page.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Gets the default icon of @self.
+
+
+ the default icon of @self.
+
+
+
+
+ a tab view
+
+
+
+
+
+ Whether a page is being transferred.
+
+The corresponding property will be set to `TRUE` when a drag-n-drop tab
+transfer starts on any `AdwTabView`, and to `FALSE` after it ends.
+
+During the transfer, children cannot receive pointer input and a tab can
+be safely dropped on the tab view.
+
+
+ whether a page is being transferred
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the tab context menu model for @self.
+
+
+ the tab context menu model for @self
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the number of pages in @self.
+
+
+ the number of pages in @self
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the number of pinned pages in @self.
+
+See [method@TabView.set_page_pinned].
+
+
+ the number of pinned pages in @self
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the [class@TabPage] representing the child at @position.
+
+
+ the page object at @position
+
+
+
+
+ a tab view
+
+
+
+ the index of the page in @self, starting from 0
+
+
+
+
+
+ Gets the [class@TabPage] object representing @child.
+
+
+ the page object for @child
+
+
+
+
+ a tab view
+
+
+
+ a child in @self
+
+
+
+
+
+ Finds the position of @page in @self, starting from 0.
+
+
+ the position of @page in @self
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the pages of @self.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel], with one section for pinned
+pages and one for the rest of the pages.
+
+It also implements [iface@Gtk.SelectionModel] and can be used to track and
+change the selected page.
+
+
+ a `GtkSelectionModel` for the pages of @self
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the currently selected page in @self.
+
+
+ the selected page
+
+
+
+
+ a tab view
+
+
+
+
+
+ Gets the enabled shortcuts for @self.
+
+
+ the shortcut mask
+
+
+
+
+ a tab view
+
+
+
+
+
+ Inserts a non-pinned page at @position.
+
+It's an error to try to insert a page before a pinned page, in that case
+[method@TabView.insert_pinned] should be used instead.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+ the position to add @child at, starting from 0
+
+
+
+
+
+ Inserts a pinned page at @position.
+
+It's an error to try to insert a pinned page after a non-pinned page, in
+that case [method@TabView.insert] should be used instead.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+ the position to add @child at, starting from 0
+
+
+
+
+
+ Invalidates thumbnails for all pages in @self.
+
+This is a convenience method, equivalent to calling
+[method@TabPage.invalidate_thumbnail] on each page.
+
+
+
+
+
+
+ a tab view
+
+
+
+
+
+ Inserts @child as the first non-pinned page.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+
+
+ Inserts @child as the first pinned page.
+
+
+ the page object representing @child
+
+
+
+
+ a tab view
+
+
+
+ a widget to add
+
+
+
+
+
+ Removes @shortcuts from @self.
+
+See [property@TabView:shortcuts] for details.
+
+
+
+
+
+
+ a tab view
+
+
+
+ the shortcuts to remove
+
+
+
+
+
+ Reorders @page to before its previous page if possible.
+
+
+ whether @page was moved
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Reorders @page to the first possible position.
+
+
+ whether @page was moved
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Reorders @page to after its next page if possible.
+
+
+ whether @page was moved
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Reorders @page to the last possible position.
+
+
+ whether @page was moved
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+
+
+ Reorders @page to @position.
+
+It's a programmer error to try to reorder a pinned page after a non-pinned
+one, or a non-pinned page before a pinned one.
+
+
+ whether @page was moved
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+ the position to insert the page at, starting at 0
+
+
+
+
+
+ Selects the page after the currently selected page.
+
+If the last page was already selected, this function does nothing.
+
+
+ whether the selected page was changed
+
+
+
+
+ a tab view
+
+
+
+
+
+ Selects the page before the currently selected page.
+
+If the first page was already selected, this function does nothing.
+
+
+ whether the selected page was changed
+
+
+
+
+ a tab view
+
+
+
+
+
+ Sets the default page icon for @self.
+
+If a page doesn't provide its own icon via [property@TabPage:icon], a default
+icon may be used instead for contexts where having an icon is necessary.
+
+[class@TabBar] will use default icon for pinned tabs in case the page is not
+loading, doesn't have an icon and an indicator. Default icon is never used
+for tabs that aren't pinned.
+
+[class@TabOverview] will use default icon for pages with missing thumbnails.
+
+By default, the `adw-tab-icon-missing-symbolic` icon is used.
+
+
+
+
+
+
+ a tab view
+
+
+
+ the default icon
+
+
+
+
+
+ Sets the tab context menu model for @self.
+
+When a context menu is shown for a tab, it will be constructed from the
+provided menu model. Use the [signal@TabView::setup-menu] signal to set up
+the menu actions for the particular tab.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a menu model
+
+
+
+
+
+ Pins or unpins @page.
+
+Pinned pages are guaranteed to be placed before all non-pinned pages; at any
+given moment the first [property@TabView:n-pinned-pages] pages in @self are
+guaranteed to be pinned.
+
+When a page is pinned or unpinned, it's automatically reordered: pinning a
+page moves it after other pinned pages; unpinning a page moves it before
+other non-pinned pages.
+
+Pinned pages can still be reordered between each other.
+
+[class@TabBar] will display pinned pages in a compact form, never showing the
+title or close button, and only showing a single icon, selected in the
+following order:
+
+1. [property@TabPage:indicator-icon]
+2. A spinner if [property@TabPage:loading] is `TRUE`
+3. [property@TabPage:icon]
+4. [property@TabView:default-icon]
+
+[class@TabOverview] will not show a thumbnail for pinned pages, and replace
+the close button with an unpin button. Unlike `AdwTabBar`, it will still
+display the page's title, icon and indicator separately.
+
+Pinned pages cannot be closed by default, see [signal@TabView::close-page]
+for how to override that behavior.
+
+Changes the value of the [property@TabPage:pinned] property.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+ whether @page should be pinned
+
+
+
+
+
+ Sets the currently selected page in @self.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page in @self
+
+
+
+
+
+ Sets the enabled shortcuts for @self.
+
+See [flags@TabViewShortcuts] for the list of the available shortcuts. All of
+the shortcuts are enabled by default.
+
+[method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts] provide
+a convenient way to manage individual shortcuts.
+
+
+
+
+
+
+ a tab view
+
+
+
+ the new shortcuts
+
+
+
+
+
+ Transfers @page from @self to @other_view.
+
+The @page object will be reused.
+
+It's a programmer error to try to insert a pinned page after a non-pinned
+one, or a non-pinned page before a pinned one.
+
+
+
+
+
+
+ a tab view
+
+
+
+ a page of @self
+
+
+
+ the tab view to transfer the page to
+
+
+
+ the position to insert the page at, starting at 0
+
+
+
+
+
+ Default page icon.
+
+If a page doesn't provide its own icon via [property@TabPage:icon], a
+default icon may be used instead for contexts where having an icon is
+necessary.
+
+[class@TabBar] will use default icon for pinned tabs in case the page is
+not loading, doesn't have an icon and an indicator. Default icon is never
+used for tabs that aren't pinned.
+
+[class@TabOverview] will use default icon for pages with missing
+thumbnails.
+
+By default, the `adw-tab-icon-missing-symbolic` icon is used.
+
+
+
+ Whether a page is being transferred.
+
+This property will be set to `TRUE` when a drag-n-drop tab transfer starts
+on any `AdwTabView`, and to `FALSE` after it ends.
+
+During the transfer, children cannot receive pointer input and a tab can
+be safely dropped on the tab view.
+
+
+
+ Tab context menu model.
+
+When a context menu is shown for a tab, it will be constructed from the
+provided menu model. Use the [signal@TabView::setup-menu] signal to set up
+the menu actions for the particular tab.
+
+
+
+ The number of pages in the tab view.
+
+
+
+ The number of pinned pages in the tab view.
+
+See [method@TabView.set_page_pinned].
+
+
+
+ A list model with the tab view's pages.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel], with one section for pinned
+pages and one for the rest of the pages.
+
+It also implements [iface@Gtk.SelectionModel] and can be used to track and
+change the selected page.
+
+
+
+ The currently selected page.
+
+
+
+ The enabled shortcuts.
+
+See [flags@TabViewShortcuts] for the list of the available shortcuts. All
+of the shortcuts are enabled by default.
+
+[method@TabView.add_shortcuts] and [method@TabView.remove_shortcuts]
+provide a convenient way to manage individual shortcuts.
+
+
+
+ Emitted after [method@TabView.close_page] has been called for @page.
+
+The handler is expected to call [method@TabView.close_page_finish] to
+confirm or reject the closing.
+
+The default handler will immediately confirm closing for non-pinned pages,
+or reject it for pinned pages, equivalent to the following example:
+
+```c
+static gboolean
+close_page_cb (AdwTabView *view,
+ AdwTabPage *page,
+ gpointer user_data)
+{
+ adw_tab_view_close_page_finish (view, page, !adw_tab_page_get_pinned (page));
+
+ return GDK_EVENT_STOP;
+}
+```
+
+The [method@TabView.close_page_finish] call doesn't have to happen inside
+the handler, so can be used to do asynchronous checks before confirming the
+closing.
+
+A typical reason to connect to this signal is to show a confirmation dialog
+for closing a tab.
+
+The signal handler should return [const@Gdk.EVENT_STOP] to stop propagation
+or [const@Gdk.EVENT_PROPAGATE] to invoke the default handler.
+
+ whether propagation should be stopped
+
+
+
+
+ a page of @self
+
+
+
+
+
+ Emitted when a tab should be transferred into a new window.
+
+This can happen after a tab has been dropped on desktop.
+
+The signal handler is expected to create a new window, position it as
+needed and return its `AdwTabView` that the page will be transferred into.
+
+ the `AdwTabView` from the new window
+
+
+
+
+ Emitted after the indicator icon on @page has been activated.
+
+See [property@TabPage:indicator-icon] and
+[property@TabPage:indicator-activatable].
+
+
+
+
+
+ a page of @self
+
+
+
+
+
+ Emitted when a page has been created or transferred to @self.
+
+A typical reason to connect to this signal would be to connect to page
+signals for things such as updating window title.
+
+
+
+
+
+ a page of @self
+
+
+
+ the position of the page, starting from 0
+
+
+
+
+
+ Emitted when a page has been removed or transferred to another view.
+
+A typical reason to connect to this signal would be to disconnect signal
+handlers connected in the [signal@TabView::page-attached] handler.
+
+It is important not to try and destroy the page child in the handler of
+this function as the child might merely be moved to another window; use
+child dispose handler for that or do it in sync with your
+[method@TabView.close_page_finish] calls.
+
+
+
+
+
+ a page of @self
+
+
+
+ the position of the removed page, starting from 0
+
+
+
+
+
+ Emitted after @page has been reordered to @position.
+
+
+
+
+
+ a page of @self
+
+
+
+ the position @page was moved to, starting at 0
+
+
+
+
+
+ Emitted when a context menu is opened or closed for @page.
+
+If the menu has been closed, @page will be set to `NULL`.
+
+It can be used to set up menu actions before showing the menu, for example
+disable actions not applicable to @page.
+
+
+
+
+
+ a page of @self
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes available shortcuts in an [class@TabView].
+
+Shortcuts can be set with [property@TabView:shortcuts], or added/removed
+individually with [method@TabView.add_shortcuts] and
+[method@TabView.remove_shortcuts].
+
+New values may be added to this enumeration over time.
+
+ No shortcuts
+
+
+ <kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the next page
+
+
+ <kbd>Shift</kbd>+<kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the previous
+ page
+
+
+ <kbd>Ctrl</kbd>+<kbd>Page Up</kbd> - switch to the previous page
+
+
+ <kbd>Ctrl</kbd>+<kbd>Page Down</kbd> - switch to the next page
+
+
+ <kbd>Ctrl</kbd>+<kbd>Home</kbd> - switch to the first page
+
+
+ <kbd>Ctrl</kbd>+<kbd>End</kbd> - switch to the last page
+
+
+ <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Up</kbd> - move the selected
+ page backward
+
+
+ <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Down</kbd> - move the selected
+ page forward
+
+
+ <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Home</kbd> - move the selected page
+ at the start
+
+
+ <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>End</kbd> - move the current page at
+ the end
+
+
+ <kbd>Alt</kbd>+<kbd>1</kbd>⋯<kbd>9</kbd> - switch to pages 1-9
+
+
+ <kbd>Alt</kbd>+<kbd>0</kbd> - switch to page 10
+
+
+ All of the shortcuts
+
+
+
+ A time-based [class@Animation].
+
+`AdwTimedAnimation` implements a simple animation interpolating the given
+value from [property@TimedAnimation:value-from] to
+[property@TimedAnimation:value-to] over
+[property@TimedAnimation:duration] milliseconds using the curve described by
+[property@TimedAnimation:easing].
+
+If [property@TimedAnimation:reverse] is set to `TRUE`, `AdwTimedAnimation`
+will instead animate from [property@TimedAnimation:value-to] to
+[property@TimedAnimation:value-from], and the easing curve will be inverted.
+
+The animation can repeat a certain amount of times, or endlessly, depending
+on the [property@TimedAnimation:repeat-count] value. If
+[property@TimedAnimation:alternate] is set to `TRUE`, it will also change the
+direction every other iteration.
+
+
+ Creates a new `AdwTimedAnimation` on @widget to animate @target from @from
+to @to.
+
+
+ the newly created animation
+
+
+
+
+ a widget to create animation on
+
+
+
+ a value to animate from
+
+
+
+ a value to animate to
+
+
+
+ a duration for the animation
+
+
+
+ a target value to animate
+
+
+
+
+
+ Gets whether @self changes direction on every iteration.
+
+
+ whether @self alternates
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets the duration of @self.
+
+
+ the duration of @self, in milliseconds
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets the easing function @self uses.
+
+
+ the easing function @self uses
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets the number of times @self will play.
+
+
+ the number of times @self will play
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets whether @self plays backwards.
+
+
+ whether @self plays backwards
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets the value @self will animate from.
+
+
+ the value to animate from
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Gets the value @self will animate to.
+
+
+ the value to animate to
+
+
+
+
+ a timed animation
+
+
+
+
+
+ Sets whether @self changes direction on every iteration.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ whether @self alternates
+
+
+
+
+
+ Sets the duration of @self.
+
+If the animation repeats more than once, sets the duration of one iteration.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ the duration to use, in milliseconds
+
+
+
+
+
+ Sets the easing function @self will use.
+
+See [enum@Easing] for the description of specific easing functions.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ the easing function to use
+
+
+
+
+
+ Sets the number of times @self will play.
+
+If set to 0, @self will repeat endlessly.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ the number of times @self will play
+
+
+
+
+
+ Sets whether @self plays backwards.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ whether @self plays backwards
+
+
+
+
+
+ Sets the value @self will animate from.
+
+The animation will start at this value and end at
+[property@TimedAnimation:value-to].
+
+If [property@TimedAnimation:reverse] is `TRUE`, the animation will end at
+this value instead.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ the value to animate from
+
+
+
+
+
+ Sets the value @self will animate to.
+
+The animation will start at [property@TimedAnimation:value-from] and end at
+this value.
+
+If [property@TimedAnimation:reverse] is `TRUE`, the animation will start
+at this value instead.
+
+
+
+
+
+
+ a timed animation
+
+
+
+ the value to animate to
+
+
+
+
+
+ Whether the animation changes direction on every iteration.
+
+
+
+ Duration of the animation, in milliseconds.
+
+Describes how much time the animation will take.
+
+If the animation repeats more than once, describes the duration of one
+iteration.
+
+
+
+ Easing function used in the animation.
+
+Describes the curve the value is interpolated on.
+
+See [enum@Easing] for the description of specific easing functions.
+
+
+
+ Number of times the animation will play.
+
+If set to 0, the animation will repeat endlessly.
+
+
+
+ Whether the animation plays backwards.
+
+
+
+ The value to animate from.
+
+The animation will start at this value and end at
+[property@TimedAnimation:value-to].
+
+If [property@TimedAnimation:reverse] is `TRUE`, the animation will end at
+this value instead.
+
+
+
+ The value to animate to.
+
+The animation will start at [property@TimedAnimation:value-from] and end at
+this value.
+
+If [property@TimedAnimation:reverse] is `TRUE`, the animation will start
+at this value instead.
+
+
+
+
+
+
+
+ A helper object for [class@ToastOverlay].
+
+Toasts are meant to be passed into [method@ToastOverlay.add_toast] as
+follows:
+
+```c
+adw_toast_overlay_add_toast (overlay, adw_toast_new (_("Simple Toast")));
+```
+
+<picture>
+ <source srcset="toast-simple-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toast-simple.png" alt="toast-simple">
+</picture>
+
+Toasts always have a close button. They emit the [signal@Toast::dismissed]
+signal when disappearing.
+
+[property@Toast:timeout] determines how long the toast stays on screen, while
+[property@Toast:priority] determines how it behaves if another toast is
+already being displayed.
+
+Toast titles use Pango markup by default, set [property@Toast:use-markup] to
+`FALSE` if this is unwanted.
+
+[property@Toast:custom-title] can be used to replace the title label with a
+custom widget.
+
+## Actions
+
+Toasts can have one button on them, with a label and an attached
+[iface@Gio.Action].
+
+```c
+AdwToast *toast = adw_toast_new (_("Toast with Action"));
+
+adw_toast_set_button_label (toast, _("_Example"));
+adw_toast_set_action_name (toast, "win.example");
+
+adw_toast_overlay_add_toast (overlay, toast);
+```
+
+<picture>
+ <source srcset="toast-action-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toast-action.png" alt="toast-action">
+</picture>
+
+## Modifying toasts
+
+Toasts can be modified after they have been shown. For this, an `AdwToast`
+reference must be kept around while the toast is visible.
+
+A common use case for this is using toasts as undo prompts that stack with
+each other, allowing to batch undo the last deleted items:
+
+```c
+
+static void
+toast_undo_cb (GtkWidget *sender,
+ const char *action,
+ GVariant *param)
+{
+ // Undo the deletion
+}
+
+static void
+dismissed_cb (MyWindow *self)
+{
+ self->undo_toast = NULL;
+
+ // Permanently delete the items
+}
+
+static void
+delete_item (MyWindow *self,
+ MyItem *item)
+{
+ g_autofree char *title = NULL;
+ int n_items;
+
+ // Mark the item as waiting for deletion
+ n_items = ... // The number of waiting items
+
+ if (!self->undo_toast) {
+ self->undo_toast = adw_toast_new_format (_("‘%s’ deleted"), ...);
+
+ adw_toast_set_priority (self->undo_toast, ADW_TOAST_PRIORITY_HIGH);
+ adw_toast_set_button_label (self->undo_toast, _("_Undo"));
+ adw_toast_set_action_name (self->undo_toast, "toast.undo");
+
+ g_signal_connect_swapped (self->undo_toast, "dismissed",
+ G_CALLBACK (dismissed_cb), self);
+
+ adw_toast_overlay_add_toast (self->toast_overlay, self->undo_toast);
+
+ return;
+ }
+
+ title =
+ g_strdup_printf (ngettext ("<span font_features='tnum=1'>%d</span> item deleted",
+ "<span font_features='tnum=1'>%d</span> items deleted",
+ n_items), n_items);
+
+ adw_toast_set_title (self->undo_toast, title);
+
+ // Bump the toast timeout
+ adw_toast_overlay_add_toast (self->toast_overlay, g_object_ref (self->undo_toast));
+}
+
+static void
+my_window_class_init (MyWindowClass *klass)
+{
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+ gtk_widget_class_install_action (widget_class, "toast.undo", NULL, toast_undo_cb);
+}
+```
+
+<picture>
+ <source srcset="toast-undo-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toast-undo.png" alt="toast-undo">
+</picture>
+
+
+ Creates a new `AdwToast`.
+
+The toast will use @title as its title.
+
+@title can be marked up with the Pango text markup language.
+
+
+ the new created `AdwToast`
+
+
+
+
+ the title to be displayed
+
+
+
+
+
+ Creates a new `AdwToast`.
+
+The toast will use the format string as its title.
+
+See also: [ctor@Toast.new]
+
+
+ the newly created toast object
+
+
+
+
+ the formatted string for the toast title
+
+
+
+ the parameters to insert into the format string
+
+
+
+
+
+ Dismisses @self.
+
+Does nothing if @self has already been dismissed, or hasn't been added to an
+[class@ToastOverlay].
+
+
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets the name of the associated action.
+
+
+ the action name
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets the parameter for action invocations.
+
+
+ the action target
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets the label to show on the button.
+
+
+ the button label
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets the custom title widget of @self.
+
+
+ the custom title widget
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets priority for @self.
+
+
+ the priority
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets timeout for @self.
+
+
+ the timeout
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets the title that will be displayed on the toast.
+
+If a custom title has been set with [method@Adw.Toast.set_custom_title]
+the return value will be %NULL.
+
+
+ the title
+
+
+
+
+ a toast
+
+
+
+
+
+ Gets whether to use Pango markup for the toast title.
+
+
+ whether the toast uses markup
+
+
+
+
+ a toast
+
+
+
+
+
+ Sets the name of the associated action.
+
+It will be activated when clicking the button.
+
+See [property@Toast:action-target].
+
+
+
+
+
+
+ a toast
+
+
+
+ the action name
+
+
+
+
+
+ Sets the parameter for action invocations.
+
+This is a convenience function that calls [ctor@GLib.Variant.new] for
+@format_string and uses the result to call
+[method@Toast.set_action_target_value].
+
+If you are setting a string-valued target and want to set
+the action name at the same time, you can use
+[method@Toast.set_detailed_action_name].
+
+
+
+
+
+
+ a toast
+
+
+
+ a variant format string
+
+
+
+ arguments appropriate for @target_format
+
+
+
+
+
+ Sets the parameter for action invocations.
+
+If the @action_target variant has a floating reference this function
+will sink it.
+
+
+
+
+
+
+ a toast
+
+
+
+ the action target
+
+
+
+
+
+ Sets the label to show on the button.
+
+Underlines in the button text can be used to indicate a mnemonic.
+
+If set to `NULL`, the button won't be shown.
+
+See [property@Toast:action-name].
+
+
+
+
+
+
+ a toast
+
+
+
+ a button label
+
+
+
+
+
+ Sets the custom title widget of @self.
+
+It will be displayed instead of the title if set. In this case,
+[property@Toast:title] is ignored.
+
+Setting a custom title will unset [property@Toast:title].
+
+
+
+
+
+
+ a toast
+
+
+
+ the custom title widget
+
+
+
+
+
+ Sets the action name and its parameter.
+
+@detailed_action_name is a string in the format accepted by
+[func@Gio.Action.parse_detailed_name].
+
+
+
+
+
+
+ a toast
+
+
+
+ the detailed action name
+
+
+
+
+
+ Sets priority for @self.
+
+Priority controls how the toast behaves when another toast is already
+being displayed.
+
+If @priority is [enum@Adw.ToastPriority.normal], the toast will be queued.
+
+If @priority is [enum@Adw.ToastPriority.high], the toast will be displayed
+immediately, pushing the previous toast into the queue instead.
+
+
+
+
+
+
+ a toast
+
+
+
+ the priority
+
+
+
+
+
+ Sets timeout for @self.
+
+If @timeout is 0, the toast is displayed indefinitely until manually
+dismissed.
+
+Toasts cannot disappear while being hovered, pressed (on touchscreen), or
+have keyboard focus inside them.
+
+
+
+
+
+
+ a toast
+
+
+
+ the timeout
+
+
+
+
+
+ Sets the title that will be displayed on the toast.
+
+The title can be marked up with the Pango text markup language.
+
+Setting a title will unset [property@Toast:custom-title].
+
+If [property@Toast:custom-title] is set, it will be used instead.
+
+
+
+
+
+
+ a toast
+
+
+
+ a title
+
+
+
+
+
+ Whether to use Pango markup for the toast title.
+
+See also [func@Pango.parse_markup].
+
+
+
+
+
+
+ a toast
+
+
+
+ whether to use markup
+
+
+
+
+
+ The name of the associated action.
+
+It will be activated when clicking the button.
+
+See [property@Toast:action-target].
+
+
+
+ The parameter for action invocations.
+
+
+
+ The label to show on the button.
+
+Underlines in the button text can be used to indicate a mnemonic.
+
+If set to `NULL`, the button won't be shown.
+
+See [property@Toast:action-name].
+
+
+
+ The custom title widget.
+
+It will be displayed instead of the title if set. In this case,
+[property@Toast:title] is ignored.
+
+Setting a custom title will unset [property@Toast:title].
+
+
+
+ The priority of the toast.
+
+Priority controls how the toast behaves when another toast is already
+being displayed.
+
+If the priority is [enum@Adw.ToastPriority.normal], the toast will be
+queued.
+
+If the priority is [enum@Adw.ToastPriority.high], the toast will be
+displayed immediately, pushing the previous toast into the queue instead.
+
+
+
+ The timeout of the toast, in seconds.
+
+If timeout is 0, the toast is displayed indefinitely until manually
+dismissed.
+
+Toasts cannot disappear while being hovered, pressed (on touchscreen), or
+have keyboard focus inside them.
+
+
+
+ The title of the toast.
+
+The title can be marked up with the Pango text markup language.
+
+Setting a title will unset [property@Toast:custom-title].
+
+If [property@Toast:custom-title] is set, it will be used instead.
+
+
+
+ Whether to use Pango markup for the toast title.
+
+See also [func@Pango.parse_markup].
+
+
+
+ Emitted after the button has been clicked.
+
+It can be used as an alternative to setting an action.
+
+
+
+
+
+ Emitted when the toast has been dismissed.
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+[method@Toast.dismiss] to dismiss a single toast.
+
+See [class@Toast] for details.
+
+## CSS nodes
+
+```
+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.
+
+
+
+
+
+ Creates a new `AdwToastOverlay`.
+
+
+ the new created `AdwToastOverlay`
+
+
+
+
+ Displays @toast.
+
+Only one toast can be shown at a time; if a toast is already being displayed,
+either @toast or the original toast will be placed in a queue, depending on
+the priority of @toast. See [property@Toast:priority].
+
+If called on a toast that's already displayed, its timeout will be reset.
+
+If called on a toast currently in the queue, the toast will be bumped
+forward to be shown as soon as possible.
+
+
+
+
+
+
+ a toast overlay
+
+
+
+ a toast
+
+
+
+
+
+ Dismisses all displayed toasts.
+
+Use [method@Toast.dismiss] to dismiss a single toast.
+
+
+
+
+
+
+ a toast overlay
+
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the child widget of @self
+
+
+
+
+ a toast overlay
+
+
+
+
+
+ Sets the child widget of @self.
+
+
+
+
+
+
+ a toast overlay
+
+
+
+ the child widget
+
+
+
+
+
+ The child widget.
+
+
+
+
+
+
+
+
+
+
+ [class@Toast] behavior when another toast is already displayed.
+
+ the toast will be queued if another toast is
+ already displayed.
+
+
+ the toast will be displayed immediately, pushing
+ the previous toast into the queue instead.
+
+
+
+ A toggle within [class@ToggleGroup].
+
+`AdwToggle` can optionally have a name, set with [property@Toggle:name].
+If the name is set, [property@ToggleGroup:active-name] can be used to access
+toggles instead of index.
+
+
+ Creates a new `AdwToggle`.
+
+
+ the newly created `AdwToggle`
+
+
+
+
+ Gets the child widget of @self.
+
+
+ the toggle child
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the description of @self.
+
+
+ the toggle description
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets whether @self is enabled.
+
+
+ whether the toggle is enabled
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the icon name of @self.
+
+
+ the toggle icon name
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the index of @self within its toggle group.
+
+
+ the index, or [const@Gtk.INVALID_LIST_POSITION] if it's not in a group
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the label of @self.
+
+
+ the toggle label
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the name of @self.
+
+
+ the toggle name
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets the tooltip of @self.
+
+
+ the toggle tooltip
+
+
+
+
+ a toggle
+
+
+
+
+
+ Gets whether @self uses underlines.
+
+
+ whether the toggle uses underlines
+
+
+
+
+ a toggle
+
+
+
+
+
+ Sets the child of @self to @child.
+
+When the child is set, icon and label are not displayed.
+
+It's recommended to still set the label, as it can still be used by the
+screen reader.
+
+
+
+
+
+
+ a toggle
+
+
+
+ a child widget
+
+
+
+
+
+ Sets the description of @self to @description.
+
+The description will be read out when using screen reader. If not set,
+[property@Toggle:tooltip] will be used instead.
+
+See [enum@Gtk.AccessibleProperty.description].
+
+
+
+
+
+
+ a toggle
+
+
+
+ the description
+
+
+
+
+
+ Sets whether @self is enabled.
+
+
+
+
+
+
+ a toggle
+
+
+
+ whether the toggle should be enbled
+
+
+
+
+
+ Sets the icon name of @self to @icon_name.
+
+The icon will be displayed alone or next to the label, unless
+[property@Toggle:child] is set.
+
+
+
+
+
+
+ a toggle
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the label of @self to @label.
+
+The label will be displayed alone or next to the icon, unless
+[property@Toggle:child] is set, but will still be read out by the screen
+reader.
+
+
+
+
+
+
+ a toggle
+
+
+
+ a label
+
+
+
+
+
+ Sets the name of @self to @name.
+
+Allows accessing @self by its name instead of index.
+
+See [property@ToggleGroup:active-name].
+
+
+
+
+
+
+ a toggle
+
+
+
+ a name
+
+
+
+
+
+ Sets the tooltip of @self to @tooltip.
+
+@tooltip can be marked up with the Pango text markup language.
+
+Tooltip text will also be used as accessible description. Use
+[property@Toggle:description] to set it separately.
+
+
+
+
+
+
+ a toggle
+
+
+
+ the tooltip
+
+
+
+
+
+ Sets whether an embedded underline in the label indicates a mnemonic.
+
+See [property@Toggle:label].
+
+
+
+
+
+
+ a toggle
+
+
+
+ whether an underline in the label indicates a mnemonic
+
+
+
+
+
+ The toggle child.
+
+When the child is set, icon and label are not displayed.
+
+It's recommended to still set the label, as it can still be used by the
+screen reader.
+
+
+
+ The description of the toggle.
+
+The description will be read out when using screen reader. If not set,
+[property@Toggle:tooltip] will be used instead.
+
+See [enum@Gtk.AccessibleProperty.description].
+
+
+
+ Whether this toggle is enabled.
+
+
+
+ The toggle icon name.
+
+The icon will be displayed alone or next to the label, unless
+[property@Toggle:child] is set.
+
+
+
+ The toggle label.
+
+The label will be displayed alone or next to the icon, unless
+[property@Toggle:child] is set, but will still be read out by the screen
+reader.
+
+
+
+ The toggle name.
+
+Allows accessing the toggle by its name instead of index.
+
+See [property@ToggleGroup:active-name].
+
+
+
+ The tooltip of the toggle.
+
+The tooltip can be marked up with the Pango text markup language.
+
+Tooltip text will also be used as accessible description. Use
+[property@Toggle:description] to set it separately.
+
+
+
+ Whether an embedded underline in the label indicates a mnemonic.
+
+See [property@Toggle:label].
+
+
+
+
+
+
+
+
+
+
+ A group of exclusive toggles.
+
+<picture>
+ <source srcset="toggle-group-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toggle-group.png" alt="toggle-group">
+</picture>
+
+`AdwToggleGroup` presents a set of exclusive toggles, represented as
+[class@Toggle] objects. Each toggle can display an icon, a label, an icon
+and a label, or a custom child.
+
+Toggles are indexed by their position, with the first toggle being equivalent
+to 0, and so on. Use the [property@ToggleGroup:active] to get that position.
+
+Toggles can also have optional names, set via the [property@Toggle:name]
+property. The name of the active toggle can be accessed via the
+[property@ToggleGroup:active-name] property.
+
+`AdwToggle` objects can be retrieved via their index or name, using
+[method@ToggleGroup.get_toggle] or [method@ToggleGroup.get_toggle_by_name]
+respectively. `AdwToggleGroup` also provides a [iface@Gtk.SelectionModel] of
+its toggles via the [property@ToggleGroup:toggles] property.
+
+`AdwToggleGroup` is orientable, and the toggles can be displayed horizontally
+or vertically. This is mostly useful for icon-only toggles.
+
+Use the [property@ToggleGroup:homogeneous] property to make the toggles take
+the same size, and the [property@ToggleGroup:can-shrink] to control whether
+the toggles can ellipsize.
+
+Example of an `AdwToggleGroup` UI definition:
+
+```xml
+ <object class="AdwToggleGroup">
+ <property name="active-name">picture</property>
+ <child>
+ <object class="AdwToggle">
+ <property name="icon-name">camera-photo-symbolic</property>
+ <property name="tooltip" translatable="yes">Picture Mode</property>
+ <property name="name">picture</property>
+ </object>
+ </child>
+ <child>
+ <object class="AdwToggle">
+ <property name="icon-name">camera-video-symbolic</property>
+ <property name="tooltip" translatable="yes">Recording Mode</property>
+ <property name="name">recording</property>
+ </object>
+ </child>
+ </object>
+```
+
+See also: [class@InlineViewSwitcher].
+
+## CSS nodes
+
+`AdwToggleGroup` has a main CSS node with the name `toggle-group`.
+
+Its toggles have CSS nodes with the name `toggle`, and its separators have nodes
+with the name `separator`.
+
+Toggle nodes will have a different style classes depending on their content:
+`.text-button` for labels, `.image-button` for icons, `.image-text-button`
+for both or no style class for custom children.
+
+The hidden separators use the `.hidden` style class.
+
+## Style classes
+
+`AdwToggleGroup` can use the [`.flat`](style-classes.html#flat_1) style class
+to remove its background and make it look like a group of buttons.
+
+<picture>
+ <source srcset="toggle-group-flat-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toggle-group-flat.png" alt="toggle-group-flat">
+</picture>
+
+It can also use the [`.round`](style-classes.html#round) style class to make
+its toggles and the group itself rounded.
+
+<picture>
+ <source srcset="toggle-group-round-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toggle-group-round.png" alt="toggle-group-round">
+</picture>
+
+They can also be combined with each other.
+
+<picture>
+ <source srcset="toggle-group-flat-round-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toggle-group-flat-round.png" alt="toggle-group-flat-round">
+</picture>
+
+## Accessibility
+
+`AdwToggleGroup` uses the [enum@Gtk.AccessibleRole.radio-group] role. Its
+toggles use the [enum@Gtk.AccessibleRole.radio] role.
+
+
+
+
+
+
+ Creates a new `AdwToggleGroup`.
+
+
+ the newly created `AdwToggleGroup`
+
+
+
+
+ Adds a toggle to @self.
+
+
+
+
+
+
+ a toggle group
+
+
+
+ the toggle to add
+
+
+
+
+
+ Gets the index of the active toggle in @self.
+
+Returns [const@Gtk.INVALID_LIST_POSITION] if no toggle is active.
+
+
+ the active toggle index
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Gets the name of the active toggle in @self.
+
+Can be `NULL` if the currently active toggle doesn't have a name.
+
+See [property@Toggle:name].
+
+
+ the active toggle name
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Gets whether the toggles can be smaller than the natural size of their
+contents.
+
+
+ whether the toggles can shrink
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Gets whether all toggles take the same size.
+
+
+ whether all toggles take the same size
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Gets the number of toggles within @self.
+
+
+ the number of toggles
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Gets the toggle with @index from @self.
+
+
+ the toggle
+
+
+
+
+ a toggle group
+
+
+
+ toggle's index
+
+
+
+
+
+ Gets the toggle with the name @name from @self.
+
+
+ the toggle
+
+
+
+
+ a toggle group
+
+
+
+ toggle name
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the toggles of the group.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track and change the active
+toggle.
+
+
+ a `GtkSelectionModel` for the group's toggles
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Removes @toggle from @self.
+
+
+
+
+
+
+ a toggle group
+
+
+
+ a toggle to remove
+
+
+
+
+
+ Removes all toggles from @self.
+
+
+
+
+
+
+ a toggle group
+
+
+
+
+
+ Sets the active toggle for @self.
+
+If the index is larger than the number of toggles in @self, unsets the
+current active toggle.
+
+
+
+
+
+
+ a toggle group
+
+
+
+ toggle index
+
+
+
+
+
+ Sets the active toggle for @self.
+
+The name can be set via [property@Toggle:name].
+
+If @name is `NULL`, unset the current active toggle instead.
+
+
+
+
+
+
+ a toggle group
+
+
+
+ toggle name
+
+
+
+
+
+ Sets whether the toggles can be smaller than the natural size of their
+contents.
+
+If @can_shrink is `TRUE`, the toggle labels will ellipsize.
+
+See [property@Gtk.Button:can-shrink].
+
+
+
+
+
+
+ a toggle group
+
+
+
+ whether the toggles can shrink
+
+
+
+
+
+ Sets whether all toggles take the same size.
+
+
+
+
+
+
+ a toggle group
+
+
+
+ whether all toggles should take the same size
+
+
+
+
+
+ The index of the active toggle.
+
+Setting the index to a larger value than the number of toggles in the group
+unsets the current active toggle.
+
+If no toggle is active, the property will be set to
+[const@Gtk.INVALID_LIST_POSITION].
+
+
+
+ The name of the active toggle.
+
+The name can be set via [property@Toggle:name]. If the currently active
+toggle doesn't have a name, the property will be set to `NULL`.
+
+Set it to `NULL` to unset the current active toggle.
+
+
+
+ Whether the toggles can be smaller than the natural size of their contents.
+
+If set to `TRUE`, the toggle labels will ellipsize.
+
+See [property@Gtk.Button:can-shrink].
+
+
+
+ Whether all toggles take the same size.
+
+
+
+ The number of toggles within the group.
+
+
+
+ A selection model with the groups's toggles.
+
+This can be used to keep an up-to-date view. The model also implements
+[iface@Gtk.SelectionModel] and can be used to track and change the active
+toggle.
+
+
+
+
+
+
+
+
+
+
+ Describes the possible top or bottom bar styles in an [class@ToolbarView]
+widget.
+
+[enum@Adw.ToolbarStyle.flat] is suitable for simple content, such as
+[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.
+
+<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>
+
+[enum@Adw.ToolbarStyle.raised] style 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/bottom bars, or
+[class@TabView], where each page can have a different background.
+
+[enum@Adw.ToolbarStyle.raised-border] style is similar to
+[enum@Adw.ToolbarStyle.raised], but with the shadow replaced with a more
+subtle border. It's intended to be used in applications like image viewers,
+where a shadow over the content might be undesired.
+
+<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>
+<picture style="min-width: 33%; display: inline-block;">
+ <source srcset="toolbar-view-raised-border-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="toolbar-view-raised-border.png" alt="toolbar-view-raised-border">
+</picture>
+
+See [property@ToolbarView:top-bar-style] and
+[property@ToolbarView:bottom-bar-style].
+
+New values may be added to this enumeration over time.
+
+ No background, shadow only for scrolled content
+
+
+ Opaque background with a persistent shadow
+
+
+ Opaque background with a persistent border
+
+
+
+ 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
+bottom bars, shown at the top and bottom sides respectively.
+
+Example of an `AdwToolbarView` UI definition:
+```xml
+<object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <object class="AdwPreferencesPage">
+ <!-- ... -->
+ </object>
+ </property>
+</object>
+```
+
+The following kinds of top and bottom bars are supported:
+
+- [class@HeaderBar]
+- [class@TabBar]
+- [class@ViewSwitcherBar]
+- [class@Gtk.ActionBar]
+- [class@Gtk.HeaderBar]
+- [class@Gtk.PopoverMenuBar]
+- [class@Gtk.SearchBar]
+- Any [class@Gtk.Box] or a similar widget with the
+ [`.toolbar`](style-classes.html#toolbars) style class
+
+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 [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+ Creates a new `AdwToolbarView`.
+
+
+ the newly created `AdwToolbarView`
+
+
+
+
+ Adds a bottom bar to @self.
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ a widget
+
+
+
+
+
+ Adds a top bar to @self.
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ a widget
+
+
+
+
+
+ Gets the current bottom bar height for @self.
+
+Bottom bar height does change depending on
+[property@ToolbarView:reveal-bottom-bars], including during the transition.
+
+See [method@ToolbarView.get_top_bar_height].
+
+
+ the current bottom bar height
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets appearance of the bottom bars for @self.
+
+
+ bottom bar style
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets the content widget for @self.
+
+
+ the content widget
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets whether the content widget can extend behind bottom bars.
+
+
+ whether content extends behind bottom bars
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets whether the content widget can extend behind top bars.
+
+
+ whether content extends behind top bars
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets whether bottom bars are revealed for @self.
+
+
+ whether bottom bars are revealed
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets whether top bars are revealed for @self.
+
+
+ whether top bars are revealed
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets the current top bar height for @self.
+
+Top bar height does change depending on
+[property@ToolbarView:reveal-top-bars], including during the transition.
+
+See [method@ToolbarView.get_bottom_bar_height].
+
+
+ the current top bar height
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Gets appearance of the top bars for @self.
+
+
+ top bar style
+
+
+
+
+ a toolbar view
+
+
+
+
+
+ Removes a child from @self.
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ the child to be removed
+
+
+
+
+
+ Sets appearance of the bottom bars for @self.
+
+If set to [enum@Adw.ToolbarStyle.flat], bottom bars are flat and scrolling
+content has a subtle undershoot shadow when touching them, same as the
+[`.undershoot-bottom`](style-classes.html#undershoot-indicators)
+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 [enum@Adw.ToolbarStyle.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.
+
+[enum@Adw.ToolbarStyle.raised-border] is similar to
+[enum@Adw.ToolbarStyle.raised], but the shadow is replaced with a more subtle
+border. This can be useful for applications like image viewers.
+
+See also [method@ToolbarView.set_top_bar_style].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ bottom bar style
+
+
+
+
+
+ Sets the content widget for @self.
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ the content widget
+
+
+
+
+
+ Sets whether the content widget can extend behind bottom bars.
+
+This can be used in combination with [property@ToolbarView:reveal-bottom-bars]
+to show and hide toolbars in fullscreen.
+
+See [method@ToolbarView.set_extend_content_to_top_edge].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ whether content extends behind bottom bars
+
+
+
+
+
+ Sets whether the content widget can extend behind top bars.
+
+This can be used in combination with [property@ToolbarView:reveal-top-bars]
+to show and hide toolbars in fullscreen.
+
+See [method@ToolbarView.set_extend_content_to_bottom_edge].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ whether content extends behind top bars
+
+
+
+
+
+ Sets whether bottom bars are revealed for @self.
+
+The transition will be animated.
+
+This can be used in combination with
+[property@ToolbarView:extend-content-to-bottom-edge] to show and hide
+toolbars in fullscreen.
+
+See [method@ToolbarView.set_reveal_top_bars].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ whether to reveal bottom bars
+
+
+
+
+
+ Sets whether top bars are revealed for @self.
+
+The transition will be animated.
+
+This can be used in combination with
+[property@ToolbarView:extend-content-to-top-edge] to show and hide toolbars
+in fullscreen.
+
+See [method@ToolbarView.set_reveal_bottom_bars].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ whether to reveal top bars
+
+
+
+
+
+ Sets appearance of the top bars for @self.
+
+If set to [enum@Adw.ToolbarStyle.flat], top bars are flat and scrolling
+content has a subtle undershoot shadow when touching them, same as the
+[`.undershoot-top`](style-classes.html#undershoot-indicators)
+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 [enum@Adw.ToolbarStyle.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.
+
+[enum@Adw.ToolbarStyle.raised-border] is similar to
+[enum@Adw.ToolbarStyle.raised], but the shadow is replaced with a more subtle
+border. This can be useful for applications like image viewers.
+
+See also [method@ToolbarView.set_bottom_bar_style].
+
+
+
+
+
+
+ a toolbar view
+
+
+
+ top bar style
+
+
+
+
+
+ The current bottom bar height.
+
+Bottom bar height does change depending on
+[property@ToolbarView:reveal-bottom-bars], including during the transition.
+
+See [property@ToolbarView:top-bar-height].
+
+
+
+ Appearance of the bottom bars.
+
+If set to [enum@Adw.ToolbarStyle.flat], bottom bars are flat and scrolling
+content has a subtle undershoot shadow when touching them, same as the
+[`.undershoot-bottom`](style-classes.html#undershoot-indicators)
+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 [enum@Adw.ToolbarStyle.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.
+
+[enum@Adw.ToolbarStyle.raised-border] is similar to
+[enum@Adw.ToolbarStyle.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].
+
+
+
+ The content widget.
+
+
+
+ Whether the content widget can extend behind bottom bars.
+
+This can be used in combination with
+[property@ToolbarView:reveal-bottom-bars] to show and hide toolbars in
+fullscreen.
+
+See [property@ToolbarView:extend-content-to-top-edge].
+
+
+
+ Whether the content widget can extend behind top bars.
+
+This can be used in combination with [property@ToolbarView:reveal-top-bars]
+to show and hide toolbars in fullscreen.
+
+See [property@ToolbarView:extend-content-to-bottom-edge].
+
+
+
+ Whether bottom bars are visible.
+
+The transition will be animated.
+
+This can be used in combination with
+[property@ToolbarView:extend-content-to-bottom-edge] to show and hide
+toolbars in fullscreen.
+
+See [property@ToolbarView:reveal-top-bars].
+
+
+
+ Whether top bars are revealed.
+
+The transition will be animated.
+
+This can be used in combination with
+[property@ToolbarView:extend-content-to-top-edge] to show and hide toolbars
+in fullscreen.
+
+See [property@ToolbarView:reveal-bottom-bars].
+
+
+
+ The current top bar height.
+
+Top bar height does change depending [property@ToolbarView:reveal-top-bars],
+including during the transition.
+
+See [property@ToolbarView:bottom-bar-height].
+
+
+
+ Appearance of the top bars.
+
+If set to [enum@Adw.ToolbarStyle.flat], top bars are flat and scrolling
+content has a subtle undershoot shadow when touching them, same as the
+[`.undershoot-top`](style-classes.html#undershoot-indicators)
+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 [enum@Adw.ToolbarStyle.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.
+
+[enum@Adw.ToolbarStyle.raised-border] is similar to
+[enum@Adw.ToolbarStyle.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].
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Adwaita version, encoded as a string, useful for printing and
+concatenation.
+
+
+
+
+ A view container for [class@ViewSwitcher].
+
+`AdwViewStack` is a container which only shows one page at a time.
+It is typically used to hold an application's main views.
+
+It doesn't provide a way to transition between pages.
+Instead, a separate widget such as [class@ViewSwitcher],
+[class@InlineViewSwitcher] or [class@ViewSwitcherSidebar] can be used with
+`AdwViewStack` to provide this functionality.
+
+`AdwViewStack` pages can have a title, an icon, an attention request, and a
+numbered badge that [class@ViewSwitcher] will use to let users identify which
+page is which. Set them using the [property@ViewStackPage:title],
+[property@ViewStackPage:icon-name],
+[property@ViewStackPage:needs-attention], and
+[property@ViewStackPage:badge-number] properties.
+
+`AdwViewStack` pages can also be grouped into sections, using the
+[property@ViewStackPage:starts-section] and
+[property@ViewStackPage:section-title] properties. Currently, only
+[class@ViewSwitcherSidebar] displays groups.
+
+Unlike [class@Gtk.Stack], transitions between views can only be animated via
+a crossfade and size changes are always interpolated. Animations are disabled
+by default. Use [property@ViewStack:enable-transitions] to enable them.
+
+`AdwViewStack` maintains a [class@ViewStackPage] object for each added child,
+which holds additional per-child properties. You obtain the
+[class@ViewStackPage] for a child with [method@ViewStack.get_page] and you
+can obtain a [iface@Gtk.SelectionModel] containing all the pages with
+[method@ViewStack.get_pages].
+
+## AdwViewStack as GtkBuildable
+
+To set child-specific properties in a .ui file, create
+[class@ViewStackPage] objects explicitly, and set the child widget as a
+property on it:
+
+```xml
+ <object class="AdwViewStack" id="stack">
+ <child>
+ <object class="AdwViewStackPage">
+ <property name="name">overview</property>
+ <property name="title">Overview</property>
+ <property name="child">
+ <object class="AdwStatusPage">
+ <property name="title">Welcome!</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ </object>
+```
+
+## CSS nodes
+
+`AdwViewStack` has a single CSS node named `stack`.
+
+## Accessibility
+
+`AdwViewStack` uses the [enum@Gtk.AccessibleRole.tab-panel] for the stack
+pages which are the accessible parent objects of the child widgets.
+
+
+
+
+
+ Creates a new `AdwViewStack`.
+
+
+ the newly created `AdwViewStack`
+
+
+
+
+ Adds a child to @self.
+
+
+ the [class@ViewStackPage] for @child
+
+
+
+
+ a view stack
+
+
+
+ the widget to add
+
+
+
+
+
+ Adds a child to @self.
+
+The child is identified by the @name.
+
+
+ the `AdwViewStackPage` for @child
+
+
+
+
+ a view stack
+
+
+
+ the widget to add
+
+
+
+ the name for @child
+
+
+
+
+
+ Adds a child to @self.
+
+The child is identified by the @name. The @title will be used by
+[class@ViewSwitcher] to represent @child, so it should be short.
+
+
+ the `AdwViewStackPage` for @child
+
+
+
+
+ a view stack
+
+
+
+ the widget to add
+
+
+
+ the name for @child
+
+
+
+ a human-readable title for @child
+
+
+
+
+
+ Adds a child to @self.
+
+The child is identified by the @name. The @title and @icon_name will be used
+by [class@ViewSwitcher] to represent @child.
+
+
+ the `AdwViewStackPage` for @child
+
+
+
+
+ a view stack
+
+
+
+ the widget to add
+
+
+
+ the name for @child
+
+
+
+ a human-readable title for @child
+
+
+
+ an icon name for @child
+
+
+
+
+
+ Finds the child with @name in @self.
+
+
+ the requested child
+
+
+
+
+ a view stack
+
+
+
+ the name of the child to find
+
+
+
+
+
+ Gets whether @self uses a crossfade transition between pages.
+
+Use [property@ViewStack:transition-duration] to control the duration, and
+[property@ViewStack:transition-running] to know when the transition is
+running.
+
+
+ whether to enable page transitions
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets whether @self is horizontally homogeneous.
+
+
+ whether @self is horizontally homogeneous
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets the [class@ViewStackPage] object for @child.
+
+
+ the page object for @child
+
+
+
+
+ a view stack
+
+
+
+ a child of @self
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the pages of the stack.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel] and creates sections based on
+[property@ViewStackPage:starts-section] values.
+
+The model also implements [iface@Gtk.SelectionModel] and can be used to track
+and change the visible page.
+
+
+ a `GtkSelectionModel` for the stack's children
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets the transition animation duration for @self.
+
+
+ the transition duration, in milliseconds
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets whether a transition is currently running for @self.
+
+If a transition is impossible, the property value will be set to `TRUE` and
+then immediately to `FALSE`, so it's possible to rely on its notifications
+to know that a transition has happened.
+
+
+ whether a transition is currently running
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets whether @self is vertically homogeneous.
+
+
+ whether @self is vertically homogeneous
+
+
+
+
+ a view stack
+
+
+
+
+
+ Gets the currently visible child of @self.
+
+
+ the visible child
+
+
+
+
+ a view stack
+
+
+
+
+
+ Returns the name of the currently visible child of @self.
+
+
+ the name of the visible child
+
+
+
+
+ a view stack
+
+
+
+
+
+ Removes a child widget from @self.
+
+
+
+
+
+
+ a view stack
+
+
+
+ the child to remove
+
+
+
+
+
+ Sets whether @self uses a crossfade transition between pages.
+
+
+
+
+
+
+ a view stack
+
+
+
+ whether to enable page transitions
+
+
+
+
+
+ Sets @self to be horizontally homogeneous or not.
+
+If the stack is horizontally homogeneous, it allocates the same width for
+all children.
+
+If it's `FALSE`, the stack may change width when a different child becomes
+visible.
+
+
+
+
+
+
+ a view stack
+
+
+
+ whether to make @self horizontally homogeneous
+
+
+
+
+
+ Sets the transition animation duration for @self.
+
+Only used when [property@ViewStack:enable-transitions] is set to `TRUE`.
+
+
+
+
+
+
+ a view stack
+
+
+
+ the new duration, in milliseconds
+
+
+
+
+
+ Sets @self to be vertically homogeneous or not.
+
+If the stack is vertically homogeneous, it allocates the same height for
+all children.
+
+If it's `FALSE`, the stack may change height when a different child becomes
+visible.
+
+
+
+
+
+
+ a view stack
+
+
+
+ whether to make @self vertically homogeneous
+
+
+
+
+
+ Makes @child the visible child of @self.
+
+
+
+
+
+
+ a view stack
+
+
+
+ a child of @self
+
+
+
+
+
+ Makes the child with @name visible.
+
+See [property@ViewStack:visible-child].
+
+
+
+
+
+
+ a view stack
+
+
+
+ the name of the child
+
+
+
+
+
+ Whether the stack uses a crossfade transition between pages.
+
+Use [property@ViewStack:transition-duration] to control the duration, and
+[property@ViewStack:transition-running] to know when the transition is
+running.
+
+
+
+ Whether the stack is horizontally homogeneous.
+
+If the stack is horizontally homogeneous, it allocates the same width for
+all children.
+
+If it's `FALSE`, the stack may change width when a different child becomes
+visible.
+
+
+
+ A selection model with the stack's pages.
+
+This can be used to keep an up-to-date view.
+
+The model implements [iface@Gtk.SectionModel] and creates sections based on
+[property@ViewStackPage:starts-section] values.
+
+The model also implements [iface@Gtk.SelectionModel] and can be used to
+track and change the visible page.
+
+
+
+ The transition animation duration, in milliseconds.
+
+Only used when [property@ViewStack:enable-transitions] is set to `TRUE`.
+
+
+
+ Whether a transition is currently running.
+
+If a transition is impossible, the property value will be set to `TRUE` and
+then immediately to `FALSE`, so it's possible to rely on its notifications
+to know that a transition has happened.
+
+
+
+ Whether the stack is vertically homogeneous.
+
+If the stack is vertically homogeneous, it allocates the same height for
+all children.
+
+If it's `FALSE`, the stack may change height when a different child becomes
+visible.
+
+
+
+ The widget currently visible in the stack.
+
+
+
+ The name of the widget currently visible in the stack.
+
+See [property@ViewStack:visible-child].
+
+
+
+
+
+
+
+
+
+
+ An auxiliary class used by [class@ViewStack].
+
+
+
+ Gets the badge number for this page.
+
+
+ the badge number for this page
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets the stack child to which @self belongs.
+
+
+ the child to which @self belongs
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets the icon name of the page.
+
+
+ the icon name of the page
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets the name of the page.
+
+
+ the name of the page
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets whether the page requires the user attention.
+
+
+ whether the page needs attention
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets the section title for @self.
+
+
+ the section title
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets whether @self starts a section.
+
+
+ whether @self starts a section
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets the page title.
+
+
+ the page title
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets whether underlines in the page title indicate mnemonics.
+
+
+ whether underlines in the page title indicate mnemonics
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Gets whether @self is visible in its `AdwViewStack`.
+
+This is independent from the [property@Gtk.Widget:visible]
+property of its widget.
+
+
+ whether @self is visible
+
+
+
+
+ a view stack page
+
+
+
+
+
+ Sets the badge number for this page.
+
+[class@ViewSwitcher] can display it as a badge next to the page icon. It is
+commonly used to display a number of unread items within the page.
+
+It can be used together with [property@ViewStack{age}:needs-attention].
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the new value to set
+
+
+
+
+
+ Sets the icon name of the page.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the icon name
+
+
+
+
+
+ Sets the name of the page.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the page name
+
+
+
+
+
+ Sets whether the page requires the user attention.
+
+[class@ViewSwitcher] will display it as a dot next to the page icon.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the new value to set
+
+
+
+
+
+ Sets the section title for @self.
+
+Does nothing unless [property@ViewStackPage:starts-section] is set.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the section title
+
+
+
+
+
+ Sets whether @self starts a section.
+
+If set to `TRUE`, [property@ViewStack:pages] will have a section starting
+from this page.
+
+If [property@ViewStackPage:section-title] is set, it should be used as a
+title for the section.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ whether @self starts a section
+
+
+
+
+
+ Sets the page title.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the page title
+
+
+
+
+
+ Sets whether underlines in the page title indicate mnemonics.
+
+
+
+
+
+
+ a view stack page
+
+
+
+ the new value to set
+
+
+
+
+
+ Sets whether @self is visible in its `AdwViewStack`.
+
+This is independent from the [property@Gtk.Widget:visible] property of
+[property@ViewStackPage:child].
+
+
+
+
+
+
+ a view stack page
+
+
+
+ whether @self is visible
+
+
+
+
+
+ The badge number for this page.
+
+[class@ViewSwitcher] can display it as a badge next to the page icon. It is
+commonly used to display a number of unread items within the page.
+
+It can be used together with [property@ViewStack{age}:needs-attention].
+
+
+
+ The stack child to which the page belongs.
+
+
+
+ The icon name of the child page.
+
+
+
+ The name of the child page.
+
+
+
+ Whether the page requires the user attention.
+
+[class@ViewSwitcher] will display it as a dot next to the page icon.
+
+
+
+ Section title for this page.
+
+Does nothing unless [property@ViewStackPage:starts-section] is set.
+
+
+
+ Whether this page starts a section.
+
+If set to `TRUE`, [property@ViewStack:pages] will have a section starting
+from this page.
+
+If [property@ViewStackPage:section-title] is set, it should be used as a
+title for the section.
+
+
+
+ The title of the child page.
+
+
+
+ Whether an embedded underline in the title indicates a mnemonic.
+
+
+
+ Whether this page is visible.
+
+This is independent from the [property@Gtk.Widget:visible] property of
+[property@ViewStackPage:child].
+
+
+
+
+
+
+
+
+
+
+ An auxiliary class used by [class@ViewStack].
+
+See [property@ViewStack:pages].
+
+
+
+
+
+ Gets the [class@ViewStackPage] for the visible child of a view stack
+
+Gets the [class@ViewStackPage] for the visible child of the associated stack.
+
+Returns `NULL` if there's no selected page.
+
+
+ the stack page
+
+
+
+
+ a [class@ViewStackPages]
+
+
+
+
+
+ Sets the visible child in the associated [class@ViewStack].
+
+See [property@ViewStack:visible-child].
+
+
+
+
+
+
+ a [class@ViewStackPages]
+
+
+
+ a stack page within the associated stack
+
+
+
+
+
+ The type of the items. See [method@Gio.ListModel.get_item_type].
+
+
+
+ The number of items. See [method@Gio.ListModel.get_n_items].
+
+
+
+ The selected [class@ViewStackPage] within the [class@ViewStackPages].
+
+This can be used to keep an up-to-date view of the [class@ViewStackPage] for
+The visible [class@ViewStackPage] within the associated [class@ViewStackPages].
+
+This can be used to keep an up-to-date view of the visible child.
+
+
+
+
+
+
+
+
+
+
+ An adaptive view switcher.
+
+<picture>
+ <source srcset="view-switcher-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher.png" alt="view-switcher">
+</picture>
+
+An adaptive view switcher designed to switch between multiple views
+contained in a [class@ViewStack] in a similar fashion to
+[class@Gtk.StackSwitcher].
+
+`AdwViewSwitcher` buttons always have an icon and a label. They can be
+displayed side by side, or icon on top of the label. This can be controlled
+via the [property@ViewSwitcher:policy] property.
+
+`AdwViewSwitcher` is intended to be used in a header bar together with
+[class@ViewSwitcherBar] at the bottom of the window, and a [class@Breakpoint]
+showing the view switcher bar on narrow sizes, while removing the view
+switcher from the header bar, as follows:
+
+```xml
+<object class="AdwWindow">
+ <child>
+ <object class="AdwBreakpoint">
+ <condition>max-width: 550sp</condition>
+ <setter object="switcher_bar" property="reveal">True</setter>
+ <setter object="header_bar" property="title-widget"/>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar" id="header_bar">
+ <property name="title-widget">
+ <object class="AdwViewSwitcher">
+ <property name="stack">stack</property>
+ <property name="policy">wide</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwViewStack" id="stack"/>
+ </property>
+ <child type="bottom">
+ <object class="AdwViewSwitcherBar" id="switcher_bar">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ </object>
+ </property>
+</object>
+```
+
+It's recommended to set [property@ViewSwitcher:policy] to
+[enum@Adw.ViewSwitcherPolicy.wide] in this case.
+
+You may have to adjust the breakpoint condition for your specific pages.
+
+## CSS nodes
+
+`AdwViewSwitcher` has a single CSS node with name `viewswitcher`. It can have
+the style classes `.wide` and `.narrow`, matching its policy.
+
+## Accessibility
+
+`AdwViewSwitcher` uses the [enum@Gtk.AccessibleRole.tab-list] role and the
+[enum@Gtk.AccessibleRole.tab] role for its buttons.
+
+See also: [class@ViewSwitcherBar], [class@InlineViewSwitcher],
+[class@ViewSwitcherSidebar].
+
+
+
+
+
+ Creates a new `AdwViewSwitcher`.
+
+
+ the newly created `AdwViewSwitcher`
+
+
+
+
+ Gets the policy of @self.
+
+
+ the policy of @self
+
+
+
+
+ a view switcher
+
+
+
+
+
+ Gets the stack controlled by @self.
+
+
+ the stack
+
+
+
+
+ a view switcher
+
+
+
+
+
+ Sets the policy of @self.
+
+
+
+
+
+
+ a view switcher
+
+
+
+ the new policy
+
+
+
+
+
+ Sets the stack controlled by @self.
+
+
+
+
+
+
+ a view switcher
+
+
+
+ a stack
+
+
+
+
+
+ The policy to determine which mode to use.
+
+
+
+ The stack the view switcher controls.
+
+
+
+
+ A view switcher action bar.
+
+<picture>
+ <source srcset="view-switcher-bar-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-bar.png" alt="view-switcher-bar">
+</picture>
+
+An action bar letting you switch between multiple views contained in a
+[class@ViewStack], via an [class@ViewSwitcher]. It is designed to be put at
+the bottom of a window and to be revealed only on really narrow windows, e.g.
+on mobile phones. It can't be revealed if there are less than two pages.
+
+`AdwViewSwitcherBar` is intended to be used together with
+`AdwViewSwitcher` in a header bar, and a [class@Breakpoint] showing the view
+switcher bar on narrow sizes, while removing the view switcher from the
+header bar, as follows:
+
+```xml
+<object class="AdwWindow">
+ <child>
+ <object class="AdwBreakpoint">
+ <condition>max-width: 550sp</condition>
+ <setter object="switcher_bar" property="reveal">True</setter>
+ <setter object="header_bar" property="title-widget"/>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar" id="header_bar">
+ <property name="title-widget">
+ <object class="AdwViewSwitcher">
+ <property name="stack">stack</property>
+ <property name="policy">wide</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwViewStack" id="stack"/>
+ </property>
+ <child type="bottom">
+ <object class="AdwViewSwitcherBar" id="switcher_bar">
+ <property name="stack">stack</property>
+ </object>
+ </child>
+ </object>
+ </property>
+</object>
+```
+
+It's recommended to set [property@ViewSwitcher:policy] to
+[enum@Adw.ViewSwitcherPolicy.wide] in this case.
+
+You may have to adjust the breakpoint condition for your specific pages.
+
+## CSS nodes
+
+`AdwViewSwitcherBar` has a single CSS node with name` viewswitcherbar`.
+
+See also: [class@ViewSwitcher], [class@InlineViewSwitcher],
+[class@ViewSwitcherSidebar].
+
+
+
+
+
+ Creates a new `AdwViewSwitcherBar`.
+
+
+ the newly created `AdwViewSwitcherBar`
+
+
+
+
+ Gets whether @self should be revealed or hidden.
+
+
+ whether @self is revealed
+
+
+
+
+ a view switcher bar
+
+
+
+
+
+ Gets the stack controlled by @self.
+
+
+ the stack
+
+
+
+
+ a view switcher bar
+
+
+
+
+
+ Sets whether @self should be revealed or hidden.
+
+
+
+
+
+
+ a view switcher bar
+
+
+
+ whether to reveal @self
+
+
+
+
+
+ Sets the stack controlled by @self.
+
+
+
+
+
+
+ a view switcher bar
+
+
+
+ a stack
+
+
+
+
+
+ Whether the bar should be revealed or hidden.
+
+
+
+ The stack the view switcher controls.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Describes the adaptive modes of [class@ViewSwitcher].
+
+ Force the narrow mode
+
+
+ Force the wide mode
+
+
+
+ An adaptive sidebar that controls an [class@ViewStack].
+
+<picture>
+ <source srcset="view-switcher-sidebar-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-sidebar.png" alt="view-switcher-sidebar">
+</picture>
+
+`AdwViewSwitcherSidebar` is a view switcher implemented using a
+[class@Sidebar], in a similar fashion to [class@Gtk.StackSidebar].
+
+`AdwViewSwitcherSidebar` items have an icon, a label, as well as an unread
+dot or a badge.
+
+Unlike other switchers, `AdwViewSwitcherSidebar` supports grouping pages into
+sections, using the [property@ViewStackPage:starts-section] and
+[property@ViewStackPage:section-title] properties.
+
+Like [class@Sidebar], `AdwViewSwitcherSidebar` is adaptive and can behave as
+a sidebar or a page, via the [property@ViewSwitcherSidebar:mode] property.
+
+<picture>
+ <source srcset="view-switcher-sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-sidebar-modes.png" alt="view-switcher-sidebar-modes">
+</picture>
+
+Connect to the [signal@ViewSwitcherSidebar::activated] signal to run code when
+an item has been activated. This can be used to toggle the visible pane when
+used in a split view.
+
+Like `AdwSidebar`, `AdwViewSwitcherSidebar` supports filtering items via the
+[property@ViewSwitcherSidebar:filter] property.
+
+Use [property@ViewSwitcherSidebar:placeholder] to provide an empty state
+widget. It will be shown when all items have been filtered out, or the
+sidebar has no items otherwise.
+
+Like `AdwSidebar`, `AdwViewSwitcherSidebar` supports prefix and suffix
+widgets via the [property@Sidebar:prefix] and [property@Sidebar:suffix]
+properties.
+
+## CSS nodes
+
+`AdwViewSwitcherSidebar` has a single CSS node with name
+`view-switcher-sidebar`.
+
+See also: [class@ViewSwitcher], [class@ViewSwitcherBar],
+[class@InlineViewSwitcher].
+
+
+
+
+
+ Creates a new `AdwViewSwitcherSidebar`.
+
+
+ the newly created `AdwViewSwitcherSidebar`
+
+
+
+
+ Gets the item filter for @self.
+
+
+ the item filter
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Gets @self's look and behavior.
+
+See [method@Sidebar.get_mode].
+
+
+ the current mode
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Gets the placeholder widget for @self.
+
+
+ the placeholder widget
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Gets the widget displayed before the sidebar items.
+
+
+ the prefix widget
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Gets the stack @self controls.
+
+
+ The stack of @self
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Gets the widget displayed after sidebar items.
+
+
+ the suffix widget
+
+
+
+
+ a view switcher sidebar
+
+
+
+
+
+ Sets the item filter for @self.
+
+Can be used to implement search within the sidebar.
+
+Use [property@ViewSwitcherSidebar:placeholder] to provide an empty state.
+
+See [method@Sidebar.set_filter].
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ the item filter
+
+
+
+
+
+ Sets @self's look and behavior.
+
+<picture>
+ <source srcset="view-switcher-sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-sidebar-modes.png" alt="view-switcher-sidebar-modes">
+</picture>
+
+If set to [enum@Adw.SidebarMode.sidebar], behaves like a sidebar: with a
+sidebar style and a persistent selection.
+
+If set to [enum@Adw.SidebarMode.page], behaves like a page of boxed lists.
+In this mode, the selection is invisible and only tracked to determine the
+initially selected item once switched back to sidebar mode.
+
+The page mode is intended to be used with [class@NavigationSplitView] when
+collapsed, as the sidebar pane becomes a page there.
+
+When used with [class@OverlaySplitView], the sidebar should stay in sidebar
+mode, as the sidebar pane is still a sidebar when collapsed.
+
+See [method@Sidebar.set_mode].
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ the new mode
+
+
+
+
+
+ Sets the placeholder widget for @self.
+
+This widget will be shown if @self has no items, or all of its items have
+been filtered out by [property@ViewSwitcherSidebar:filter].
+
+See [method@Sidebar.set_placeholder].
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ the placeholder widget
+
+
+
+
+
+ Sets the widget to be displayed before the sidebar items.
+
+See [method@Sidebar.set_prefix].
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ the prefix widget
+
+
+
+
+
+ Sets the stack to control.
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ a stack
+
+
+
+
+
+ Sets the widget to be displayed after the sidebar items.
+
+See [method@Sidebar.set_suffix].
+
+
+
+
+
+
+ a view switcher sidebar
+
+
+
+ the suffix widget
+
+
+
+
+
+ The item filter.
+
+Can be used to implement search within the sidebar.
+
+Use [property@ViewSwitcherSidebar:placeholder] to provide an empty state.
+
+See [property@Sidebar:filter].
+
+
+
+ Determines the sidebar's look and behavior.
+
+<picture>
+ <source srcset="view-switcher-sidebar-modes-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-sidebar-modes.png" alt="view-switcher-sidebar-modes">
+</picture>
+
+If set to [enum@Adw.SidebarMode.sidebar], behaves like a sidebar: with a
+sidebar style and a persistent selection.
+
+If set to [enum@Adw.SidebarMode.page], behaves like a page of boxed lists.
+
+The page mode is intended to be used with [class@NavigationSplitView] when
+collapsed, as the sidebar pane becomes a page there.
+
+When used with [class@OverlaySplitView], the sidebar should stay in sidebar
+mode, as the sidebar pane is still a sidebar when collapsed.
+
+See [property@Sidebar:mode].
+
+
+
+ The placeholder widget.
+
+This widget will be shown if the sidebar has no items, or all of its items
+have been filtered out by [property@ViewSwitcherSidebar:filter].
+
+See [property@Sidebar:placeholder].
+
+
+
+ A widget to be displayed before the sidebar items.
+
+See [property@Sidebar:prefix].
+
+
+
+ The stack the sidebar controls.
+
+
+
+ A widget to be displayed after the sidebar items.
+
+See [property@Sidebar:suffix].
+
+
+
+ Emitted when an item has been activated.
+
+
+
+
+
+
+
+
+
+
+
+
+ A view switcher title.
+
+<picture>
+ <source srcset="view-switcher-title-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="view-switcher-title.png" alt="view-switcher-title">
+</picture>
+
+A widget letting you switch between multiple views contained by a
+[class@ViewStack] via an [class@ViewSwitcher].
+
+It is designed to be used as the title widget of a [class@HeaderBar], and
+will display the window's title when the window is too narrow to fit the view
+switcher e.g. on mobile phones, or if there are less than two views.
+
+In order to center the title in narrow windows, the header bar should have
+[property@HeaderBar:centering-policy] set to
+[enum@Adw.CenteringPolicy.strict].
+
+`AdwViewSwitcherTitle` is intended to be used together with
+[class@ViewSwitcherBar].
+
+A common use case is to bind the [property@ViewSwitcherBar:reveal] property
+to [property@ViewSwitcherTitle:title-visible] to automatically reveal the
+view switcher bar when the title label is displayed in place of the view
+switcher, as follows:
+
+```xml
+<object class="AdwWindow">
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar">
+ <property name="centering-policy">strict</property>
+ <property name="title-widget">
+ <object class="AdwViewSwitcherTitle" id="title">
+ <property name="stack">stack</property>
+ </object>
+ </property>
+ </object>
+ </child>
+ <property name="content">
+ <object class="AdwViewStack" id="stack"/>
+ </property>
+ <child type="bottom">
+ <object class="AdwViewSwitcherBar">
+ <property name="stack">stack</property>
+ <binding name="reveal">
+ <lookup name="title-visible">title</lookup>
+ </binding>
+ </object>
+ </child>
+ </object>
+ </property>
+</object>
+```
+
+## CSS nodes
+
+`AdwViewSwitcherTitle` has a single CSS node with name `viewswitchertitle`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+ Creates a new `AdwViewSwitcherTitle`.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ the newly created `AdwViewSwitcherTitle`
+
+
+
+
+ Gets the stack controlled by @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ the stack
+
+
+
+
+ a view switcher title
+
+
+
+
+
+ Gets the subtitle of @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ the subtitle
+
+
+
+
+ a view switcher title
+
+
+
+
+
+ Gets the title of @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ the title
+
+
+
+
+ a view switcher title
+
+
+
+
+
+ Gets whether the title of @self is currently visible.
+
+If the title is visible, it means the view switcher is hidden an it may be
+wanted to show an alternative switcher, e.g. a [class@ViewSwitcherBar].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ whether the title of @self is currently visible
+
+
+
+
+ a view switcher title
+
+
+
+
+
+ Gets whether @self's view switcher is enabled.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+ whether the view switcher is enabled
+
+
+
+
+ a view switcher title
+
+
+
+
+
+ Sets the stack controlled by @self.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+
+ a view switcher title
+
+
+
+ a stack
+
+
+
+
+
+ Sets the subtitle of @self.
+
+The subtitle should give the user additional details.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+
+ a view switcher title
+
+
+
+ a subtitle
+
+
+
+
+
+ Sets the title of @self.
+
+The title typically identifies the current view or content item, and
+generally does not use the application name.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+
+ a view switcher title
+
+
+
+ a title
+
+
+
+
+
+ Sets whether @self's view switcher is enabled.
+
+If it is disabled, the title will be displayed instead. This allows to
+programmatically hide the view switcher even if it fits in the available
+space.
+
+This can be used e.g. to ensure the view switcher is hidden below a certain
+window width, or any other constraint you find suitable.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+
+ a view switcher title
+
+
+
+ whether the view switcher is enabled
+
+
+
+
+
+ The stack the view switcher controls.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+ The subtitle to display.
+
+The subtitle should give the user additional details.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+ The title to display.
+
+The title typically identifies the current view or content item, and
+generally does not use the application name.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+ Whether the title is currently visible.
+
+If the title is visible, it means the view switcher is hidden an it may be
+wanted to show an alternative switcher, e.g. a [class@ViewSwitcherBar].
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+ Whether the view switcher is enabled.
+
+If it is disabled, the title will be displayed instead. This allows to
+programmatically hide the view switcher even if it fits in the available
+space.
+
+This can be used e.g. to ensure the view switcher is hidden below a certain
+window width, or any other constraint you find suitable.
+ See [the migration guide](migrating-to-breakpoints.html#replace-adwviewswitchertitle)
+
+
+
+
+
+
+
+
+
+
+ A freeform window.
+
+<picture>
+ <source srcset="window-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="window.png" alt="window">
+</picture>
+
+The `AdwWindow` widget is a subclass of [class@Gtk.Window] which has no
+titlebar area. Instead, [class@ToolbarView] can be used together with
+[class@HeaderBar] or [class@Gtk.HeaderBar] as follows:
+
+```xml
+<object class="AdwWindow">
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <!-- put your content here -->
+ </property>
+ </object>
+ </property>
+</object>
+```
+
+Using [property@Gtk.Window:titlebar] or [property@Gtk.Window:child]
+is not supported and will result in a crash. Use [property@Window:content]
+instead.
+
+## Dialogs
+
+`AdwWindow` can contain [class@Dialog]. Use [method@Dialog.present] with the
+window or a widget within a window to show a dialog.
+
+## Breakpoints
+
+`AdwWindow` can be used with [class@Breakpoint] the same way as
+[class@BreakpointBin]. Refer to that widget's documentation for details.
+
+Example:
+
+```xml
+<object class="AdwWindow">
+ <property name="content">
+ <object class="AdwToolbarView">
+ <child type="top">
+ <object class="AdwHeaderBar"/>
+ </child>
+ <property name="content">
+ <!-- put your content here -->
+ </property>
+ <child type="bottom">
+ <object class="GtkActionBar" id="bottom_bar">
+ <property name="revealed">True</property>
+ <property name="visible">False</property>
+ </object>
+ </child>
+ </object>
+ </property>
+ <child>
+ <object class="AdwBreakpoint">
+ <condition>max-width: 500px</condition>
+ <setter object="bottom_bar" property="visible">True</setter>
+ </object>
+ </child>
+</object>
+```
+
+When breakpoints are used, the minimum size must be larger than the smallest
+UI state. `AdwWindow` defaults to the minimum size of 360×200 px. If that's
+too small, set the [property@Gtk.Widget:width-request] and
+[property@Gtk.Widget:height-request] properties manually.
+
+## Adaptive Preview
+
+`AdwWindow` has a debug tool called adaptive preview. It can be opened from
+GTK Inspector or by pressing <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>M</kbd>,
+and controlled via the [property@Window:adaptive-preview] property.
+
+
+
+
+
+
+
+
+ Creates a new `AdwWindow`.
+
+
+ the newly created `AdwWindow`
+
+
+
+
+ Adds @breakpoint to @self.
+
+
+
+
+
+
+ a window
+
+
+
+ the breakpoint to add
+
+
+
+
+
+ Gets whether adaptive preview for @self is currently open.
+
+
+ whether adaptive preview is open.
+
+
+
+
+ a window
+
+
+
+
+
+ Gets the content widget of @self.
+
+This method should always be used instead of [method@Gtk.Window.get_child].
+
+
+ the content widget of @self
+
+
+
+
+ a window
+
+
+
+
+
+ Gets the current breakpoint.
+
+
+ the current breakpoint
+
+
+
+
+ a window
+
+
+
+
+
+ Returns a [iface@Gio.ListModel] that contains the open dialogs of @self.
+
+This can be used to keep an up-to-date view.
+
+
+ a list model for the dialogs of @self
+
+
+
+
+ a window
+
+
+
+
+
+ Returns the currently visible dialog in @self, if there's one.
+
+
+ the visible dialog
+
+
+
+
+ a window
+
+
+
+
+
+ Sets whether adaptive preview for @self is currently open.
+
+Adaptive preview is a debugging tool used for testing the window
+contents at specific screen sizes, simulating mobile environment.
+
+Adaptive preview can always be accessed from inspector. This function
+allows applications to open it manually.
+
+Most applications should not use this function.
+
+
+
+
+
+
+ a window
+
+
+
+ whether to open adaptive preview
+
+
+
+
+
+ Sets the content widget of @self.
+
+This method should always be used instead of [method@Gtk.Window.set_child].
+
+
+
+
+
+
+ a window
+
+
+
+ the content widget
+
+
+
+
+
+ Whether adaptive preview is currently open.
+
+Adaptive preview is a debugging tool used for testing the window
+contents at specific screen sizes, simulating mobile environment.
+
+Adaptive preview can always be accessed from inspector. This function
+allows applications to open it manually.
+
+Most applications should not use this property.
+
+
+
+ The content widget.
+
+This property should always be used instead of [property@Gtk.Window:child].
+
+
+
+ The current breakpoint.
+
+
+
+ The open dialogs.
+
+
+
+ The currently visible dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+title child of [class@Gtk.HeaderBar] or [class@HeaderBar].
+
+## CSS nodes
+
+`AdwWindowTitle` has a single CSS node with name `windowtitle`.
+
+
+
+
+
+ Creates a new `AdwWindowTitle`.
+
+
+ the newly created `AdwWindowTitle`
+
+
+
+
+ a title
+
+
+
+ a subtitle
+
+
+
+
+
+ Gets the subtitle of @self.
+
+
+ the subtitle
+
+
+
+
+ a window title
+
+
+
+
+
+ Gets the title of @self.
+
+
+ the title
+
+
+
+
+ a window title
+
+
+
+
+
+ Sets the subtitle of @self.
+
+The subtitle should give the user additional details.
+
+
+
+
+
+
+ a window title
+
+
+
+ a subtitle
+
+
+
+
+
+ Sets the title of @self.
+
+The title typically identifies the current view or content item, and
+generally does not use the application name.
+
+
+
+
+
+
+ a window title
+
+
+
+ a title
+
+
+
+
+
+ The subtitle to display.
+
+The subtitle should give the user additional details.
+
+
+
+ The title to display.
+
+The title typically identifies the current view or content item, and
+generally does not use the application name.
+
+
+
+
+
+
+
+
+
+
+ A box-like widget that can wrap into multiple lines.
+
+<picture>
+ <source srcset="wrap-box-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="wrap-box.png" alt="wrap-box">
+</picture>
+
+`AdwWrapBox` is similar to [class@Gtk.Box], but can wrap lines when the
+widgets cannot fit otherwise. Unlike [class@Gtk.FlowBox], the children aren't
+arranged into a grid and behave more like words in a wrapping label.
+
+Like `GtkBox`, `AdwWrapBox` is orientable and has spacing:
+
+- [property@WrapBox:child-spacing] between children in the same line;
+- [property@WrapBox:line-spacing] between lines.
+
+::: note
+ Unlike `GtkBox`, `AdwWrapBox` cannot follow the CSS `border-spacing`
+ property.
+
+Use the [property@WrapBox:natural-line-length] property to determine the
+layout's natural size, e.g. when using it in a [class@Gtk.Popover].
+
+Normally, a horizontal `AdwWrapBox` wraps left to right and top to bottom
+for left-to-right languages. Both of these directions can be reversed, using
+the [property@WrapBox:pack-direction] and [property@WrapBox:wrap-reverse]
+properties. Additionally, the alignment of each line can be controlled with
+the [property@WrapBox:align] property.
+
+Lines can be justified using the [property@WrapBox:justify] property, filling
+the entire line by either increasing child size or spacing depending on the
+value. Set [property@WrapBox:justify-last-line] to justify the last line as
+well.
+
+By default, `AdwWrapBox` wraps as soon as the previous line cannot fit any
+more children without shrinking them past their natural size. Set
+[property@WrapBox:wrap-policy] to [enum@Adw.WrapPolicy.minimum] to only wrap
+once all the children in the previous line have been shrunk to their minimum
+size.
+
+To make each line take the same amount of space, set
+[property@WrapBox:line-homogeneous] to `TRUE`.
+
+Spacing and natural line length can scale with the text scale factor, use the
+[property@WrapBox:child-spacing-unit], [property@WrapBox:line-spacing-unit]
+and/or [property@WrapBox:natural-line-length-unit] properties to enable that
+behavior.
+
+See [class@WrapLayout].
+
+## CSS nodes
+
+`AdwWrapBox` uses a single CSS node with name `wrap-box`.
+
+## Accessibility
+
+`AdwWrapBox` uses the [enum@Gtk.AccessibleRole.group] role.
+
+
+
+
+
+
+ Creates a new `AdwWrapBox`.
+
+
+ the newly created `AdwWrapBox`
+
+
+
+
+ Adds @child as the last child to @self.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the widget to append
+
+
+
+
+
+ Gets the alignment of the children within each line.
+
+
+ the child alignment
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets spacing between widgets on the same line.
+
+
+ spacing between widgets on the same line
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the length unit for child spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets whether and how each complete line is stretched to fill the entire widget.
+
+
+ the justify mode
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets whether the last line should be stretched to fill the entire widget.
+
+
+ whether the last line is justified
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets whether all lines should take the same amount of space.
+
+
+ whether lines should be homogeneous
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the spacing between lines.
+
+See [property@WrapBox:line-spacing-unit].
+
+
+ the line spacing
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the length unit for line spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the natural size for each line.
+
+
+ the natural length
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the length unit for line spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the direction children are packed in each line.
+
+
+ the line direction
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets the policy for line wrapping.
+
+
+ the wrap policy
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Gets whether wrap direction is reversed.
+
+
+ whether wrap direction is reversed
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Inserts @child in the position after @sibling in the list of @self children.
+
+If @sibling is `NULL`, inserts @child at the first position.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the widget to insert
+
+
+
+ the sibling after which to insert @child
+
+
+
+
+
+ Adds @child as the first child to @self.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the widget to prepend
+
+
+
+
+
+ Removes a child widget from @self.
+
+The child must have been added before with [method@Adw.WrapBox.append],
+[method@Adw.WrapBox.prepend], or [method@Adw.WrapBox.insert_child_after].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the child to remove
+
+
+
+
+
+ Removes all children from @self.
+
+
+
+
+
+
+ a wrap box
+
+
+
+
+
+ Moves @child to the position after @sibling in the list of @self children.
+
+If @sibling is `NULL`, moves @child to the first position.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the widget to move, must be a child of @self
+
+
+
+ the sibling to move @child after
+
+
+
+
+
+ Sets the alignment of the children within each line.
+
+0 means the children are placed at the start of the line, 1 means they are
+placed at the end of the line. 0.5 means they are placed in the middle of the
+line.
+
+Alignment is only used when [property@WrapBox:justify] is set to
+[enum@Adw.JustifyMode.none], or on the last line when the
+[property@WrapBox:justify-last-line] is `FALSE`.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the child alignment
+
+
+
+
+
+ Sets the spacing between widgets on the same line.
+
+See [property@WrapBox:child-spacing-unit].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the child spacing
+
+
+
+
+
+ Sets the length unit for child spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapBox:child-spacing].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the length unit
+
+
+
+
+
+ Determines whether and how each complete line should be stretched to fill
+the entire widget.
+
+If set to [enum@Adw.JustifyMode.fill], each widget in the line will be
+stretched, keeping consistent spacing, so that the line fills the entire
+widget.
+
+If set to [enum@Adw.JustifyMode.spread], the spacing between widgets will be
+increased, keeping widget sizes intact. The first and last widget will be
+aligned with the beginning and end of the line. If the line only contains a
+single widget, it will be stretched regardless.
+
+If set to [enum@Adw.JustifyMode.none], the line will not be stretched and the
+children will be placed together within the line, according to
+[property@WrapBox:align].
+
+By default this doesn't affect the last line, as it will be incomplete. Use
+[property@WrapBox:justify-last-line] to justify it as well.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the justify mode
+
+
+
+
+
+ Sets whether the last line should be stretched to fill the entire widget.
+
+See [property@WrapBox:justify].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ whether to justify the last line
+
+
+
+
+
+ Sets whether all lines should take the same amount of space.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ whether lines should be homogeneous
+
+
+
+
+
+ Sets the spacing between lines.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the line spacing
+
+
+
+
+
+ Sets the length unit for line spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapBox:line-spacing].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the length unit
+
+
+
+
+
+ Sets the natural size for each line.
+
+It should be used to limit the line lengths, for example when used in
+popovers.
+
+See [property@WrapBox:natural-line-length-unit].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the natural length
+
+
+
+
+
+ Sets the length unit for natural line length.
+
+Allows the length to vary depending on the text scale factor.
+
+See [property@WrapBox:natural-line-length].
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the length unit
+
+
+
+
+
+ Sets the direction children are packed in each line.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the new line direction
+
+
+
+
+
+ Sets the policy for line wrapping.
+
+If set to [enum@Adw.WrapPolicy.natural], the box will wrap to the next line
+as soon as the previous line cannot fit any more children without shrinking
+them past their natural size.
+
+If set to [enum@Adw.WrapPolicy.minimum], the box will try to fit as many
+children into each line as possible, shrinking them down to their minimum\
+size before wrapping to the next line.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ the new wrap policy
+
+
+
+
+
+ Sets whether wrap direction should be reversed.
+
+By default, lines wrap downwards in a horizontal box, and towards the end
+in a vertical box. If set to `TRUE`, they wrap upwards or towards the start
+respectively.
+
+
+
+
+
+
+ a wrap box
+
+
+
+ whether to reverse wrap direction
+
+
+
+
+
+ The alignment of the children within each line.
+
+0 means the children are placed at the start of the line, 1 means they are
+placed at the end of the line. 0.5 means they are placed in the middle of
+the line.
+
+Alignment is only used when [property@WrapBox:justify] is set to
+[enum@Adw.JustifyMode.none], or on the last line when the
+[property@WrapBox:justify-last-line] is `FALSE`.
+
+
+
+ The spacing between widgets on the same line.
+
+See [property@WrapBox:child-spacing-unit].
+
+
+
+ The length unit for child spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapBox:child-spacing].
+
+
+
+ Determines whether and how each complete line should be stretched to fill
+the entire widget.
+
+If set to [enum@Adw.JustifyMode.fill], each widget in the line will be
+stretched, keeping consistent spacing, so that the line fills the entire
+widget.
+
+If set to [enum@Adw.JustifyMode.spread], the spacing between widgets will
+be increased, keeping widget sizes intact. The first and last widget will
+be aligned with the beginning and end of the line. If the line only
+contains a single widget, it will be stretched regardless.
+
+If set to [enum@Adw.JustifyMode.none], the line will not be stretched and
+the children will be placed together within the line, according to
+[property@WrapBox:align].
+
+By default this doesn't affect the last line, as it will be incomplete. Use
+[property@WrapBox:justify-last-line] to justify it as well.
+
+
+
+ Whether the last line should be stretched to fill the entire widget.
+
+See [property@WrapBox:justify].
+
+
+
+ Whether all lines should take the same amount of space.
+
+
+
+ The spacing between lines.
+
+See [property@WrapBox:line-spacing-unit].
+
+
+
+ The length unit for line spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapBox:line-spacing].
+
+
+
+ Determines the natural size for each line.
+
+It should be used to limit the line lengths, for example when used in
+popovers.
+
+See [property@WrapBox:natural-line-length-unit].
+
+
+
+ The length unit for natural line length.
+
+Allows the length to vary depending on the text scale factor.
+
+See [property@WrapBox:natural-line-length].
+
+
+
+ The direction children are packed in each line.
+
+
+
+ The policy for line wrapping.
+
+ + If set to [enum@Adw.WrapPolicy.natural], the box will wrap to the next line
+as soon as the previous line cannot fit any more children without shrinking
+them past their natural size.
+
+If set to [enum@Adw.WrapPolicy.minimum], the box will try to fit as many
+children into each line as possible, shrinking them down to their minimum
+size before wrapping to the next line.
+
+
+
+ Whether wrap direction should be reversed.
+
+By default, lines wrap downwards in a horizontal box, and towards the end
+in a vertical box. If set to `TRUE`, they wrap upwards or towards the start
+respectively.
+
+
+
+
+
+
+
+
+
+
+ A box-like layout that can wrap into multiple lines.
+
+<picture>
+ <source srcset="wrap-box-dark.png" media="(prefers-color-scheme: dark)">
+ <img src="wrap-box.png" alt="wrap-box">
+</picture>
+
+`AdwWrapLayout` is similar to [class@Gtk.BoxLayout], but can wrap lines when
+the widgets cannot fit otherwise. Unlike [class@Gtk.FlowBox], the children
+aren't arranged into a grid and behave more like words in a wrapping label.
+
+Like `GtkBoxLayout`, `AdwWrapLayout` is orientable and has spacing:
+
+- [property@WrapLayout:child-spacing] between children in the same line;
+- [property@WrapLayout:line-spacing] between lines.
+
+::: note
+ Unlike `GtkBoxLayout`, `AdwWrapLayout` cannot follow the CSS
+ `border-spacing` property.
+
+Use the [property@WrapLayout:natural-line-length] property to determine the
+layout's natural size, e.g. when using it in a [class@Gtk.Popover].
+
+Normally, a horizontal `AdwWrapLayout` wraps left to right and top to bottom
+for left-to-right languages. Both of these directions can be reversed, using
+the [property@WrapLayout:pack-direction] and
+[property@WrapLayout:wrap-reverse] properties. Additionally, the alignment
+of each line can be controlled with the [property@WrapLayout:align] property.
+
+Lines can be justified using the [property@WrapLayout:justify] property,
+filling the entire line by either increasing child size or spacing depending
+on the value. Set [property@WrapLayout:justify-last-line] to justify the last
+line as well.
+
+By default, `AdwWrapLayout` wraps as soon as the previous line cannot fit
+any more children without shrinking them past their natural size. Set
+[property@WrapLayout:wrap-policy] to [enum@Adw.WrapPolicy.minimum] to only
+wrap once all the children in the previous line have been shrunk to their
+minimum size.
+
+To make each line take the same amount of space, set
+[property@WrapLayout:line-homogeneous] to `TRUE`.
+
+Spacing and natural line length can scale with the text scale factor, use the
+[property@WrapLayout:child-spacing-unit],
+[property@WrapLayout:line-spacing-unit] and/or
+[property@WrapLayout:natural-line-length-unit] properties to enable that
+behavior.
+
+See [class@WrapBox].
+
+
+
+ Creates a new `AdwWrapLayout`.
+
+
+ the newly created `AdwWrapLayout`
+
+
+
+
+ Gets the alignment of the children within each line.
+
+
+ the child alignment
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets spacing between widgets on the same line.
+
+
+ spacing between widgets on the same line
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the length unit for child spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets whether and how each complete line is stretched to fill the entire widget.
+
+
+ the justify mode
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets whether the last line should be stretched to fill the entire widget.
+
+
+ whether the last line is justified
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets whether all lines should take the same amount of space.
+
+
+ whether lines should be homogeneous
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the spacing between lines.
+
+
+ the line spacing
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the length unit for line spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the natural size for each line.
+
+
+ the natural length
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the length unit for line spacing.
+
+
+ the length unit
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the direction children are packed in each line.
+
+
+ the line direction
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets the policy for line wrapping.
+
+
+ the wrap policy
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Gets whether wrap direction is reversed.
+
+
+ whether wrap direction is reversed
+
+
+
+
+ a wrap layout
+
+
+
+
+
+ Sets the alignment of the children within each line.
+
+0 means the children are placed at the start of the line, 1 means they are
+placed at the end of the line. 0.5 means they are placed in the middle of the
+line.
+
+Alignment is only used when [property@WrapLayout:justify] is set to
+[enum@Adw.JustifyMode.none], or on the last line when the
+[property@WrapLayout:justify-last-line] is `FALSE`.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the child alignment
+
+
+
+
+
+ Sets the spacing between widgets on the same line.
+
+See [property@WrapLayout:child-spacing-unit].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the child spacing
+
+
+
+
+
+ Sets the length unit for child spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapLayout:child-spacing].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the length unit
+
+
+
+
+
+ Sets whether and how each complete line should be stretched to fill the
+entire widget.
+
+If set to [enum@Adw.JustifyMode.fill], each widget in the line will be
+stretched, keeping consistent spacing, so that the line fills the entire
+widget.
+
+If set to [enum@Adw.JustifyMode.spread], the spacing between widgets will be
+increased, keeping widget sizes intact. The first and last widget will be
+aligned with the beginning and end of the line. If the line only contains a
+single widget, it will be stretched regardless.
+
+If set to [enum@Adw.JustifyMode.none], the line will not be stretched and the
+children will be placed together within the line, according to
+[property@WrapLayout:align].
+
+By default this doesn't affect the last line, as it will be incomplete. Use
+[property@WrapLayout:justify-last-line] to justify it as well.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the justify mode
+
+
+
+
+
+ Sets whether the last line should be stretched to fill the entire widget.
+
+See [property@WrapLayout:justify].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ whether to justify the last line
+
+
+
+
+
+ Sets whether all lines should take the same amount of space.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ whether lines should be homogeneous
+
+
+
+
+
+ Sets the spacing between lines.
+
+See [property@WrapLayout:line-spacing-unit].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the line spacing
+
+
+
+
+
+ Sets the length unit for line spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapLayout:line-spacing].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the length unit
+
+
+
+
+
+ Sets the natural size for each line.
+
+It should be used to limit the line lengths, for example when used in
+popovers.
+
+See [property@WrapLayout:natural-line-length-unit].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the natural length
+
+
+
+
+
+ Sets the length unit for natural line length.
+
+Allows the length to vary depending on the text scale factor.
+
+See [property@WrapLayout:natural-line-length].
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the length unit
+
+
+
+
+
+ Sets the direction children are packed in each line.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the new line direction
+
+
+
+
+
+ Sets the policy for line wrapping.
+
+If set to [enum@Adw.WrapPolicy.natural], the box will wrap to the next line
+as soon as the previous line cannot fit any more children without shrinking
+them past their natural size.
+
+If set to [enum@Adw.WrapPolicy.minimum], the box will try to fit as many
+children into each line as possible, shrinking them down to their minimum
+size before wrapping to the next line.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ the new wrap policy
+
+
+
+
+
+ Sets whether wrap direction should be reversed.
+
+By default, lines wrap downwards in a horizontal box, and towards the end
+in a vertical box. If set to `TRUE`, they wrap upwards or towards the start
+respectively.
+
+
+
+
+
+
+ a wrap layout
+
+
+
+ whether to reverse wrap direction
+
+
+
+
+
+ The alignment of the children within each line.
+
+0 means the children are placed at the start of the line, 1 means they are
+placed at the end of the line. 0.5 means they are placed in the middle of
+the line.
+
+Alignment is only used when [property@WrapLayout:justify] is set to
+[enum@Adw.JustifyMode.none], or on the last line when the
+[property@WrapLayout:justify-last-line] is `FALSE`.
+
+
+
+ The spacing between widgets on the same line.
+
+See [property@WrapLayout:child-spacing-unit].
+
+
+
+ The length unit for child spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapLayout:child-spacing].
+
+
+
+ Determines whether and how each complete line should be stretched to fill
+the entire widget.
+
+If set to [enum@Adw.JustifyMode.fill], each widget in the line will be
+stretched, keeping consistent spacing, so that the line fills the entire
+widget.
+
+If set to [enum@Adw.JustifyMode.spread], the spacing between widgets will
+be increased, keeping widget sizes intact. The first and last widget will
+be aligned with the beginning and end of the line. If the line only
+contains a single widget, it will be stretched regardless.
+
+If set to [enum@Adw.JustifyMode.none], the line will not be stretched and
+the children will be placed together within the line, according to
+[property@WrapLayout:align].
+
+By default this doesn't affect the last line, as it will be incomplete. Use
+[property@WrapLayout:justify-last-line] to justify it as well.
+
+
+
+ Whether the last line should be stretched to fill the entire widget.
+
+See [property@WrapLayout:justify].
+
+
+
+ Whether all lines should take the same amount of space.
+
+
+
+ The spacing between lines.
+
+See [property@WrapLayout:line-spacing-unit].
+
+
+
+ The length unit for line spacing.
+
+Allows the spacing to vary depending on the text scale factor.
+
+See [property@WrapLayout:line-spacing].
+
+
+
+ Determines the natural size for each line.
+
+It should be used to limit the line lengths, for example when used in
+popovers.
+
+See [property@WrapLayout:natural-line-length-unit].
+
+
+
+ The length unit for natural line length.
+
+Allows the length to vary depending on the text scale factor.
+
+See [property@WrapLayout:natural-line-length].
+
+
+
+ The direction children are packed in each line.
+
+
+
+ The policy for line wrapping.
+
+If set to [enum@Adw.WrapPolicy.natural], the box will wrap to the next line
+as soon as the previous line cannot fit any more children without shrinking
+them past their natural size.
+
+If set to [enum@Adw.WrapPolicy.minimum], the box will try to fit as many
+children into each line as possible, shrinking them down to their minimum
+size before wrapping to the next line.
+
+
+
+ Whether wrap direction should be reversed.
+
+By default, lines wrap downwards in a horizontal box, and towards the end
+in a vertical box. If set to `TRUE`, they wrap upwards or towards the start
+respectively.
+
+
+
+
+
+
+
+
+
+
+ Describes line wrapping behavior in a [class@WrapLayout] or [class@WrapBox].
+
+See [property@WrapLayout:wrap-policy] and [property@WrapBox:wrap-policy].
+
+ Fit as many children into each line as possible, shrinking
+ them down to their minimum size before wrapping to the next line.
+
+
+ Wrap to the next line as soon as the previous line cannot
+ fit any more children without shrinking them past their natural size.
+
+
+
+ Converts @self to a `GdkRGBA` representing its background color.
+
+The matching foreground color is white.
+
+
+
+
+
+
+ an accent color
+
+
+
+ return location for the color
+
+
+
+
+
+ Converts @self to a `GdkRGBA` representing its standalone color.
+
+It will typically be darker for light background, and lighter for dark
+background, ensuring contrast.
+
+
+
+
+
+
+ an accent color
+
+
+
+ Whether to calculate standalone color for light or dark background
+
+
+
+ return location for the color
+
+
+
+
+
+ Creates a binding between a property on @source and a CSS class on @target.
+
+Whenever @source_property is changed the @target_css_class is toggled either
+on or off on @target using the boolean value of @source_property.
+
+For instance:
+
+```c
+adw_bind_property_to_css_class (action, "active", widget, "active-widget", 0);
+```
+
+will result in the `active-widget` CSS class on the widget instance being
+applied when `active` is `TRUE`, and `active-widget` being removed when
+`active` is `FALSE`.
+
+The binding will automatically be removed when either the @source or @target
+instances are finalized. To remove the binding without affecting the @source
+or @target, call [method@GObject.Object.unref] on the returned binding. It is
+recommended to only call [method@GObject.Object.unref] when it is clear that
+both @source and @target will outlive the binding.
+
+This function is not thread safe. A source can have multiple bindings.
+
+See also: [func@Adw.bind_property_to_css_class_full].
+
+
+ the new binding
+
+
+
+
+ the source object
+
+
+
+ the property on @source to bind
+
+
+
+ the target widget
+
+
+
+ the CSS class on @target to bind
+
+
+
+ flags to pass to @self
+
+
+
+
+
+ Creates a binding between a property on @source and a CSS class on @target
+with a custom mapping.
+
+Complete version of [func@Adw.bind_property_to_css_class].
+
+Whenever @source_property is changed the @target_css_class is toggled either
+on or off on @target using the boolean value of @source_property.
+
+For instance:
+
+```c
+adw_bind_property_to_css_class (action, "active", widget, "active-widget", 0);
+```
+
+will result in the `active-widget` CSS class on the widget instance being
+applied when `active` is `TRUE`, and `active-widget` being removed when
+`active` is `FALSE`.
+
+The binding will automatically be removed when either the @source or @target
+instances are finalized. To remove the binding without affecting the @source
+or @target, call [method@GObject.Object.unref] on the returned binding. It is
+recommended to only call [method@GObject.Object.unref] when it is clear that
+both @source and @target will outlive the binding.
+
+This function is not thread safe. A source can have multiple bindings.
+
+
+ the new binding
+
+
+
+
+ the source object
+
+
+
+ the property on @source to bind
+
+
+
+ the target widget
+
+
+
+ the CSS class on @target to bind
+
+
+
+ flags to pass to @self
+
+
+
+
+ the mapping function from the @source_property to a boolean value, or
+ `NULL` to use the default
+
+
+
+
+ the mapping function from the @target_css_class to a value, or `NULL` to
+ use the default
+
+
+
+ custom data to be passed to @map_to_class and
+ @map_to_property
+
+
+
+ a function to call when disposing the binding, to free
+ resources used by @map_to_class and @map_to_property
+
+
+
+
+
+ Creates a binding between a property on @source and a CSS class on @target
+with a custom mapping using closures.
+
+This function is the language bindings friendly version of
+[func@Adw.bind_property_to_css_class_full].
+
+The binding will automatically be removed when either the @source or @target
+instances are finalized. To remove the binding without affecting the @source
+or @target, call [method@GObject.Object.unref] on the returned binding. It is
+recommended to only call [method@GObject.Object.unref] when it is clear that
+both @source and @target will outlive the binding.
+
+This function is not thread safe. A source can have multiple bindings.
+
+See also: [func@Adw.bind_property_to_css_class].
+
+
+ the new binding
+
+
+
+
+ the source object
+
+
+
+ the property on @source to bind
+
+
+
+ the target widget
+
+
+
+ the CSS class on @target to bind
+
+
+
+ flags to pass to @self
+
+
+
+ a closure wrapping the @source_property to
+ boolean value map, or `NULL` to use the default
+
+
+
+ a closure wrapping the @target_css_class to
+ [struct@GObject.Value] map, or `NULL` to use the default
+
+
+
+
+
+ Parses a condition from a string.
+
+Length conditions are specified as `<type>: <value>[<unit>]`, where:
+
+- `<type>` can be `min-width`, `max-width`, `min-height` or `max-height`
+- `<value>` is a fractional number
+- `<unit>` can be `px`, `pt` or `sp`
+
+If the unit is omitted, `px` is assumed.
+
+See [ctor@BreakpointCondition.new_length].
+
+Examples:
+
+- `min-width: 500px`
+- `min-height: 400pt`
+- `max-width: 100sp`
+- `max-height: 500`
+
+Ratio conditions are specified as `<type>: <width>[/<height>]`, where:
+
+- `<type>` can be `min-aspect-ratio` or `max-aspect-ratio`
+- `<width>` and `<height>` are integer numbers
+
+See [ctor@BreakpointCondition.new_ratio].
+
+The ratio is represented as `<width>` divided by `<height>`.
+
+If `<height>` is omitted, it's assumed to be 1.
+
+Examples:
+
+- `min-aspect-ratio: 4/3`
+- `max-aspect-ratio: 1`
+
+The logical operators `and`, `or` can be used to compose a complex condition
+as follows:
+
+- `<condition> and <condition>`: the condition is true when both
+ `<condition>`s are true, same as when using
+ [ctor@BreakpointCondition.new_and]
+- `<condition> or <condition>`: the condition is true when either of the
+ `<condition>`s is true, same as when using
+ [ctor@BreakpointCondition.new_or]
+
+Examples:
+
+- `min-width: 400px and max-aspect-ratio: 4/3`
+- `max-width: 360sp or max-width: 360px`
+
+Conditions can be further nested using parentheses, for example:
+
+- `min-width: 400px and (max-aspect-ratio: 4/3 or max-height: 400px)`
+
+If parentheses are omitted, the first operator takes priority.
+
+
+ the parsed condition
+
+
+
+
+ the string specifying the condition
+
+
+
+
+
+ Computes easing with @easing for @value.
+
+@value should generally be in the [0, 1] range.
+
+
+ the easing for @value
+
+
+
+
+ an easing value
+
+
+
+ a value to ease
+
+
+
+
+
+ Checks whether animations are enabled for @widget.
+
+This should be used when implementing an animated widget to know whether to
+animate it or not.
+
+
+ whether animations are enabled for @widget
+
+
+
+
+ a `GtkWidget`
+
+
+
+
+
+ Returns the major version number of the Adwaita library.
+
+For example, in libadwaita version 1.2.3 this is 1.
+
+This function is in the library, so it represents the libadwaita library your
+code is running against. Contrast with the [const@MAJOR_VERSION] constant,
+which represents the major version of the libadwaita headers you have
+included when compiling your code.
+
+
+ the major version number of the Adwaita library
+
+
+
+
+ Returns the micro version number of the Adwaita library.
+
+For example, in libadwaita version 1.2.3 this is 3.
+
+This function is in the library, so it represents the libadwaita library your
+code is running against. Contrast with the [const@MAJOR_VERSION] constant,
+which represents the micro version of the libadwaita headers you have
+included when compiling your code.
+
+
+ the micro version number of the Adwaita library
+
+
+
+
+ Returns the minor version number of the Adwaita library.
+
+For example, in libadwaita version 1.2.3 this is 2.
+
+This function is in the library, so it represents the libadwaita library your
+code is running against. Contrast with the [const@MAJOR_VERSION] constant,
+which represents the minor version of the libadwaita headers you have
+included when compiling your code.
+
+
+ the minor version number of the Adwaita library
+
+
+
+
+ Initializes Libadwaita.
+
+This function can be used instead of [func@Gtk.init] as it initializes GTK
+implicitly.
+
+There's no need to call this function if you're using [class@Application].
+
+If Libadwaita has already been initialized, the function will simply return.
+
+This makes sure translations, types, themes, and icons for the Adwaita
+library are set up properly.
+
+
+
+
+
+
+ Use this function to check if libadwaita has been initialized with
+[func@init].
+
+
+ the initialization status
+
+
+
+
+ Converts @value from pixels to @unit.
+
+
+ the length in @unit
+
+
+
+
+ a length unit
+
+
+
+ a value in pixels
+
+
+
+ settings to use, or `NULL` for default settings
+
+
+
+
+
+ Converts @value from @unit to pixels.
+
+
+ the length in pixels
+
+
+
+
+ a length unit
+
+
+
+ a value in @unit
+
+
+
+ settings to use, or `NULL` for default settings
+
+
+
+
+
+ Computes the linear interpolation between @a and @b for @t.
+
+
+ the computed value
+
+
+
+
+ the start
+
+
+
+ the end
+
+
+
+ the interpolation rate
+
+
+
+
+
+ Adjusts @rgba to be suitable as a standalone color.
+
+It will typically be darker for light background, and lighter for dark
+background, ensuring contrast.
+
+
+
+
+
+
+ a background color
+
+
+
+ Whether to calculate standalone color for light or dark background
+
+
+
+ return location for the standalone color
+
+
+
+
+
+ A convenience function for showing an application’s about dialog.
+
+
+
+
+
+
+ the parent widget
+
+
+
+ the name of the first property
+
+
+
+ value of first property, followed by more pairs of property name and
+ value, `NULL`-terminated
+
+
+
+
+
+ A convenience function for showing an application’s about dialog from
+AppStream metadata.
+
+See [ctor@AboutDialog.new_from_appdata] for details.
+
+
+
+
+
+
+ the parent widget
+
+
+
+ The resource to use
+
+
+
+ The version to retrieve release notes for
+
+
+
+ the name of the first property
+
+
+
+ value of first property, followed by more pairs of property name and
+ value, `NULL`-terminated
+
+
+
+
+
+ A convenience function for showing an application’s about window.
+ Use [func@show_about_dialog].
+
+
+
+
+
+
+ the parent top-level window
+
+
+
+ the name of the first property
+
+
+
+ value of first property, followed by more pairs of property name and
+ value, `NULL`-terminated
+
+
+
+
+
+ A convenience function for showing an application’s about window from
+AppStream metadata.
+
+See [ctor@AboutWindow.new_from_appdata] for details.
+ Use [func@show_about_dialog_from_appdata].
+
+
+
+
+
+
+ the parent top-level window
+
+
+
+ The resource to use
+
+
+
+ The version to retrieve release notes for
+
+
+
+ the name of the first property
+
+
+
+ value of first property, followed by more pairs of property name and
+ value, `NULL`-terminated
+
+
+
+
+
+
diff --git a/libphosh-rs/Cargo.lock b/libphosh-rs/Cargo.lock
index da4df8cdd..cd37b116b 100644
--- a/libphosh-rs/Cargo.lock
+++ b/libphosh-rs/Cargo.lock
@@ -2,29 +2,6 @@
# It is not intended for manual editing.
version = 4
-[[package]]
-name = "atk"
-version = "0.18.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b"
-dependencies = [
- "atk-sys",
- "glib",
- "libc",
-]
-
-[[package]]
-name = "atk-sys"
-version = "0.18.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086"
-dependencies = [
- "glib-sys",
- "gobject-sys",
- "libc",
- "system-deps 6.2.2",
-]
-
[[package]]
name = "autocfg"
version = "1.3.0"
@@ -33,43 +10,31 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]]
name = "bitflags"
-version = "2.5.0"
+version = "2.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1"
+checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06"
[[package]]
name = "cairo-rs"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+checksum = "df683f1d30b457964673a5541a4603208ef95ab6873d2a55871895cf310f3b56"
dependencies = [
"bitflags",
"cairo-sys-rs",
"glib",
"libc",
- "once_cell",
- "thiserror",
]
[[package]]
name = "cairo-sys-rs"
-version = "0.18.2"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+checksum = "ee548131103ad8f698c6725669647b9c757b3b66992dd6a026037596417bee21"
dependencies = [
"glib-sys",
"libc",
- "system-deps 6.2.2",
-]
-
-[[package]]
-name = "cfg-expr"
-version = "0.15.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
-dependencies = [
- "smallvec",
- "target-lexicon 0.12.14",
+ "system-deps 9.0.0",
]
[[package]]
@@ -79,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a2c5f3bf25ec225351aa1c8e230d04d880d3bd89dea133537dafad4ae291e5c"
dependencies = [
"smallvec",
- "target-lexicon 0.13.2",
+ "target-lexicon",
]
[[package]]
@@ -183,52 +148,51 @@ dependencies = [
"slab",
]
-[[package]]
-name = "gdk"
-version = "0.18.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691"
-dependencies = [
- "cairo-rs",
- "gdk-pixbuf",
- "gdk-sys",
- "gio",
- "glib",
- "libc",
- "pango",
-]
-
[[package]]
name = "gdk-pixbuf"
-version = "0.18.5"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
+checksum = "25f420376dbee041b2db374ce4573892a36222bb3f6c0c43e24f0d67eae9b646"
dependencies = [
"gdk-pixbuf-sys",
"gio",
"glib",
"libc",
- "once_cell",
]
[[package]]
name = "gdk-pixbuf-sys"
-version = "0.18.0"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+checksum = "9d5209294ba3775f9b650bf78bfadeba4332089f2329b3e2f6ce0a4957a45bff"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
-name = "gdk-sys"
-version = "0.18.2"
+name = "gdk4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7"
+checksum = "d81e2a6c6ecba2aab60633a98df1868b03fa0bfdce8105edc27c1bccf71f0e39"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d8f608d8d7d229975c4d0d026f5d3071598c4ddab3c5262b0a31840fec78d13"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
@@ -238,14 +202,14 @@ dependencies = [
"libc",
"pango-sys",
"pkg-config",
- "system-deps 6.2.2",
+ "system-deps 7.0.5",
]
[[package]]
name = "gio"
-version = "0.18.4"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+checksum = "b399f4650bb52c051f3fdf49a234e8a27ab5725c8cd774556c55eee64b2c0350"
dependencies = [
"futures-channel",
"futures-core",
@@ -254,30 +218,28 @@ dependencies = [
"gio-sys",
"glib",
"libc",
- "once_cell",
"pin-project-lite",
"smallvec",
- "thiserror",
]
[[package]]
name = "gio-sys"
-version = "0.18.1"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+checksum = "6c28739f914c15b87a9856000bed9cbd5b3a8afbca5e982d9a299e1601422cb5"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 6.2.2",
- "winapi",
+ "system-deps 9.0.0",
+ "windows-sys",
]
[[package]]
name = "glib"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+checksum = "18b9b8d350db41f690ec1b87109f202782748bbd8ab2f2ede17cb40d29e2838c"
dependencies = [
"bitflags",
"futures-channel",
@@ -291,109 +253,151 @@ dependencies = [
"gobject-sys",
"libc",
"memchr",
- "once_cell",
"smallvec",
- "thiserror",
]
[[package]]
name = "glib-macros"
-version = "0.18.5"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+checksum = "c9597c68fa7bdf4154a3079642cd21c4dccac0b0bdd2897d82861523bf91e7b9"
dependencies = [
- "heck 0.4.1",
- "proc-macro-crate 2.0.2",
- "proc-macro-error",
+ "heck",
"proc-macro2",
"quote",
- "syn 2.0.61",
+ "syn 3.0.6",
]
[[package]]
name = "glib-sys"
-version = "0.18.1"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+checksum = "99b38907e67e40dec9b60f858bcada952598719cb512a13eb13d6cdcd16f8295"
dependencies = [
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
name = "gobject-sys"
-version = "0.18.0"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07595c9ba696bd9819cb6a8df39f08078f3dd679508fe052dd558492c2053834"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps 9.0.0",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.22.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+checksum = "eb856b9c558971c3f13ab692358926da710b046932a4e087aedcc35b040d7dff"
+dependencies = [
+ "glib",
+ "graphene-sys",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97842c7543828f98aa5583aa54fcda28aa84fa2b0f8c556142177f7bbb638057"
dependencies = [
"glib-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
-name = "gtk"
-version = "0.18.2"
+name = "gsk4"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a"
+checksum = "b867be1c5f14dcb8f552c0eff6e9a9b1da5f8b43943e8efc3a63c889d84952ff"
dependencies = [
- "atk",
"cairo-rs",
- "field-offset",
- "futures-channel",
- "gdk",
- "gdk-pixbuf",
- "gio",
+ "gdk4",
"glib",
- "gtk-sys",
- "gtk3-macros",
+ "graphene-rs",
+ "gsk4-sys",
"libc",
"pango",
- "pkg-config",
]
[[package]]
-name = "gtk-sys"
-version = "0.18.2"
+name = "gsk4-sys"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414"
+checksum = "5b7c7eb2e681ee896646cfb8872b431f24d09f53ba9283289d9b10caa6707088"
dependencies = [
- "atk-sys",
"cairo-sys-rs",
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys",
+ "gdk4-sys",
"glib-sys",
"gobject-sys",
+ "graphene-sys",
"libc",
"pango-sys",
- "system-deps 6.2.2",
+ "system-deps 7.0.5",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98a0a0466484f64b07b5b8184d43fa46be78eb0b8e04ae4e179af31d770b76d9"
+dependencies = [
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "pango",
]
[[package]]
-name = "gtk3-macros"
-version = "0.18.2"
+name = "gtk4-macros"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d"
+checksum = "5ac7179400a36a04de039c24206bb841c5596992b907b43b23ee8d5bdc40d00e"
dependencies = [
- "proc-macro-crate 1.3.1",
- "proc-macro-error",
+ "proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.61",
]
[[package]]
-name = "hashbrown"
-version = "0.14.5"
+name = "gtk4-sys"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+checksum = "82b8f954786af0b1984425c4446b77f5ff6594346181316be3f850caab1c6f01"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps 7.0.5",
+]
[[package]]
-name = "heck"
-version = "0.4.1"
+name = "hashbrown"
+version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
[[package]]
name = "heck"
@@ -403,9 +407,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "indexmap"
-version = "2.2.6"
+version = "2.14.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855"
dependencies = [
"equivalent",
"hashbrown",
@@ -417,32 +421,14 @@ version = "0.2.154"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
-[[package]]
-name = "libhandy-sys"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d814ea1e409715aef1dd9885994cb6801f52129ba2898bfe74591b9547b998ad"
-dependencies = [
- "gdk-pixbuf-sys",
- "gdk-sys",
- "gio-sys",
- "glib-sys",
- "gobject-sys",
- "gtk-sys",
- "libc",
- "pango-sys",
- "pkg-config",
- "system-deps 6.2.2",
-]
-
[[package]]
name = "libphosh"
version = "0.0.7"
dependencies = [
- "gdk",
+ "gdk4",
"gio",
"glib",
- "gtk",
+ "gtk4",
"libc",
"libphosh-sys",
]
@@ -451,15 +437,12 @@ dependencies = [
name = "libphosh-sys"
version = "0.0.7"
dependencies = [
- "gdk-pixbuf-sys",
- "gdk-sys",
+ "gdk4-sys",
"gio-sys",
"glib-sys",
"gobject-sys",
- "gtk-sys",
+ "gtk4-sys",
"libc",
- "libhandy-sys",
- "pango-sys",
"pkg-config",
"shell-words",
"system-deps 7.0.5",
@@ -474,9 +457,9 @@ checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]]
name = "memchr"
-version = "2.7.2"
+version = "2.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
[[package]]
name = "memoffset"
@@ -487,35 +470,27 @@ dependencies = [
"autocfg",
]
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
[[package]]
name = "pango"
-version = "0.18.3"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+checksum = "0b2022dbbd82e1c42bd950a6f1df9b98c796e725dce5ec275e03cbf9772e4efa"
dependencies = [
"gio",
"glib",
- "libc",
- "once_cell",
"pango-sys",
]
[[package]]
name = "pango-sys"
-version = "0.18.0"
+version = "0.22.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+checksum = "ca02d64761b74d56cdd4b437db6d73dc95e6c0d40f27e1c707952c0f09052948"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
- "system-deps 6.2.2",
+ "system-deps 9.0.0",
]
[[package]]
@@ -532,59 +507,24 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
[[package]]
name = "pkg-config"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
-
-[[package]]
-name = "proc-macro-crate"
-version = "1.3.1"
+version = "0.3.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
-dependencies = [
- "once_cell",
- "toml_edit 0.19.15",
-]
+checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
[[package]]
name = "proc-macro-crate"
-version = "2.0.2"
+version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
dependencies = [
- "toml_datetime",
- "toml_edit 0.20.2",
-]
-
-[[package]]
-name = "proc-macro-error"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
-dependencies = [
- "proc-macro-error-attr",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
- "version_check",
-]
-
-[[package]]
-name = "proc-macro-error-attr"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
-dependencies = [
- "proc-macro2",
- "quote",
- "version_check",
+ "toml_edit 0.25.15+spec-1.1.0",
]
[[package]]
name = "proc-macro2"
-version = "1.0.82"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b"
+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
dependencies = [
"unicode-ident",
]
@@ -628,22 +568,31 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "serde"
-version = "1.0.201"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c"
+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.229"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.201"
+version = "1.0.229"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865"
+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.61",
+ "syn 3.0.6",
]
[[package]]
@@ -655,6 +604,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_spanned"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
+dependencies = [
+ "serde_core",
+]
+
[[package]]
name = "shell-words"
version = "1.1.0"
@@ -678,19 +636,20 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "syn"
-version = "1.0.109"
+version = "2.0.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
dependencies = [
"proc-macro2",
+ "quote",
"unicode-ident",
]
[[package]]
name = "syn"
-version = "2.0.61"
+version = "3.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9"
+checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee"
dependencies = [
"proc-macro2",
"quote",
@@ -699,36 +658,30 @@ dependencies = [
[[package]]
name = "system-deps"
-version = "6.2.2"
+version = "7.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+checksum = "e4be53aa0cba896d2dc615bd42bbc130acdcffa239e0a2d965ea5b3b2a86ffdb"
dependencies = [
- "cfg-expr 0.15.8",
- "heck 0.5.0",
+ "cfg-expr",
+ "heck",
"pkg-config",
- "toml",
+ "toml 0.8.2",
"version-compare",
]
[[package]]
name = "system-deps"
-version = "7.0.5"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4be53aa0cba896d2dc615bd42bbc130acdcffa239e0a2d965ea5b3b2a86ffdb"
+checksum = "8a0dae2cbca1f0ff93795713cfe0a4c02f760e3c0b8ae2ab4ec4045808ff429f"
dependencies = [
- "cfg-expr 0.20.3",
- "heck 0.5.0",
+ "cfg-expr",
+ "heck",
"pkg-config",
- "toml",
+ "toml 1.1.6+spec-1.1.0",
"version-compare",
]
-[[package]]
-name = "target-lexicon"
-version = "0.12.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
-
[[package]]
name = "target-lexicon"
version = "0.13.2"
@@ -748,35 +701,30 @@ dependencies = [
]
[[package]]
-name = "thiserror"
-version = "1.0.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.60"
+name = "toml"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
+checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.61",
+ "serde",
+ "serde_spanned 0.6.5",
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
]
[[package]]
name = "toml"
-version = "0.8.2"
+version = "1.1.6+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
+checksum = "920602543f0911ab71da12c50d59701da54c196d1a2bf5cb4b75667f137a406a"
dependencies = [
- "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit 0.20.2",
+ "indexmap",
+ "serde_core",
+ "serde_spanned 1.1.1",
+ "toml_datetime 1.1.1+spec-1.1.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 1.0.4",
]
[[package]]
@@ -789,14 +737,12 @@ dependencies = [
]
[[package]]
-name = "toml_edit"
-version = "0.19.15"
+name = "toml_datetime"
+version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
dependencies = [
- "indexmap",
- "toml_datetime",
- "winnow",
+ "serde_core",
]
[[package]]
@@ -807,50 +753,49 @@ checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [
"indexmap",
"serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
+ "serde_spanned 0.6.5",
+ "toml_datetime 0.6.3",
+ "winnow 0.5.40",
]
[[package]]
-name = "unicode-ident"
-version = "1.0.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
-
-[[package]]
-name = "version-compare"
-version = "0.2.0"
+name = "toml_edit"
+version = "0.25.15+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
+checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614"
+dependencies = [
+ "indexmap",
+ "toml_datetime 1.1.1+spec-1.1.0",
+ "toml_parser",
+ "winnow 1.0.4",
+]
[[package]]
-name = "version_check"
-version = "0.9.4"
+name = "toml_parser"
+version = "1.1.3+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
+dependencies = [
+ "winnow 1.0.4",
+]
[[package]]
-name = "winapi"
-version = "0.3.9"
+name = "toml_writer"
+version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
+checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
+name = "unicode-ident"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
+name = "version-compare"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
[[package]]
name = "windows-sys"
@@ -933,3 +878,12 @@ checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
dependencies = [
"memchr",
]
+
+[[package]]
+name = "winnow"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
+dependencies = [
+ "memchr",
+]
diff --git a/libphosh-rs/Gcr-3.gir b/libphosh-rs/Gcr-3.gir
index acdbf0077..b7ded266c 100644
--- a/libphosh-rs/Gcr-3.gir
+++ b/libphosh-rs/Gcr-3.gir
@@ -5,12 +5,14 @@ and/or use gtk-doc annotations. -->
+
+ throws="1"
+ glib:async-func="build_async">
Complete a certificate chain. Once a certificate chain has been built
@@ -1231,7 +1234,9 @@ asynchronous version.
+ c:identifier="gcr_certificate_chain_build_async"
+ glib:finish-func="build_finish"
+ glib:sync-func="build">
Complete a certificate chain. Once a certificate chain has been built
@@ -1626,6 +1631,9 @@ certificate. The anchored certificate is not necessarily self-signed.
+ a method which returns the RAW der data of the certificate
@@ -1696,7 +1704,8 @@ with [method@CertificateRequest.complete_async].
+ throws="1"
+ glib:async-func="capable_async">
Check whether [class@CertificateRequest] is capable of creating a request
@@ -1727,7 +1736,9 @@ for the given @private_key.
+ c:identifier="gcr_certificate_request_capable_async"
+ glib:finish-func="capable_finish"
+ glib:sync-func="capable">
Asynchronously check whether [class@CertificateRequest] is capable of
@@ -1826,7 +1837,8 @@ capable of creating a request for the given @private_key.
+ throws="1"
+ glib:async-func="complete_async">
Complete and sign a certificate request, so that it can be encoded
@@ -1859,7 +1871,9 @@ This call may block as it signs the request using the private key.
+ c:identifier="gcr_certificate_request_complete_async"
+ glib:finish-func="complete_finish"
+ glib:sync-func="complete">
Asynchronously complete and sign a certificate request, so that it can
@@ -2649,6 +2663,9 @@ also be used to sort the objects.
+ Compare whether tow objects represent the same thing.
@@ -3503,7 +3520,10 @@ the importer to ask the caller for further information about the import.
It must be implemented on a derived class of [class@Gio.TlsInteraction]
-
+
Supplement attributes before import. This means prompting the user for
@@ -3544,7 +3564,10 @@ cancellable cancels the operation the error should be set with %G_IO_ERROR_CANCE
-
+
Asynchronously supplement attributes before import. This means prompting the
@@ -3664,7 +3687,8 @@ interaction that these are the attributes that are needed.
+ throws="1"
+ glib:async-func="supplement_async">
Supplement attributes before import. This means prompting the user for
@@ -3706,7 +3730,9 @@ cancellable cancels the operation the error should be set with %G_IO_ERROR_CANCE
+ c:identifier="gcr_import_interaction_supplement_async"
+ glib:finish-func="supplement_finish"
+ glib:sync-func="supplement">
Asynchronously supplement attributes before import. This means prompting the
@@ -3839,6 +3865,9 @@ interaction that these are the attributes that are needed.
+ method which prepares for supplementing the given attributes before import
@@ -3861,6 +3890,9 @@ interaction that these are the attributes that are needed.
+ method which synchronously supplements attributes before import
@@ -3896,6 +3928,9 @@ interaction that these are the attributes that are needed.
+ method which asynchronously supplements attributes before import
@@ -3949,6 +3984,9 @@ interaction that these are the attributes that are needed.
+ method which completes @supplement_async
@@ -4103,7 +4141,9 @@ If @attrs are a floating reference, then it is consumed.
-
+
Import the queued items in the importer. This function returns immediately
@@ -4178,6 +4218,9 @@ and completes asynchronously.
+ optional implementation of [method@Importer.import]
@@ -4247,7 +4290,10 @@ importer.
-
+
Import the queued items in the importer. This call will block
@@ -4277,7 +4323,10 @@ until the operation completes.
-
+
Import the queued items in the importer. This function returns immediately
@@ -4452,6 +4501,9 @@ importer.
+ implementation of gcr_importer_create_for_parsed(), required
@@ -4467,6 +4519,9 @@ importer.
+ implementation of gcr_importer_queue_for_parsed(), required
@@ -4492,6 +4547,9 @@ importer.
+ optional implementation of [method@Importer.import]
@@ -4511,6 +4569,9 @@ importer.
+ implementation of [method@Importer.import_async], required
@@ -4558,6 +4619,9 @@ importer.
+ implementation of [method@Importer.import_finish]
@@ -4595,7 +4659,7 @@ importer.
-
+
The micro version number of the Gcr library.
@@ -4958,6 +5022,9 @@ currently parsed item can be retrieved using the
+ The default handler for the authenticate signal.
@@ -4972,6 +5039,9 @@ currently parsed item can be retrieved using the
+ The default handler for the parsed signal.
@@ -5345,7 +5415,8 @@ A copy of the data will be made. Use gcr_parser_parse_bytes() to avoid this.
+ throws="1"
+ glib:async-func="parse_stream_async">
Parse items from the data in a #GInputStream. This function may block while
@@ -5386,7 +5457,9 @@ may fire during the parsing.
+ c:identifier="gcr_parser_parse_stream_async"
+ glib:finish-func="parse_stream_finish"
+ glib:sync-func="parse_stream">
Parse items from the data in a #GInputStream. This function completes
@@ -5584,6 +5657,9 @@ functions.
+ The default handler for the authenticate signal.
@@ -5600,6 +5676,9 @@ functions.
+ The default handler for the parsed signal.
@@ -5641,7 +5720,8 @@ are available via gcr_pkcs11_certificate_get_attributes().
+ throws="1"
+ glib:async-func="lookup_issuer_async">
Lookup a the issuer of a @certificate in the PKCS#11 storage. The
@@ -5679,7 +5759,9 @@ if an error occurred.
+ c:identifier="gcr_pkcs11_certificate_lookup_issuer_async"
+ glib:finish-func="lookup_issuer_finish"
+ glib:sync-func="lookup_issuer">
Lookup a the issuer of a @certificate in the PKCS#11 storage. The
@@ -5839,6 +5921,9 @@ property, but may choose not to display the [property@Prompt:description] or
[property@Prompt:title] properties.
+ close a prompt
@@ -5849,7 +5934,9 @@ property, but may choose not to display the [property@Prompt:description] or
-
+
Prompts for confirmation asking a cancel/continue style question.
@@ -5932,7 +6019,9 @@ an error occurs. Check the @error argument to tell the difference.
-
+
Prompts for password. Set the various properties on the prompt before calling
@@ -6039,7 +6128,10 @@ This emits the [signal@Prompt::prompt-close] signal on the prompt object.
-
+
Prompts for confirmation asking a cancel/continue style question.
@@ -6076,7 +6168,10 @@ an error occurs. Check the @error argument to tell the difference.
-
+
Prompts for confirmation asking a cancel/continue style question.
@@ -6484,7 +6579,10 @@ If this string is %NULL then no warning is displayed.
-
+
Prompts for password. Set the various properties on the prompt before calling
@@ -6523,7 +6621,10 @@ to display another prompt.
-
+
Prompts for password. Set the various properties on the prompt before calling
@@ -7152,6 +7253,9 @@ You can use the [method@Prompt.close] method to emit this signal.
+ begin a password prompt
@@ -7199,6 +7303,9 @@ You can use the [method@Prompt.close] method to emit this signal.
+ complete a password prompt
@@ -7224,6 +7331,9 @@ You can use the [method@Prompt.close] method to emit this signal.
+ begin a confirm prompt
@@ -7271,6 +7381,9 @@ You can use the [method@Prompt.close] method to emit this signal.
+ complete a confirm prompt
@@ -7296,6 +7409,9 @@ You can use the [method@Prompt.close] method to emit this signal.
+ close a prompt
@@ -8271,7 +8387,10 @@ Use [method@SystemPrompt.close] to close the prompt when you're done with it.
-
+
Opens a system prompt with the default prompter.
@@ -8308,7 +8427,10 @@ error.
-
+
Asynchronously open a system prompt with the default system prompter.
@@ -8497,7 +8619,10 @@ error.
-
+
Close this prompt. After calling this function, no further prompts will
@@ -8534,7 +8659,10 @@ still closed and may not be further used.
-
+
Close this prompt asynchronously. After calling this function, no further
@@ -8762,6 +8890,9 @@ interface.
+ default handler for the #GcrSystemPrompter::new-prompt signal
@@ -8965,6 +9096,9 @@ gcr_system_prompter_get_prompt_type().
+ default handler for the #GcrSystemPrompter::new-prompt signal
diff --git a/libphosh-rs/GnomeBluetooth-3.0.gir b/libphosh-rs/GnomeBluetooth-3.0.gir
new file mode 100644
index 000000000..4268b69c7
--- /dev/null
+++ b/libphosh-rs/GnomeBluetooth-3.0.gir
@@ -0,0 +1,893 @@
+
+
+
+
+
+
+
+
+ A more precise power state for a Bluetooth adapter.
+
+ Bluetooth adapter is missing.
+
+
+ Bluetooth adapter is on.
+
+
+ Bluetooth adapter is being turned on.
+
+
+ Bluetooth adapter is being turned off.
+
+
+ Bluetooth adapter is off.
+
+
+
+ The type of battery reporting supported by the device.
+
+ no battery reporting
+
+
+ battery reported in percentage
+
+
+ battery reported coarsely
+
+
+
+
+
+ Returns a reference to the #BluetoothClient singleton. Use g_object_unref() when done with the object.
+
+
+ a #BluetoothClient object.
+
+
+
+
+ This will start the process of connecting to one of the known-connectable
+services on the device. This means that it could connect to all the audio
+services on a headset, but just to the input service on a keyboard.
+
+Broadly speaking, this will only have an effect on devices with audio and HID
+services, and do nothing if the device doesn't have the "connectable"
+property set.
+
+When the connection operation is finished, @callback will be called. You can
+then call bluetooth_client_connect_service_finish() to get the result of the
+operation.
+
+
+
+
+
+
+ a #BluetoothClient
+
+
+
+ the object path on which to operate
+
+
+
+ Whether try to connect or disconnect from services on a device
+
+
+
+ optional #GCancellable object, %NULL to ignore
+
+
+
+ a #GAsyncReadyCallback to call when the connection is complete
+
+
+
+ the data to pass to callback function
+
+
+
+
+
+ Finishes the connection operation. See bluetooth_client_connect_service().
+
+
+ %TRUE if the connection operation succeeded, %FALSE otherwise.
+
+
+
+
+ a #BluetoothClient
+
+
+
+ a #GAsyncResult
+
+
+
+
+
+ Returns an unfiltered #GListStore representing the devices attached to the default
+Bluetooth adapter.
+
+
+ a #GListStore
+
+
+
+
+ a #BluetoothClient object
+
+
+
+
+
+ Returns whether there are connected devices with the input capability.
+This can be used by an OS user interface to warn the user before disabling
+Bluetooth so that the user isn't stranded without any input devices.
+
+
+ %TRUE if there are connected input devices.
+
+
+
+
+ a #BluetoothClient
+
+
+
+
+
+ The D-Bus path of the default Bluetooth adapter or %NULL.
+
+
+
+ The address of the default Bluetooth adapter or %NULL.
+
+
+
+ The name of the default Bluetooth adapter or %NULL.
+
+
+
+ %TRUE if the default Bluetooth adapter is powered.
+
+
+
+ %TRUE if the default Bluetooth adapter is in setup mode (discoverable, and discovering).
+
+
+
+ The #BluetoothAdapterState of the default Bluetooth adapter. More precise than
+#BluetoothClient:default-adapter-powered.
+
+
+
+ The number of detected Bluetooth adapters.
+
+
+
+ The #BluetoothClient::device-added signal is launched when a
+device gets added to the model.
+
+
+
+
+
+ a #BluetoothDevice object
+
+
+
+
+
+ The #BluetoothClient::device-removed signal is launched when a
+device gets removed from the model.
+
+Note that #BluetoothClient::device-removed will not be called
+for each individual device as the model is cleared when the
+#BluetoothClient:default-adapter property changes.
+
+
+
+
+
+ the D-Bus object path for the now-removed device
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Use this value to select any Bluetooth audio device where a #BluetoothType enum is required.
+
+
+
+
+ Use this value to select any Bluetooth input device where a #BluetoothType enum is required.
+
+
+
+
+ The type of a Bluetooth device. See also %BLUETOOTH_TYPE_INPUT and %BLUETOOTH_TYPE_AUDIO
+
+ any device, or a device of an unknown type
+
+
+ a telephone (usually a cell/mobile phone)
+
+
+ a modem
+
+
+ a computer, can be a laptop, a wearable computer, etc.
+
+
+ a network device, such as a router
+
+
+ a headset (usually a hands-free device)
+
+
+ headphones (covers two ears)
+
+
+ another type of audio device
+
+
+ a keyboard
+
+
+ a mouse
+
+
+ a camera (still or moving)
+
+
+ a printer
+
+
+ a joypad, joystick, or other game controller
+
+
+ a drawing tablet
+
+
+ a video device, such as a webcam
+
+
+ a remote control
+
+
+ a scanner
+
+
+ a display
+
+
+ a wearable computer
+
+
+ a toy or game
+
+
+ audio speaker or speakers
+
+
+ Returns a human-readable string representation of @type usable for display to users. Do not free the return value.
+The returned string is already translated with gettext().
+
+
+ a string.
+
+
+
+
+ a #BluetoothType
+
+
+
+
+
+
+ Returns the type of device corresponding to the given @appearance value,
+as usually found in the GAP service.
+
+
+ a #BluetoothType.
+
+
+
+
+ a Bluetooth device appearance
+
+
+
+
+
+ The #BluetoothClient object is used to query the state of Bluetooth
+devices and adapters.
+
+
+ Enumerations related to Bluetooth.
+
+
+ Those helper functions are used throughout the Bluetooth
+management utilities.
+
+
+ Returns the type of device corresponding to the given @class value.
+
+
+ a #BluetoothType.
+
+
+
+
+ a Bluetooth device class
+
+
+
+
+
+ Start a GUI application for transferring files over Bluetooth.
+
+
+ %TRUE on success, %FALSE on error.
+
+
+
+
+ Remote device to use
+
+
+
+ Remote device's name
+
+
+
+
+
+ Returns a human-readable string representation of @type usable for display to users. Do not free the return value.
+The returned string is already translated with gettext().
+
+
+ a string.
+
+
+
+
+ a #BluetoothType
+
+
+
+
+
+ Returns a string representing a human-readable (but not usable for display to users) version of the @uuid. Do not free the return value.
+
+
+ a string.
+
+
+
+
+ a string representing a Bluetooth UUID
+
+
+
+
+
+ Returns whether the string is a valid Bluetooth address. This does not contact the device in any way.
+
+
+ %TRUE if the address is valid, %FALSE if not.
+
+
+
+
+ a string representing a Bluetooth address
+
+
+
+
+
+
diff --git a/libphosh-rs/GnomeDesktop-3.0.gir b/libphosh-rs/GnomeDesktop-3.0.gir
deleted file mode 100644
index b3ad76fdd..000000000
--- a/libphosh-rs/GnomeDesktop-3.0.gir
+++ /dev/null
@@ -1,5650 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a thumbnail for a certain frame, where 'frame' is somewhat
-vaguely defined as 'suitable point to show while single-stepping
-through the slideshow'.
-
-
- the newly created thumbnail or
-or NULL if frame_num is out of bounds.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create a surface that can be set as background for @window.
-
-
- %NULL on error (e.g. out of X connections)
-
-
-
-
- GnomeBG
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GdkPixbuf showing the background as a thumbnail
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a new object to manage crossfading a
-window background between two #cairo_surface_ts.
-
-
- the new #GnomeBGCrossfade
-
-
-
-
- The width of the crossfading window
-
-
-
- The height of the crossfading window
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This function reveals whether or not @fade is currently
-running on a window. See gnome_bg_crossfade_start() for
-information on how to initiate a crossfade.
-
-
- %TRUE if fading, or %FALSE if not fading
-
-
-
-
- a #GnomeBGCrossfade
-
-
-
-
-
- Before initiating a crossfade with gnome_bg_crossfade_start()
-a start and end surface have to be set. This function sets
-the surface shown at the end of the crossfade effect.
-
-
- %TRUE if successful, or %FALSE if the surface
-could not be copied.
-
-
-
-
- a #GnomeBGCrossfade
-
-
-
- The cairo surface to fade to
-
-
-
-
-
- Before initiating a crossfade with gnome_bg_crossfade_start()
-a start and end surface have to be set. This function sets
-the surface shown at the beginning of the crossfade effect.
-
-
- %TRUE if successful, or %FALSE if the surface
-could not be copied.
-
-
-
-
- a #GnomeBGCrossfade
-
-
-
- The cairo surface to fade from
-
-
-
-
-
- This function initiates a quick crossfade between two surfaces on
-the background of @window. Before initiating the crossfade both
-gnome_bg_crossfade_start() and gnome_bg_crossfade_end() need to
-be called. If animations are disabled, the crossfade is skipped,
-and the window background is set immediately to the end surface.
-
-
-
-
-
-
- a #GnomeBGCrossfade
-
-
-
- The #GdkWindow to draw crossfade on
-
-
-
-
-
- This function stops any in progress crossfades that may be
-happening. It's harmless to call this function if @fade is
-already stopped.
-
-
-
-
-
-
- a #GnomeBGCrossfade
-
-
-
-
-
- When a crossfade is running, this is height of the fading
-surface.
-
-
-
- When a crossfade is running, this is width of the fading
-surface.
-
-
-
-
-
-
-
-
-
- When a crossfade finishes, @window will have a copy
-of the end surface as its background, and this signal will
-get emitted.
-
-
-
-
-
- the #GdkWindow the crossfade happend on.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a new object to manage a slide show.
-window background between two #cairo_surface_ts.
-
-
- the new #GnomeBGSlideShow
-
-
-
-
- The filename of the slide show
-
-
-
-
-
- Returns the current slides progress.
-
-
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
- monitor width
-
-
-
- monitor height
-
-
-
- slide progress
-
-
-
- slide duration
-
-
-
- if slide is fixed
-
-
-
- first file in slide
-
-
-
- second file in slide
-
-
-
-
-
- gets whether or not the slide show has multiple sizes for different monitors
-
-
- %TRUE if multiple sizes
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
-
-
- Returns number of slides in slide show
-
-
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
-
-
- Retrieves slide by frame number
-
-
- %TRUE if successful
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
- frame number
-
-
-
- monitor width
-
-
-
- monitor height
-
-
-
- slide progress
-
-
-
- slide duration
-
-
-
- if slide is fixed
-
-
-
- first file in slide
-
-
-
- second file in slide
-
-
-
-
-
- gets the start time of the slide show
-
-
- a timestamp
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
-
-
- gets the total duration of the slide show
-
-
- a timestamp
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
-
-
- Tries to load the slide show.
-
-
- %TRUE if successful
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
-
-
- Tries to load the slide show asynchronously.
-
-
-
-
-
-
- a #GnomeBGSlideShow
-
-
-
- a #GCancellable
-
-
-
- the callback
-
-
-
- user data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a new #GnomeDesktopThumbnailFactory.
-
-This function must be called on the main thread and is non-blocking.
-
-
- a new #GnomeDesktopThumbnailFactory
-
-
-
-
- The thumbnail size to use
-
-
-
-
-
- Returns TRUE if this GnomeDesktopThumbnailFactory can (at least try) to thumbnail
-this file. Thumbnails or files with failed thumbnails won't be thumbnailed.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- TRUE if the file can be thumbnailed.
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the mime type of the file
-
-
-
- the mtime of the file
-
-
-
-
-
- Creates a failed thumbnail for the file so that we don't try
-to re-thumbnail the file later.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- TRUE if everything went fine; FALSE if there was an error.
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the modification time of the file
-
-
-
- a GCancellable object, or NULL
-
-
-
-
-
- Asynchronous version of gnome_desktop_thumbnail_factory_create_failed_thumbnail()
-
-Since 43.0
-
-
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the modification time of the original file
-
-
-
- a Cancellable object
-
-
-
- a function that will be called when the task has ended
-
-
-
- user data
-
-
-
-
-
-
-
- TRUE if the operation was correct; FALSE if there was an error
-
-Since 43.0
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the result of the operation
-
-
-
-
-
- Tries to generate a thumbnail for the specified file. If it succeeds
-it returns a pixbuf that can be used as a thumbnail.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- thumbnail pixbuf if thumbnailing succeeded, %NULL otherwise and error will be set
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the mime type of the file
-
-
-
- a #GCancellable object or NULL
-
-
-
-
-
- Asynchronous version of gnome_desktop_thumbnail_factory_generate_thumbnail()
-
-Since 43.0
-
-
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the URI of a file
-
-
-
- the MIME type of the file
-
-
-
- a Cancellable object
-
-
-
- a function that will be called when the task has ended
-
-
-
- user data
-
-
-
-
-
-
-
- thumbnail pixbuf if thumbnailing succeeded, %NULL otherwise.
-
-Since 43.0
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the result of the operation
-
-
-
-
-
- Tries to locate an failed thumbnail for the file specified. Writing
-and looking for failed thumbnails is important to avoid to try to
-thumbnail e.g. broken images several times.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- TRUE if there is a failed thumbnail for the file.
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the mtime of the file
-
-
-
-
-
- Tries to locate an existing thumbnail for the file specified.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- The absolute path of the thumbnail, or %NULL if none exist.
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the uri of a file
-
-
-
- the mtime of the file
-
-
-
-
-
- Saves @thumbnail at the right place. If the save fails a
-failed thumbnail is written.
-
-Usage of this function is threadsafe and does blocking I/O.
-
-
- TRUE if everything went fine; FALSE if there was an error.
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the thumbnail as a pixbuf
-
-
-
- the uri of a file
-
-
-
- the modification time of the original file
-
-
-
- a GCancellable object, or NULL
-
-
-
-
-
- Asynchronous version of gnome_desktop_thumbnail_factory_save_thumbnail()
-
-Since 43.0
-
-
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the thumbnail as a pixbuf
-
-
-
- the uri of a file
-
-
-
- the modification time of the original file
-
-
-
- a Cancellable object
-
-
-
- a function that will be called when the task has ended
-
-
-
- user data
-
-
-
-
-
-
-
- TRUE if the operation was correct; FALSE if there was an error
-
-Since 43.0
-
-
-
-
- a #GnomeDesktopThumbnailFactory
-
-
-
- the result of the operation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a new #GnomeIdleMonitor that tracks the server-global
-idletime for all devices.
-
-
-
-
-
-
- a watch id
-
-Adds a watch for a specific idle time. The callback will be called
-when the user has accumulated @interval_msec milliseconds of idle time.
-This function will return an ID that can either be passed to
-gnome_idle_monitor_remove_watch(), or can be used to tell idle time
-watches apart if you have more than one.
-
-Also note that this function will only care about positive transitions
-(user's idle time exceeding a certain time). If you want to know about
-when the user has become active, use
-gnome_idle_monitor_add_user_active_watch().
-
-
-
-
- A #GnomeIdleMonitor
-
-
-
- The idletime interval, in milliseconds. It must be
- a strictly positive value (> 0).
-
-
-
- The callback to call when the user has
- accumulated @interval_msec milliseconds of idle time.
-
-
-
- The user data to pass to the callback
-
-
-
- A #GDestroyNotify
-
-
-
-
-
-
-
- a watch id
-
-Add a one-time watch to know when the user is active again.
-Note that this watch is one-time and will de-activate after the
-function is called, for efficiency purposes. It's most convenient
-to call this when an idle watch, as added by
-gnome_idle_monitor_add_idle_watch(), has triggered.
-
-
-
-
- A #GnomeIdleMonitor
-
-
-
- The callback to call when the user is
- active again.
-
-
-
- The user data to pass to the callback
-
-
-
- A #GDestroyNotify
-
-
-
-
-
-
-
- The current idle time, in milliseconds
-
-
-
-
- A #GnomeIdleMonitor
-
-
-
-
-
- Removes an idle time watcher, previously added by
-gnome_idle_monitor_add_idle_watch() or
-gnome_idle_monitor_add_user_active_watch().
-
-
-
-
-
-
- A #GnomeIdleMonitor
-
-
-
- A watch ID
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Returns a reference to a #GnomePnpIds object, or creates
-a new one if none have been created.
-
-
- a #GnomePnpIds object.
-
-
-
-
- Find the full manufacturer name for the given PNP ID.
-
-
- a new string representing the manufacturer name,
-or %NULL when not found.
-
-
-
-
- a #GnomePnpIds object
-
-
-
- the PNP ID to look for
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- whether at least two outputs are at (0, 0) offset and they
-have the same width/height. Those outputs are of course connected and on
-(i.e. they have a CRTC assigned).
-
-
-
-
-
-
-
-
-
-
-
- the output configuration for this #GnomeRRConfig
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the current mode of this crtc
-
-
-
-
- a #GnomeRRCrtc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- %TRUE for success
-
-
-
-
- a #GnomeRRCrtc
-
-
-
-
-
-
- the minimum width
-
-
-
- the maximum width
-
-
-
- the minimum height
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRRCrtc
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Returns TRUE if this mode is a tiled
-mode created for span a tiled monitor.
-
-
-
-
-
-
- a #GnomeRRMode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The currently set backlight brightness
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
- the current mode of this output
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The minimum backlight step available in percent
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutput
-
-
-
-
-
-
-
- %TRUE for success
-
-
-
-
-
-
-
- the absolute value which is 0 >= this <= 100
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the display name of this output
-
-
-
-
-
-
-
-
-
- Get the geometry for the monitor connected to the specified output.
-If the monitor is a tiled monitor, it returns the geometry for the complete monitor.
-
-
-
-
-
-
- a #GnomeRROutputInfo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the output name
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a #GnomeRROutputInfo
-
-
-
-
-
-
-
- whether there is a CRTC assigned to this output (i.e. a signal is being sent to it)
-
-
-
-
-
-
-
-
-
-
-
- whether the output is physically connected to a monitor
-
-
-
-
-
-
-
-
-
-
-
- %TRUE if the specified output is connected to
-the primary tile of a monitor or to an untiled monitor,
-%FALSE if the output is connected to a secondary tile.
-
-
-
-
- a #GnomeRROutputInfo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Set the geometry for the monitor connected to the specified output.
-If the monitor is a tiled monitor, it sets the geometry for the complete monitor.
-
-
-
-
-
-
- a #GnomeRROutputInfo
-
-
-
- x offset for monitor
-
-
-
- y offset for monitor
-
-
-
- monitor width
-
-
-
- monitor height
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a unique #GnomeRRScreen instance for the specified @screen.
-
-
- a unique #GnomeRRScreen instance, specific to the @screen, or NULL
-if this could not be created, for instance if the driver does not support
-Xrandr 1.2. Each #GdkScreen thus has a single instance of #GnomeRRScreen.
-
-
-
-
- the #GdkScreen on which to operate
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the CRTC identified by @id
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The current #GnomeRRDpmsMode of this screen
-
-
-
-
-
-
-
- the output identified by @id
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- the output identified by @name
-
-
-
-
-
-
-
-
-
-
-
-
- Get the ranges of the screen
-
-
-
-
-
-
- a #GnomeRRScreen
-
-
-
- the minimum width
-
-
-
- the maximum width
-
-
-
- the minimum height
-
-
-
- the maximum height
-
-
-
-
-
- List available XRandR clone modes
-
-
-
-
-
-
-
-
-
-
-
-
-
- List all CRTCs
-
-
-
-
-
-
-
-
-
-
-
-
-
- List available XRandR modes
-
-
-
-
-
-
-
-
-
-
-
-
-
- List all outputs
-
-
-
-
-
-
-
-
-
-
-
-
-
- Refreshes the screen configuration, and calls the screen's callback if it
-exists and if the screen's configuration changed.
-
-
- TRUE if the screen's configuration changed; otherwise, the
-function returns FALSE and a NULL error if the configuration didn't change,
-or FALSE and a non-NULL error if there was an error while refreshing the
-configuration.
-
-
-
-
- a #GnomeRRScreen
-
-
-
-
-
- This method also disables the DPMS timeouts.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This signal is emitted when a display device is connected to a
-port, or a port is hotplugged with an active output. The latter
-can happen if a laptop is docked, and the dock provides a new
-active output.
-
-The @output value is not a #GObject. The returned @output value can
-only assume to be valid during the emission of the signal (i.e. within
-your signal handler only), as it may change later when the @screen
-is modified due to an event from the X server, or due to another
-place in the application modifying the @screen and the @output.
-Therefore, deal with changes to the @output right in your signal
-handler, instead of keeping the @output reference for an async or
-idle function.
-
-
-
-
-
- the #GnomeRROutput that was connected
-
-
-
-
-
- This signal is emitted when a display device is disconnected from
-a port, or a port output is hot-unplugged. The latter can happen
-if a laptop is undocked, and the dock provided the output.
-
-The @output value is not a #GObject. The returned @output value can
-only assume to be valid during the emission of the signal (i.e. within
-your signal handler only), as it may change later when the @screen
-is modified due to an event from the X server, or due to another
-place in the application modifying the @screen and the @output.
-Therefore, deal with changes to the @output right in your signal
-handler, instead of keeping the @output reference for an async or
-idle function.
-
-
-
-
-
- the #GnomeRROutput that was disconnected
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Creates a new #GnomeWallClock
-
-
- the new clock
-
-
-
-
- Returns the string representing the current time of this clock
-according to the user settings.
-
-
- the time of the clock as a string.
- This string points to internally allocated storage and
- must not be freed, modified or stored.
-
-
-
-
- a #GnomeWallClock
-
-
-
-
-
- Returns the current local time zone used by this clock.
-
-
- the #GTimeZone of the clock.
-
-
-
-
- a #GnomeWallClock
-
-
-
-
-
-
-
- a newly allocated string representing the date & time
-passed, with the options applied.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A formatted string representing the current clock display.
-
-
-
- If %TRUE, the formatted clock will always have seconds precision and the
-'clock' property will always be updated every second, irrespective of
-system configuration.
-
-
-
- If %TRUE, the formatted clock will never include a date or the
-day of the week, irrespective of configuration.
-
-
-
- The timezone used for this clock
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- a new #GnomeXkbInfo instance.
-
-
-
-
-
-
- the translated description for the group @group_id.
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- identifier for group
-
-
-
-
-
-
-
- the translated description for the option @id.
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- identifier for group containing the option
-
-
-
- option identifier
-
-
-
-
-
- Returns a list of all layout identifiers we know about.
-
-
- the list
-of layout names. The caller takes ownership of the #GList but not
-of the strings themselves, those are internally allocated and must
-not be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
-
-
- Returns a list of all option group identifiers we know about.
-
-
- the list
-of option group ids. The caller takes ownership of the #GList but
-not of the strings themselves, those are internally allocated and
-must not be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
-
-
- Returns a list of all languages supported by a layout, given by
-@layout_id.
-
-
- the list of
-ISO 639 code strings. The caller takes ownership of the #GList but
-not of the strings themselves, those are internally allocated and
-must not be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- a layout identifier
-
-
-
-
-
- Retrieves information about a layout. Both @display_name and
-@short_name are suitable to show in UIs and might be localized if
-translations are available.
-
-Some layouts don't provide a short name (2 or 3 letters) or don't
-specify a XKB variant, in those cases @short_name or @xkb_variant
-are empty strings, i.e. "".
-
-If the given layout doesn't exist the return value is %FALSE and
-all the (out) parameters are set to %NULL.
-
-
- %TRUE if the layout exists or %FALSE otherwise.
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- layout's identifier about which to retrieve the info
-
-
-
- location to store
-the layout's display name, or %NULL
-
-
-
- location to store
-the layout's short name, or %NULL
-
-
-
- location to store
-the layout's XKB name, or %NULL
-
-
-
- location to store
-the layout's XKB variant, or %NULL
-
-
-
-
-
- Returns a list of all layout identifiers we know about for
-@country_code.
-
-
- the list
-of layout ids. The caller takes ownership of the #GList but not of
-the strings themselves, those are internally allocated and must not
-be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- an ISO 3166 code string
-
-
-
-
-
- Returns a list of all layout identifiers we know about for
-@language_code.
-
-
- the list
-of layout ids. The caller takes ownership of the #GList but not of
-the strings themselves, those are internally allocated and must not
-be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- an ISO 639 code string
-
-
-
-
-
- Returns a list of all option identifiers we know about for group
-@group_id.
-
-
- the list
-of option ids. The caller takes ownership of the #GList but not of
-the strings themselves, those are internally allocated and must not
-be modified.
-
-
-
-
-
-
- a #GnomeXkbInfo
-
-
-
- group's identifier about which to retrieve the options
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Returns whether the thumbnail has the correct uri and mtime embedded in the
-png options. This function is threadsafe and does no blocking I/O.
-
-
- TRUE if the thumbnail has the right @uri and @mtime
-
-
-
-
- an loaded thumbnail #GdkPixbuf
-
-
-
- a uri
-
-
-
- the mtime
-
-
-
-
-
- Returns the filename that a thumbnail of size @size for @uri would have.
-This function is threadsafe and does no blocking I/O.
-
-
- an absolute filename
-
-
-
-
- an uri
-
-
-
- a thumbnail size
-
-
-
-
-
- Gets all locales.
-
-
-
- a newly allocated %NULL-terminated string array containing the
- all locales. Free with g_strfreev().
-
-
-
-
-
-
- Gets the country name for @code. If @translation is provided the
-returned string is translated accordingly.
-
-
- the country name. Caller takes
-ownership.
-
-
-
-
- an ISO 3166 code string
-
-
-
- a locale string
-
-
-
-
-
- Gets the country description for @locale. If @translation is
-provided the returned string is translated accordingly.
-
-
- the country description. Caller
-takes ownership.
-
-
-
-
- a locale string
-
-
-
- a locale string
-
-
-
-
-
- Gets the default input source's type and identifier for a given
-locale.
-
-
- %TRUE if a input source exists or %FALSE otherwise.
-
-
-
-
- a locale string
-
-
-
- location to store the input source
-type
-
-
-
- location to store the input source
-identifier
-
-
-
-
-
- Gets the language name for @code. If @translation is provided the
-returned string is translated accordingly.
-
-
- the language name. Caller takes
-ownership.
-
-
-
-
- an ISO 639 code string
-
-
-
- a locale string
-
-
-
-
-
- Gets the language description for @locale. If @translation is
-provided the returned string is translated accordingly.
-
-
- the language description. Caller
-takes ownership.
-
-
-
-
- a locale string
-
-
-
- a locale string
-
-
-
-
-
- Returns an integer with the major version of GNOME. Useful for
-dynamic languages like Javascript or Python (static languages like
-C should use %GNOME_DESKTOP_PLATFORM_VERSION). If this
-function doesn't exist, it can be presumed that the GNOME platform
-version is 42 or previous.
-
-
- an integer with the major version of GNOME.
-
-
-
-
- Gets a translation of the raw @modifier string. If @translation
-is provided the returned string is translated accordingly.
-
-
- the translated modifier string.
-Caller takes ownership.
-
-
-
-
- the modifier part of a locale name
-
-
-
- a locale string
-
-
-
-
-
- #GnomeDesktopThumbnailFactory allows generation and loading of thumbnails for
-local and remote files and directories. It uses a collection of programs
-called <firstterm>thumbnailers</firstterm>, each one generating thumbnails
-for a specific set of content-types of files. For example,
-<application>totem-video-thumbnailer</application> generates thumbnails for
-video files using GStreamer; <application>evince-thumbnailer</application>
-generates thumbnails for PDFs and other document files. If no specific
-thumbnailer exists for a file, or if the thumbnailer fails, gdk-pixbuf is
-used as a fallback.
-
-To generate a thumbnail, an appropriate thumbnailer program is selected then
-executed, passing it the URI of the file to thumbnail, plus a path to write
-the thumbnail image to. If thumbnailing succeeds, the thumbnailer should have
-written the image to disk before terminating; but if thumbnailing fails, no
-image should be written, and the thumbnailer should return a non-zero exit
-status. #GnomeDesktopThumbnailFactory will then fall back to using gdk-pixbuf
-to generate a thumbnail, if possible.
-
-Thumbnailers are chosen by examining a series of
-<filename>.thumbnailer</filename> files in
-<filename><replaceable>$PREFIX</replaceable>/share/thumbnailers</filename>.
-Each is in a simple key-file format:
-<informalexample><programlisting>
-[Thumbnailer Entry]
-Exec=evince-thumbnailer -s %s %u %o
-MimeType=application/pdf;application/x-bzpdf;application/x-gzpdf;
-</programlisting></informalexample>
-
-The <filename>.thumbnailer</filename> format supports three keys:
-<variablelist>
-<varlistentry><term><code>Exec</code></term><listitem><para>
-Required. The command to execute the thumbnailer. It supports a few different
-parameters which are replaced before calling the thumbnailer:
-<replaceable>%u</replaceable> is the URI of the file being thumbnailed;
-<replaceable>%i</replaceable> is its path; <replaceable>%o</replaceable>
-is the path of the image file to be written to;
-<replaceable>%s</replaceable> is the maximum desired size of the thumbnail
-image (the maximum width or height, in pixels); and
-<replaceable>%%</replaceable> is a literal percent character.
-</para></listitem></varlistentry>
-<varlistentry><term><code>MimeType</code></term><listitem><para>
-Required. A semicolon-separated list of MIME types which the thumbnailer
-supports generating thumbnails for.
-</para></listitem></varlistentry>
-</variablelist>
-
-So in the example <filename>.thumbnailer</filename> file above, the command
-passes the requested thumbnail size, then the input file’s URI, then the
-path for the output image file to
-<application>evince-thumbnailer</application>.
-
-The code to examine and call a thumbnailer is contained in
-#GnomeDesktopThumbnailFactory, which handles looking up the right thumbnailer
-script, building and executing the command for it, and loading the resulting
-thumbnail image into a #GdkPixbuf.
-
-Thumbnail caching is also supported by #GnomeDesktopThumbnailFactory. When
-calling a thumbnailer, the path passed for the output image file is in
-<filename><envar>$XDG_CACHE_HOME</envar>/thumbnails/
-<replaceable>$SIZE</replaceable>/</filename>. The cached image file is given
-a (probably) unique filename, generated by hashing the original file’s URI,
-so the thumbnail can be looked up in future. #GnomeDesktopThumbnailFactory
-supports two sizes of thumbnails: %GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL and
-%GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE. Normal thumbnails are up to 128×128
-pixels, whereas large thumbnails are up to 256×256 pixels. Thumbnails which
-are larger than this are scaled down before being cached, and non-square
-thumbnails are scaled so their largest dimension is at most 128 or 256
-pixels.
-
-#GnomeDesktopThumbnailFactory also handles failed thumbnails. If a
-thumbnailer can’t generate a thumbnail for a file (e.g. because the file is
-corrupt or because the right video codecs aren’t available), it returns a
-non-zero exit status. The thumbnail factory then writes an entry to
-<filename><envar>$XDG_CACHE_HOME</envar>/thumbnails/fail/
-gnome-thumbnail-factory/</filename> which is named after the hash of the
-input file URI (just like a successful cached thumbnail). For future queries
-for thumbnails for that file, #GnomeDesktopThumbnailFactory can immediately
-return an error after looking up the fail entry.
-
-If a file changes content, #GnomeDesktopThumbnailFactory will generate a new
-thumbnail because each cached image has associated metadata (stored as PNG
-tEXt keys) storing the full URI of the thumbnailed file (to check for hash
-collisions) and its last modification time at the point of thumbnailing. If
-the stored modification time doesn’t match the file’s current one, a new
-thumbnail is generated.
-
-
- Returns %TRUE if there are translations for language @code.
-
-
- %TRUE if there are translations for language @code.
-
-
-
-
- an ISO 639 code string
-
-
-
-
-
- Gets the normalized locale string in the form
-[language[_country][.codeset][@modifier]] for @name.
-
-
- normalized locale string. Caller
-takes ownership.
-
-
-
-
- a locale string
-
-
-
-
-
- Extracts the various components of a locale string in XPG format.
-([language[_country][.codeset][@modifier]]). See
-http://en.wikipedia.org/wiki/Locale.
-
-
- %TRUE if parsing was successful.
-
-
-
-
- a locale string
-
-
-
- location to
-store the language code, or %NULL
-
-
-
- location to
-store the country code, or %NULL
-
-
-
- location to
-store the codeset, or %NULL
-
-
-
- location to
-store the modifier, or %NULL
-
-
-
-
-
- Returns the #GQuark that will be used for #GError values returned by the
-GnomeRR API.
-
- a #GQuark used to identify errors coming from the GnomeRR API.
-
-
-
-
- If the current process is running inside a user systemd instance, then move
-the launched PID into a transient scope. The given @name will be used to
-create a unit name. It should be the application ID or the executable in all
-other cases. If a desktop-id is passed then the .desktop suffix will be
-stripped.
-
-It is advisable to use this function every time where the started application
-can be considered reasonably independent of the launching application. Placing
-it in a scope creates proper separation between the programs rather than being
-considered a single entity by systemd.
-
-It is always safe to call this function. Note that a successful return code
-does not imply that a unit has been created. It solely means that no error
-condition was hit sending the request.
-
-If @connection is %NULL then g_dbus_get() will be called internally.
-
-Note that most callers will not need to handle errors. As such, it is normal
-to pass a %NULL @callback.
-
-
-
-
-
-
- Name for the application
-
-
-
- The PID of the application
-
-
-
- A description to use for the unit, or %NULL
-
-
-
- An #GDBusConnection to the session bus, or %NULL
-
-
-
- #GCancellable to use
-
-
-
- Callback to call when the operation is done
-
-
-
- Data to be passed to @callback
-
-
-
-
-
- Finish an asynchronous operation to create a transient scope that was
-started with gnome_start_systemd_scope().
-
-Note that a successful return code does not imply that a unit has been
-created. It solely means that no error condition was hit sending the request.
-
-
- %FALSE on error, %TRUE otherwise
-
-
-
-
- A #GAsyncResult
-
-
-
-
-
-
diff --git a/libphosh-rs/GnomeDesktop-4.0.gir b/libphosh-rs/GnomeDesktop-4.0.gir
new file mode 100644
index 000000000..9947d226c
--- /dev/null
+++ b/libphosh-rs/GnomeDesktop-4.0.gir
@@ -0,0 +1,2411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new #GnomeDesktopThumbnailFactory.
+
+This function must be called on the main thread and is non-blocking.
+
+
+ a new #GnomeDesktopThumbnailFactory
+
+
+
+
+ The thumbnail size to use
+
+
+
+
+
+ Returns TRUE if this GnomeDesktopThumbnailFactory can (at least try) to thumbnail
+this file. Thumbnails or files with failed thumbnails won't be thumbnailed.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ TRUE if the file can be thumbnailed.
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the mime type of the file
+
+
+
+ the mtime of the file
+
+
+
+
+
+ Creates a failed thumbnail for the file so that we don't try
+to re-thumbnail the file later.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ TRUE if everything went fine; FALSE if there was an error.
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the modification time of the file
+
+
+
+ a GCancellable object, or NULL
+
+
+
+
+
+ Asynchronous version of gnome_desktop_thumbnail_factory_create_failed_thumbnail()
+
+Since 43.0
+
+
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the modification time of the original file
+
+
+
+ a Cancellable object
+
+
+
+ a function that will be called when the task has ended
+
+
+
+ user data
+
+
+
+
+
+
+
+ TRUE if the operation was correct; FALSE if there was an error
+
+Since 43.0
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the result of the operation
+
+
+
+
+
+ Tries to generate a thumbnail for the specified file. If it succeeds
+it returns a pixbuf that can be used as a thumbnail.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ thumbnail pixbuf if thumbnailing succeeded, %NULL otherwise and error will be set
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the mime type of the file
+
+
+
+ a #GCancellable object or NULL
+
+
+
+
+
+ Asynchronous version of gnome_desktop_thumbnail_factory_generate_thumbnail()
+
+Since 43.0
+
+
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the URI of a file
+
+
+
+ the MIME type of the file
+
+
+
+ a Cancellable object
+
+
+
+ a function that will be called when the task has ended
+
+
+
+ user data
+
+
+
+
+
+
+
+ thumbnail pixbuf if thumbnailing succeeded, %NULL otherwise.
+
+Since 43.0
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the result of the operation
+
+
+
+
+
+ Tries to locate an failed thumbnail for the file specified. Writing
+and looking for failed thumbnails is important to avoid to try to
+thumbnail e.g. broken images several times.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ TRUE if there is a failed thumbnail for the file.
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the mtime of the file
+
+
+
+
+
+ Tries to locate an existing thumbnail for the file specified.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ The absolute path of the thumbnail, or %NULL if none exist.
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the uri of a file
+
+
+
+ the mtime of the file
+
+
+
+
+
+ Saves @thumbnail at the right place. If the save fails a
+failed thumbnail is written.
+
+Usage of this function is threadsafe and does blocking I/O.
+
+
+ TRUE if everything went fine; FALSE if there was an error.
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the thumbnail as a pixbuf
+
+
+
+ the uri of a file
+
+
+
+ the modification time of the original file
+
+
+
+ a GCancellable object, or NULL
+
+
+
+
+
+ Asynchronous version of gnome_desktop_thumbnail_factory_save_thumbnail()
+
+Since 43.0
+
+
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the thumbnail as a pixbuf
+
+
+
+ the uri of a file
+
+
+
+ the modification time of the original file
+
+
+
+ a Cancellable object
+
+
+
+ a function that will be called when the task has ended
+
+
+
+ user data
+
+
+
+
+
+
+
+ TRUE if the operation was correct; FALSE if there was an error
+
+Since 43.0
+
+
+
+
+ a #GnomeDesktopThumbnailFactory
+
+
+
+ the result of the operation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a new #GnomeIdleMonitor that tracks the server-global
+idletime for all devices.
+
+
+
+
+
+
+ a watch id
+
+Adds a watch for a specific idle time. The callback will be called
+when the user has accumulated @interval_msec milliseconds of idle time.
+This function will return an ID that can either be passed to
+gnome_idle_monitor_remove_watch(), or can be used to tell idle time
+watches apart if you have more than one.
+
+Also note that this function will only care about positive transitions
+(user's idle time exceeding a certain time). If you want to know about
+when the user has become active, use
+gnome_idle_monitor_add_user_active_watch().
+
+
+
+
+ A #GnomeIdleMonitor
+
+
+
+ The idletime interval, in milliseconds. It must be
+ a strictly positive value (> 0).
+
+
+
+ The callback to call when the user has
+ accumulated @interval_msec milliseconds of idle time.
+
+
+
+ The user data to pass to the callback
+
+
+
+ A #GDestroyNotify
+
+
+
+
+
+
+
+ a watch id
+
+Add a one-time watch to know when the user is active again.
+Note that this watch is one-time and will de-activate after the
+function is called, for efficiency purposes. It's most convenient
+to call this when an idle watch, as added by
+gnome_idle_monitor_add_idle_watch(), has triggered.
+
+
+
+
+ A #GnomeIdleMonitor
+
+
+
+ The callback to call when the user is
+ active again.
+
+
+
+ The user data to pass to the callback
+
+
+
+ A #GDestroyNotify
+
+
+
+
+
+
+
+ The current idle time, in milliseconds
+
+
+
+
+ A #GnomeIdleMonitor
+
+
+
+
+
+ Removes an idle time watcher, previously added by
+gnome_idle_monitor_add_idle_watch() or
+gnome_idle_monitor_add_user_active_watch().
+
+
+
+
+
+
+ A #GnomeIdleMonitor
+
+
+
+ A watch ID
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a reference to a #GnomePnpIds object, or creates
+a new one if none have been created.
+
+
+ a #GnomePnpIds object.
+
+
+
+
+ Find the full manufacturer name for the given PNP ID.
+
+
+ a new string representing the manufacturer name,
+or %NULL when not found.
+
+
+
+
+ a #GnomePnpIds object
+
+
+
+ the PNP ID to look for
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Creates a new #GnomeWallClock
+
+
+ the new clock
+
+
+
+
+ Returns the string representing the current time of this clock
+according to the user settings.
+
+
+ the time of the clock as a string.
+ This string points to internally allocated storage and
+ must not be freed, modified or stored.
+
+
+
+
+ a #GnomeWallClock
+
+
+
+
+
+ Returns the current local time zone used by this clock.
+
+
+ the #GTimeZone of the clock.
+
+
+
+
+ a #GnomeWallClock
+
+
+
+
+
+
+
+ a newly allocated string representing the date & time
+passed, with the options applied.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A formatted string representing the current clock display.
+
+
+
+ If %TRUE, the formatted clock will always have seconds precision and the
+'clock' property will always be updated every second, irrespective of
+system configuration.
+
+
+
+ If %TRUE, the formatted clock will never include a date or the
+day of the week, irrespective of configuration.
+
+
+
+ The timezone used for this clock
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ a new #GnomeXkbInfo instance.
+
+
+
+
+
+
+ the translated description for the group @group_id.
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ identifier for group
+
+
+
+
+
+
+
+ the translated description for the option @id.
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ identifier for group containing the option
+
+
+
+ option identifier
+
+
+
+
+
+ Returns a list of all layout identifiers we know about.
+
+
+ the list
+of layout names. The caller takes ownership of the #GList but not
+of the strings themselves, those are internally allocated and must
+not be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+
+
+ Returns a list of all option group identifiers we know about.
+
+
+ the list
+of option group ids. The caller takes ownership of the #GList but
+not of the strings themselves, those are internally allocated and
+must not be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+
+
+ Returns a list of all languages supported by a layout, given by
+@layout_id.
+
+
+ the list of
+ISO 639 code strings. The caller takes ownership of the #GList but
+not of the strings themselves, those are internally allocated and
+must not be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ a layout identifier
+
+
+
+
+
+ Retrieves information about a layout. Both @display_name and
+@short_name are suitable to show in UIs and might be localized if
+translations are available.
+
+Some layouts don't provide a short name (2 or 3 letters) or don't
+specify a XKB variant, in those cases @short_name or @xkb_variant
+are empty strings, i.e. "".
+
+If the given layout doesn't exist the return value is %FALSE and
+all the (out) parameters are set to %NULL.
+
+
+ %TRUE if the layout exists or %FALSE otherwise.
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ layout's identifier about which to retrieve the info
+
+
+
+ location to store
+the layout's display name, or %NULL
+
+
+
+ location to store
+the layout's short name, or %NULL
+
+
+
+ location to store
+the layout's XKB name, or %NULL
+
+
+
+ location to store
+the layout's XKB variant, or %NULL
+
+
+
+
+
+ Returns a list of all layout identifiers we know about for
+@country_code.
+
+
+ the list
+of layout ids. The caller takes ownership of the #GList but not of
+the strings themselves, those are internally allocated and must not
+be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ an ISO 3166 code string
+
+
+
+
+
+ Returns a list of all layout identifiers we know about for
+@language_code.
+
+
+ the list
+of layout ids. The caller takes ownership of the #GList but not of
+the strings themselves, those are internally allocated and must not
+be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ an ISO 639 code string
+
+
+
+
+
+ Returns a list of all option identifiers we know about for group
+@group_id.
+
+
+ the list
+of option ids. The caller takes ownership of the #GList but not of
+the strings themselves, those are internally allocated and must not
+be modified.
+
+
+
+
+
+
+ a #GnomeXkbInfo
+
+
+
+ group's identifier about which to retrieve the options
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns whether the thumbnail has the correct uri and mtime embedded in the
+png options. This function is threadsafe and does no blocking I/O.
+
+
+ TRUE if the thumbnail has the right @uri and @mtime
+
+
+
+
+ an loaded thumbnail #GdkPixbuf
+
+
+
+ a uri
+
+
+
+ the mtime
+
+
+
+
+
+ Returns the filename that a thumbnail of size @size for @uri would have.
+This function is threadsafe and does no blocking I/O.
+
+
+ an absolute filename
+
+
+
+
+ an uri
+
+
+
+ a thumbnail size
+
+
+
+
+
+ Gets all locales.
+
+
+
+ a newly allocated %NULL-terminated string array containing the
+ all locales. Free with g_strfreev().
+
+
+
+
+
+
+ Gets the country name for @code. If @translation is provided the
+returned string is translated accordingly.
+
+
+ the country name. Caller takes
+ownership.
+
+
+
+
+ an ISO 3166 code string
+
+
+
+ a locale string
+
+
+
+
+
+ Gets the country description for @locale. If @translation is
+provided the returned string is translated accordingly.
+
+
+ the country description. Caller
+takes ownership.
+
+
+
+
+ a locale string
+
+
+
+ a locale string
+
+
+
+
+
+ Gets the default input source's type and identifier for a given
+locale.
+
+
+ %TRUE if a input source exists or %FALSE otherwise.
+
+
+
+
+ a locale string
+
+
+
+ location to store the input source
+type
+
+
+
+ location to store the input source
+identifier
+
+
+
+
+
+ Gets the language name for @code. If @translation is provided the
+returned string is translated accordingly.
+
+
+ the language name. Caller takes
+ownership.
+
+
+
+
+ an ISO 639 code string
+
+
+
+ a locale string
+
+
+
+
+
+ Gets the language description for @locale. If @translation is
+provided the returned string is translated accordingly.
+
+
+ the language description. Caller
+takes ownership.
+
+
+
+
+ a locale string
+
+
+
+ a locale string
+
+
+
+
+
+ Returns an integer with the major version of GNOME. Useful for
+dynamic languages like Javascript or Python (static languages like
+C should use %GNOME_DESKTOP_PLATFORM_VERSION). If this
+function doesn't exist, it can be presumed that the GNOME platform
+version is 42 or previous.
+
+
+ an integer with the major version of GNOME.
+
+
+
+
+ Gets a translation of the raw @modifier string. If @translation
+is provided the returned string is translated accordingly.
+
+
+ the translated modifier string.
+Caller takes ownership.
+
+
+
+
+ the modifier part of a locale name
+
+
+
+ a locale string
+
+
+
+
+
+ #GnomeDesktopThumbnailFactory allows generation and loading of thumbnails for
+local and remote files and directories. It uses a collection of programs
+called <firstterm>thumbnailers</firstterm>, each one generating thumbnails
+for a specific set of content-types of files. For example,
+<application>totem-video-thumbnailer</application> generates thumbnails for
+video files using GStreamer; <application>evince-thumbnailer</application>
+generates thumbnails for PDFs and other document files. If no specific
+thumbnailer exists for a file, or if the thumbnailer fails, gdk-pixbuf is
+used as a fallback.
+
+To generate a thumbnail, an appropriate thumbnailer program is selected then
+executed, passing it the URI of the file to thumbnail, plus a path to write
+the thumbnail image to. If thumbnailing succeeds, the thumbnailer should have
+written the image to disk before terminating; but if thumbnailing fails, no
+image should be written, and the thumbnailer should return a non-zero exit
+status. #GnomeDesktopThumbnailFactory will then fall back to using gdk-pixbuf
+to generate a thumbnail, if possible.
+
+Thumbnailers are chosen by examining a series of
+<filename>.thumbnailer</filename> files in
+<filename><replaceable>$PREFIX</replaceable>/share/thumbnailers</filename>.
+Each is in a simple key-file format:
+<informalexample><programlisting>
+[Thumbnailer Entry]
+Exec=evince-thumbnailer -s %s %u %o
+MimeType=application/pdf;application/x-bzpdf;application/x-gzpdf;
+</programlisting></informalexample>
+
+The <filename>.thumbnailer</filename> format supports three keys:
+<variablelist>
+<varlistentry><term><code>Exec</code></term><listitem><para>
+Required. The command to execute the thumbnailer. It supports a few different
+parameters which are replaced before calling the thumbnailer:
+<replaceable>%u</replaceable> is the URI of the file being thumbnailed;
+<replaceable>%i</replaceable> is its path; <replaceable>%o</replaceable>
+is the path of the image file to be written to;
+<replaceable>%s</replaceable> is the maximum desired size of the thumbnail
+image (the maximum width or height, in pixels); and
+<replaceable>%%</replaceable> is a literal percent character.
+</para></listitem></varlistentry>
+<varlistentry><term><code>MimeType</code></term><listitem><para>
+Required. A semicolon-separated list of MIME types which the thumbnailer
+supports generating thumbnails for.
+</para></listitem></varlistentry>
+</variablelist>
+
+So in the example <filename>.thumbnailer</filename> file above, the command
+passes the requested thumbnail size, then the input file’s URI, then the
+path for the output image file to
+<application>evince-thumbnailer</application>.
+
+The code to examine and call a thumbnailer is contained in
+#GnomeDesktopThumbnailFactory, which handles looking up the right thumbnailer
+script, building and executing the command for it, and loading the resulting
+thumbnail image into a #GdkPixbuf.
+
+Thumbnail caching is also supported by #GnomeDesktopThumbnailFactory. When
+calling a thumbnailer, the path passed for the output image file is in
+<filename><envar>$XDG_CACHE_HOME</envar>/thumbnails/
+<replaceable>$SIZE</replaceable>/</filename>. The cached image file is given
+a (probably) unique filename, generated by hashing the original file’s URI,
+so the thumbnail can be looked up in future. #GnomeDesktopThumbnailFactory
+supports two sizes of thumbnails: %GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL and
+%GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE. Normal thumbnails are up to 128×128
+pixels, whereas large thumbnails are up to 256×256 pixels. Thumbnails which
+are larger than this are scaled down before being cached, and non-square
+thumbnails are scaled so their largest dimension is at most 128 or 256
+pixels.
+
+#GnomeDesktopThumbnailFactory also handles failed thumbnails. If a
+thumbnailer can’t generate a thumbnail for a file (e.g. because the file is
+corrupt or because the right video codecs aren’t available), it returns a
+non-zero exit status. The thumbnail factory then writes an entry to
+<filename><envar>$XDG_CACHE_HOME</envar>/thumbnails/fail/
+gnome-thumbnail-factory/</filename> which is named after the hash of the
+input file URI (just like a successful cached thumbnail). For future queries
+for thumbnails for that file, #GnomeDesktopThumbnailFactory can immediately
+return an error after looking up the fail entry.
+
+If a file changes content, #GnomeDesktopThumbnailFactory will generate a new
+thumbnail because each cached image has associated metadata (stored as PNG
+tEXt keys) storing the full URI of the thumbnailed file (to check for hash
+collisions) and its last modification time at the point of thumbnailing. If
+the stored modification time doesn’t match the file’s current one, a new
+thumbnail is generated.
+
+
+ Returns %TRUE if there are translations for language @code.
+
+
+ %TRUE if there are translations for language @code.
+
+
+
+
+ an ISO 639 code string
+
+
+
+
+
+ Gets the normalized locale string in the form
+[language[_country][.codeset][@modifier]] for @name.
+
+
+ normalized locale string. Caller
+takes ownership.
+
+
+
+
+ a locale string
+
+
+
+
+
+ Extracts the various components of a locale string in XPG format.
+([language[_country][.codeset][@modifier]]). See
+http://en.wikipedia.org/wiki/Locale.
+
+
+ %TRUE if parsing was successful.
+
+
+
+
+ a locale string
+
+
+
+ location to
+store the language code, or %NULL
+
+
+
+ location to
+store the country code, or %NULL
+
+
+
+ location to
+store the codeset, or %NULL
+
+
+
+ location to
+store the modifier, or %NULL
+
+
+
+
+
+ If the current process is running inside a user systemd instance, then move
+the launched PID into a transient scope. The given @name will be used to
+create a unit name. It should be the application ID or the executable in all
+other cases. If a desktop-id is passed then the .desktop suffix will be
+stripped.
+
+It is advisable to use this function every time where the started application
+can be considered reasonably independent of the launching application. Placing
+it in a scope creates proper separation between the programs rather than being
+considered a single entity by systemd.
+
+It is always safe to call this function. Note that a successful return code
+does not imply that a unit has been created. It solely means that no error
+condition was hit sending the request.
+
+If @connection is %NULL then g_dbus_get() will be called internally.
+
+Note that most callers will not need to handle errors. As such, it is normal
+to pass a %NULL @callback.
+
+
+
+
+
+
+ Name for the application
+
+
+
+ The PID of the application
+
+
+
+ A description to use for the unit, or %NULL
+
+
+
+ An #GDBusConnection to the session bus, or %NULL
+
+
+
+ #GCancellable to use
+
+
+
+ Callback to call when the operation is done
+
+
+
+ Data to be passed to @callback
+
+
+
+
+
+ Finish an asynchronous operation to create a transient scope that was
+started with gnome_start_systemd_scope().
+
+Note that a successful return code does not imply that a unit has been
+created. It solely means that no error condition was hit sending the request.
+
+
+ %FALSE on error, %TRUE otherwise
+
+
+
+
+ A #GAsyncResult
+
+
+
+
+
+
diff --git a/libphosh-rs/Handy-1.gir b/libphosh-rs/Handy-1.gir
deleted file mode 100644
index dacab264b..000000000
--- a/libphosh-rs/Handy-1.gir
+++ /dev/null
@@ -1,17212 +0,0 @@
-
-
-
-
-
-
-
-
-
- A [class@Gtk.ListBoxRow] used to present actions.
-
-The `HdyActionRow` 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.
-
-It is convenient to present a preference and its related actions.
-
-`HdyActionRow` is unactivatable by default, giving it an activatable widget
-will automatically make it activatable, but unsetting it won't change the
-row's activatability.
-
-## HdyActionRow as GtkBuildable
-
-The `HdyActionRow` 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
-
-`HdyActionRow` 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.
-
-
-
-
-
- Creates a new `HdyActionRow`.
-
-
- the newly created `HdyActionRow`
-
-
-
-
- Activates @self.
-
-
-
-
-
-
- an action row
-
-
-
-
-
- Activates @self.
-
-
-
-
-
-
- an action row
-
-
-
-
-
- Adds a prefix widget to @self.
-
-
-
-
-
-
- an action row
-
-
-
- the prefix widget
-
-
-
-
-
-
- Gets the widget activated when @self is activated.
-
-
- the activatable widget for @self
-
-
-
-
- an action row
-
-
-
-
-
-
- Gets the icon name for @self.
-
-
- the icon name for @self
-
-
-
-
- an action row
-
-
-
-
-
-
- Gets the subtitle for @self.
-
-
- the subtitle for @self
-
-
-
-
- an action row
-
-
-
-
-
-
- Gets the number of lines at the end of which the subtitle label will be
-ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
- the number of lines at the end of which the subtitle label will be
- ellipsized
-
-
-
-
- an action row
-
-
-
-
-
-
- Gets the number of lines at the end of which the title label will be
-ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
- the number of lines at the end of which the title label will be
- ellipsized
-
-
-
-
- an action row
-
-
-
-
-
-
- Gets whether an embedded underline in the title or subtitle indicates a
-mnemonic.
-
-
- whether an embedded underline in the title or subtitle indicates a
- mnemonic
-
-
-
-
- an action row
-
-
-
-
-
-
- Sets the widget to activate when @self is activated.
-
-
-
-
-
-
- an action row
-
-
-
- the target widget
-
-
-
-
-
-
- Sets the icon name for @self.
-
-
-
-
-
-
- an action row
-
-
-
- the icon name
-
-
-
-
-
-
- Sets the subtitle for @self.
-
-
-
-
-
-
- an action row
-
-
-
- the subtitle
-
-
-
-
-
-
- Sets the number of lines at the end of which the subtitle label will be
-ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
-
-
-
-
- an action row
-
-
-
- the number of lines at the end of which the subtitle label will be ellipsized
-
-
-
-
-
-
- Sets the number of lines at the end of which the title label will be
-ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
-
-
-
-
- an action row
-
-
-
- the number of lines at the end of which the title label will be ellipsized
-
-
-
-
-
-
- Sets whether an embedded underline in the title or subtitle indicates a
-mnemonic.
-
-
-
-
-
-
- an action row
-
-
-
- `TRUE` if underlines in the text indicate mnemonics
-
-
-
-
-
-
-
- The activatable widget for this row.
-
-The widget is activated, either by clicking on it, by calling
-[method@ActionRow.activate], or via mnemonics in the title or the subtitle.
-See the [property@ActionRow:use-underline] property to enable mnemonics.
-
-The target widget will be activated by emitting the
-[signal@Gtk.Widget::mnemonic-activate] signal on it.
-
-
-
-
-
- The icon name for this row.
-
-
-
-
-
- The subtitle for this row.
-
-
-
-
-
- The number of lines at the end of which the subtitle label will be
-ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
-
-
-
- The number of lines at the end of which the title label will be ellipsized.
-
-If the value is 0, the number of lines won't be limited.
-
-
-
-
-
- Whether embedded underlines in the title or subtitle indicates a mnemonic.
-
-If true, an underline in the text of the title or subtitle labels indicates
-the next character should be used for the mnemonic accelerator key.
-
-
-
-
-
-
- This signal is emitted after the row has been activated.
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
-
- an action row
-
-
-
-
-
-
-
-
-
-
-
-
- A freeform application window.
-
-`HdyApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
-the same features as [class@Window].
-
-See [class@Window] for details.
-
-Using [method@Gtk.Application.set_app_menu] and
-[method@Gtk.Application.set_menubar] is not supported and may result in
-visual glitches.
-
-
-
-
-
-
- Creates a new `HdyApplicationWindow`.
-
-
- the newly created `HdyApplicationWindow`
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A widget displaying an image, with a generated fallback.
-
-`HdyAvatar` is a widget to display a round avatar.
-
-A provided image is made round before displaying, if no image is given this
-widget generates a round fallback with the initials of the
-[property@Avatar:text] on top of a colored background.
-
-The color is picked based on the hash of the [property@Avatar:text].
-
-If [property@Avatar:show-initials] is set to `FALSE`,
-`avatar-default-symbolic` is shown instead of the initials.
-
-Use [method@Avatar.set_loadable_icon] or [property@Avatar:loadable-icon] to
-set a custom image.
-
-## CSS nodes
-
-`HdyAvatar` has a single CSS node with name `avatar`.
-
-
-
-
- Creates a new `HdyAvatar`.
-
-
- the newly created `HdyAvatar`
-
-
-
-
- the size of the avatar
-
-
-
- the text used to get the initials and color
-
-
-
- whether to use initials instead of an icon as fallback
-
-
-
-
-
- Renders @self into a [class@GdkPixbuf.Pixbuf] at @size and @scale_factor.
-
-This can be used to export the fallback avatar.
-
-
- the pixbuf
-
-
-
-
- an avatar
-
-
-
- the size of the pixbuf
-
-
-
- the scale factor
-
-
-
-
-
- Renders asynchronously @self into a pixbuf at @size and @scale_factor.
-
-This can be used to export the fallback avatar.
-
-
-
-
-
-
- an avatar
-
-
-
- the size of the pixbuf
-
-
-
- the scale factor
-
-
-
- a cancellable
-
-
-
- a [callback@Gio.AsyncReadyCallback] to call when
- the avatar is generated
-
-
-
- the data to pass to callback function
-
-
-
-
-
- Finishes an asynchronous draw of an avatar to a pixbuf.
-
-
- the resulting pixbuf
-
-
-
-
- an avatar
-
-
-
- a [iface@Gio.AsyncResult]
-
-
-
-
-
-
- Gets the name of an icon to use as a fallback.
-
-
- the icon name
-
-
-
-
- an avatar
-
-
-
-
-
-
- Gets the [iface@Gio.LoadableIcon] set via [method@Avatar.set_loadable_icon].
-
-
- the [iface@Gio.LoadableIcon]
-
-
-
-
- an avatar
-
-
-
-
-
-
- Gets whether initials are used instead of an icon on the fallback avatar.
-
-
- whether initials are used instead of an icon as fallback
-
-
-
-
- an avatar
-
-
-
-
-
-
- Gets the size of the avatar.
-
-
- the size of the avatar
-
-
-
-
- an avatar
-
-
-
-
-
-
- Gets the text used to generate the fallback initials and color.
-
-
- the text used to generate the fallback initials and
- color
-
-
-
-
- an avatar
-
-
-
-
-
-
- Sets the name of an icon to use as a fallback.
-
-If no name is set, `avatar-default-symbolic` will be used.
-
-
-
-
-
-
- an avatar
-
-
-
- the name of the icon from the icon theme
-
-
-
-
-
- A callback which is called when the custom image needs to be reloaded.
-
-It will be called on [property@Avatar:size] or
-[property@Gtk.Widget:scale-factor] changes.
- use [method@Avatar.set_loadable_icon] instead.
-
-
-
-
-
-
- an avatar
-
-
-
- callback to set a custom image
-
-
-
- user data passed to @load_image
-
-
-
- destroy notifier for @user_data
-
-
-
-
-
-
- Sets the [iface@Gio.LoadableIcon] to use as an avatar.
-
-The previous avatar is displayed till the new avatar is loaded, to
-immediately remove the custom avatar set the loadable-icon to `NULL`.
-
-The [iface@Gio.LoadableIcon] set via this function is preferred over a set
-[callback@AvatarImageLoadFunc].
-
-
-
-
-
-
- an avatar
-
-
-
- a [iface@Gio.LoadableIcon]
-
-
-
-
-
-
- Sets whether to use initials instead of an icon on the fallback avatar.
-
-
-
-
-
-
- an avatar
-
-
-
- whether to use initials instead of an icon as fallback
-
-
-
-
-
-
- Sets the size of the avatar.
-
-
-
-
-
-
- an avatar
-
-
-
- the size to be used for the avatar
-
-
-
-
-
-
- Set the text used to generate the fallback initials color.
-
-
-
-
-
-
- an avatar
-
-
-
- the text used to get the initials and color
-
-
-
-
-
-
-
- The name of an icon to use as a fallback.
-
-If no name is set, the avatar-default-symbolic icon will be used. If the
-name doesn't match a valid icon, it is an error and no icon will be
-displayed. If the icon theme is changed, the image will be updated
-automatically.
-
-
-
-
-
- A [iface@Gio.LoadableIcon] used to load the avatar.
-
-
-
-
-
- Whether to show the initials or the fallback icon on the generated avatar.
-
-
-
-
-
- The avatar size of the avatar.
-
-
-
-
-
- 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
-`FALSE`.
-
-
-
-
-
-
-
-
-
-
- Callback for loading an [class@Avatar]'s image.
-
-The returned [class@GdkPixbuf.Pixbuf] is expected to be square with width and
-height set to @size. The image is cropped to a circle without any scaling or
-transformation.
- use [method@Avatar.set_loadable_icon] instead.
-
-
- the pixbuf to use as a custom avatar or
- `NULL` to fallback to the generated avatar
-
-
-
-
- the required size of the avatar
-
-
-
- user data
-
-
-
-
-
- A paginated scrolling widget.
-
-The `HdyCarousel` widget can be used to display a set of pages with
-swipe-based navigation between them.
-
-[class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used
-to provide page indicators for `HdyCarousel`.
-
-## CSS nodes
-
-`HdyCarousel` has a single CSS node with name `carousel`.
-
-
-
-
-
-
- Creates a new `HdyCarousel`.
-
-
- the newly created `HdyCarousel`
-
-
-
-
-
- Gets whether to allow swiping for more than one page at a time.
-
-
- `TRUE` if long swipes are allowed
-
-
-
-
- a carousel
-
-
-
-
-
-
- Sets whether @self can be dragged with mouse pointer.
-
-
- `TRUE` if @self can be dragged with mouse
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets whether @self will respond to scroll wheel events.
-
-
- `TRUE` if @self will respond to scroll wheel events
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets animation duration used by [method@Carousel.scroll_to].
-
-
- animation duration, in milliseconds
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets whether @self can be navigated.
-
-
- `TRUE` if @self can be swiped
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets the number of pages in @self.
-
-
- the number of pages in @self
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets current scroll position in @self. It's unitless, 1 matches 1 page.
-
-
- the scroll position
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets duration of the animation used when adding or removing pages, in
-milliseconds.
-
-
- the duration
-
-
-
-
- a carousel
-
-
-
-
-
-
- Gets spacing between pages in pixels.
-
-
- spacing between pages
-
-
-
-
- a carousel
-
-
-
-
-
- Inserts @child into @self at position @position.
-
-If position is -1, or larger than the number of pages, @child will be
-appended to the end.
-
-
-
-
-
-
- a carousel
-
-
-
- a widget to add
-
-
-
- the position to insert @child in
-
-
-
-
-
- Prepends @child to @self.
-
-
-
-
-
-
- a carousel
-
-
-
- a widget to add
-
-
-
-
-
- Moves @child into position @position.
-
-If position is -1, or larger than the number of pages, @child will be moved
-to the end.
-
-
-
-
-
-
- a carousel
-
-
-
- a widget to add
-
-
-
- the position to move @child to
-
-
-
-
-
- Scrolls to @widget position with an animation.
-
-[property@Carousel:animation-duration] property can be used for controlling
-the duration.
-
-
-
-
-
-
- a carousel
-
-
-
- a child of @self
-
-
-
-
-
- Scrolls to @widget position with an animation.
-
-
-
-
-
-
- a carousel
-
-
-
- a child of @self
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
-
- Sets whether to allow swiping for more than one page at a time.
-
-
-
-
-
-
- a carousel
-
-
-
- whether to allow long swipes
-
-
-
-
-
-
- Sets whether @self can be dragged with mouse pointer.
-
-If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
-
-
-
-
-
-
- a carousel
-
-
-
- whether @self can be dragged with mouse pointer
-
-
-
-
-
-
- Sets whether @self will respond to scroll wheel events.
-
-
-
-
-
-
- a carousel
-
-
-
- whether @self will respond to scroll wheel events
-
-
-
-
-
-
- Sets animation duration used by [method@Carousel.scroll_to].
-
-
-
-
-
-
- a carousel
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
-
- Sets whether @self can be navigated.
-
-This can be used to temporarily disable a [class@Carousel] to only allow
-swiping in a certain state.
-
-
-
-
-
-
- a carousel
-
-
-
- whether @self can be swiped
-
-
-
-
-
-
- Sets duration of the animation used when adding or removing pages, in
-milliseconds.
-
-
-
-
-
-
- a carousel
-
-
-
- the new reveal duration value
-
-
-
-
-
-
- Sets spacing between pages in pixels.
-
-
-
-
-
-
- a carousel
-
-
-
- the new spacing value
-
-
-
-
-
-
-
- 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.
-
-
-
-
-
- Sets whether the [class@Carousel] can be dragged with mouse pointer.
-
-If the value is `FALSE`, dragging is only available on touch.
-
-
-
-
-
- Whether the widget will respond to scroll wheel events.
-
-If the value is `FALSE`, wheel events will be ignored.
-
-
-
-
-
- Animation duration used by [method@Carousel.scroll_to], in milliseconds.
-
-
-
-
-
- Whether the carousel can be navigated.
-
-This can be used to temporarily disable a `HdyCarousel` to only allow
-navigating it in a certain state.
-
-
-
-
- The number of pages in a [class@Carousel].
-
-
-
-
- Current scrolling position, unitless.
-
-1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
-
-
-
-
-
- Page reveal duration, in milliseconds.
-
-
-
-
-
- Spacing between pages in pixels.
-
-
-
- This signal is emitted after a page has been changed.
-
-It can be used to implement "infinite scrolling" by amending the pages
-after every scroll.
-
-
-
-
-
- the current page
-
-
-
-
-
-
-
-
-
-
-
-
- A dots indicator for [class@Carousel].
-
-The `HdyCarouselIndicatorDots` widget shows a set of dots for each page of a
-given [class@Carousel]. The dot representing the carousel's active page is
-larger and more opaque than the others, the transition to the active and
-inactive state is gradual to match the carousel's position.
-
-See also [class@CarouselIndicatorLines].
-
-## CSS nodes
-
-`HdyCarouselIndicatorDots` has a single CSS node with name
-`carouselindicatordots`.
-
-
-
-
-
- Creates a new `HdyCarouselIndicatorDots`.
-
-
- The newly created `HdyCarouselIndicatorDots`
-
-
-
-
-
- Get the [class@Carousel] the indicator uses.
-
-
- the [class@Carousel]
-
-
-
-
- an indicator
-
-
-
-
-
-
- Sets the [class@Carousel] to use.
-
-
-
-
-
-
- an indicator
-
-
-
- a carousel
-
-
-
-
-
-
-
- The [class@Carousel] the indicator uses.
-
-
-
-
-
-
-
-
-
-
- A lines indicator for [class@Carousel].
-
-The `HdyCarouselIndicatorLines` widget shows a set of lines for each page of
-a given [class@Carousel]. The carousel's active page is shown as another line
-that moves between them to match the carousel's position.
-
-See also [class@CarouselIndicatorDots].
-
-## CSS nodes
-
-`HdyCarouselIndicatorLines` has a single CSS node with name
-`carouselindicatorlines`.
-
-
-
-
-
- Creates a new `HdyCarouselIndicatorLines`.
-
-
- the newly created `HdyCarouselIndicatorLines`
-
-
-
-
-
- Gets the displayed carousel.
-
-
- the displayed carousel
-
-
-
-
- an indicator
-
-
-
-
-
-
- Sets the [class@Carousel] to use.
-
-
-
-
-
-
- an indicator
-
-
-
- a carousel
-
-
-
-
-
-
-
- The displayed carousel.
-
-
-
-
-
-
-
-
-
-
- Describes title centering behavior of a [class@HeaderBar] widget.
-
- Keep the title centered when possible
-
-
- Keep the title centered at all cost
-
-
-
- A widget constraining its child to a given size.
-
-The `HdyClamp` 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
-height if it is vertical. The expansion of the child from its minimum to its
-maximum size is eased out for a smooth transition.
-
-If the child requires more than the requested maximum size, it will be
-allocated the minimum size it can fit in instead.
-
-## CSS nodes
-
-`HdyClamp` has a single CSS node with name `clamp`.
-
-The node will get the style classes `.large` when its child reached its
-maximum size, `.small` when the clamp allocates its full size to its child,
-`.medium` in-between, or none if it didn't compute its size yet.
-
-
-
-
-
- Creates a new `HdyClamp`.
-
-
- the newly created `HdyClamp`
-
-
-
-
-
- Gets the maximum size allocated to the children.
-
-
- the maximum size to allocate to the children
-
-
-
-
- a clamp
-
-
-
-
-
-
- Gets the size above which the children are clamped.
-
-
- the size above which the children are clamped
-
-
-
-
- a clamp
-
-
-
-
-
-
- Sets the maximum size allocated to the children.
-
-
-
-
-
-
- a clamp
-
-
-
- the maximum size
-
-
-
-
-
-
- Sets the size above which the children are clamped.
-
-
-
-
-
-
- a clamp
-
-
-
- the tightening threshold
-
-
-
-
-
-
-
- The maximum size to allocate the children.
-
-It is the width if the clamp is horizontal, or the height if it is
-vertical.
-
-
-
-
-
- The size above which the child is clamped.
-
-Starting from this size, the layout will tighten its grip on the children,
-slowly allocating less and less of the available size up to the maximum
-allocated size. Below that threshold and below the maximum size, the
-children will be allocated all the available size.
-
-If the threshold is greater than the maximum size to allocate to the
-children, they will be allocated the whole size up to the maximum. If the
-threshold is lower than the minimum size to allocate to the children, that
-size will be used as the tightening threshold.
-
-Effectively, tightening the grip on a child before it reaches its maximum
-size makes transitions to and from the maximum size smoother when resizing.
-
-
-
-
-
-
-
-
-
-
- Application color schemes for [property@StyleManager:color-scheme].
-
- Inherit the parent color-scheme. When set on the
- [class@StyleManager] returned by [func@StyleManager.get_default], it's
- equivalent to `HDY_COLOR_SCHEME_FORCE_LIGHT`.
-
-
- Always use light appearance.
-
-
- Use light appearance unless the system
- prefers dark colors.
-
-
- Use dark appearance unless the system prefers
- light colors.
-
-
- Always use dark appearance.
-
-
-
- A [class@Gtk.ListBoxRow] used to choose from a list of items.
-
-The `HdyComboRow` widget allows the user to choose from a list of valid
-choices. The row displays the selected choice. When activated, the row
-displays a popover which allows the user to make a new choice.
-
-The [class@ComboRow] uses the model-view pattern; the list of valid choices
-is specified in the form of a [iface@Gio.ListModel], and the display of the
-choices can be adapted to the data in the model via widget creation
-functions.
-
-`HdyComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set.
-
-## CSS nodes
-
-`HdyComboRow` has a main CSS node with name `row`.
-
-Its popover has the node name popover with the `.combo` style class, it
-contains a [class@Gtk.ScrolledWindow], which in turn contains a
-[class@Gtk.ListBox], both are accessible via their regular nodes.
-
-A checkmark of node and style class `image.checkmark` in the popover denotes
-the current item.
-
-
-
-
-
- Creates a new `HdyComboRow`.
-
-
- the newly created `HdyComboRow`
-
-
-
-
- Binds @model to @self.
-
-If @self was already bound to a model, that previous binding is destroyed.
-
-The contents of @self are cleared and then filled with widgets that represent
-items from @model. @self is updated whenever @model changes. If @model is
-`NULL`, @self is left empty.
-
-
-
-
-
-
- a combo row
-
-
-
- the [iface@Gio.ListModel] to be bound to @self
-
-
-
- a function that creates
- widgets for items to display in the list, or `NULL` in case you also passed
- `NULL` as @model
-
-
-
- a function that creates
- widgets for items to display as the selected item, or `NULL` in case you
- also passed `NULL` as @model
-
-
-
- user data passed to @create_list_widget_func and
- @create_current_widget_func
-
-
-
- function for freeing @user_data
-
-
-
-
-
- Binds @model to @self.
-
-If @self was already bound to a model, that previous binding is destroyed.
-
-The contents of @self are cleared and then filled with widgets that represent
-items from @model. @self is updated whenever @model changes. If @model is
-`NULL`, @self is left empty.
-
-This is more convenient to use than [method@ComboRow.bind_model] if you want
-to represent items of the model with names.
-
-
-
-
-
-
- a combo row
-
-
-
- the [iface@Gio.ListModel] to be bound to @self
-
-
-
- a function that creates names for items, or
- `NULL` in case you also passed `NULL` as @model
-
-
-
- user data passed to @get_name_func
-
-
-
- function for freeing @user_data
-
-
-
-
-
- Gets the model bound to @self.
-
-
- the [iface@Gio.ListModel] bound to @self
-
-
-
-
- a combo row
-
-
-
-
-
-
- Gets the index of the selected item in its [iface@Gio.ListModel].
-
-
- the index of the selected item, or -1 if no item is selected
-
-
-
-
- a combo row
-
-
-
-
-
-
- Gets whether the current value of @self should be displayed as its subtitle.
-
-
- whether the current value of @self should be displayed as its
- subtitle
-
-
-
-
- a combo row
-
-
-
-
-
- Creates a model for @enum_type and binds it to @self.
-
-The items of the model will be [class@EnumValueObject] objects.
-
-If @self was already bound to a model, that previous binding is destroyed.
-
-The contents of @self are cleared and then filled with widgets that represent
-items from @model. @self is updated whenever @model changes. If @model is
-`NULL`, @self is left empty.
-
-This is more convenient to use than [method@ComboRow.bind_name_model] if you
-want to represent values of an enumeration with names.
-
-See [func@enum_value_row_name].
-
-
-
-
-
-
- a combo row
-
-
-
- the enumeration [alias@GLib.Type] to be bound to @self
-
-
-
- a function that creates names for items, or
- `NULL` in case you also passed `NULL` as @model
-
-
-
- user data passed to @get_name_func
-
-
-
- function for freeing @user_data
-
-
-
-
-
- Sets a closure to convert items into names.
-
-See [property@ComboRow:use-subtitle].
-
-
-
-
-
-
- a combo row
-
-
-
- a function that creates names for items, or
- `NULL` in case you also passed `NULL` as @model
-
-
-
- user data passed to @get_name_func
-
-
-
- function for freeing @user_data
-
-
-
-
-
-
- Sets the index of the selected item in its [iface@Gio.ListModel].
-
-
-
-
-
-
- a combo row
-
-
-
- the index of the selected item
-
-
-
-
-
-
- Sets whether the current value of @self should be displayed as its subtitle.
-
-If `TRUE`, you should not access [property@ActionRow:subtitle].
-
-
-
-
-
-
- a combo row
-
-
-
- `TRUE` to set the current value as the subtitle
-
-
-
-
-
-
-
- The index of the selected item in its [iface@Gio.ListModel].
-
-
-
-
-
- Whether to use the current value as the subtitle.
-
-If you use a custom widget creation function, you will need to give the row
-a name conversion closure with [method@ComboRow.set_get_name_func].
-
-If `TRUE`, you should not access [property@ActionRow:subtitle].
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- Callback for getting the name of a row from an enum.
-
-Called for combo rows that are bound to an enumeration with
-[method@ComboRow.set_for_enum] for each value from that enumeration.
-
-See also: [func@enum_value_row_name].
-
-
- a displayable name that represents @value
-
-
-
-
- the value from the enum from which to get a name
-
-
-
- user data
-
-
-
-
-
- Callback for getting the name of a row.
-
-Called for combo rows that are bound to a [iface@Gio.ListModel] with
-[method@ComboRow.bind_name_model] for each item that gets added to the model.
-
-
- a displayable name that represents @item
-
-
-
-
- the item from the model from which to get a name
-
-
-
- user data
-
-
-
-
-
- A swipeable widget showing one of the visible children at a time.
-
-The `HdyDeck` widget displays one of the visible children, similar to a
-[class@Gtk.Stack]. The children are strictly ordered and can be navigated
-using swipe gestures.
-
-The “over” and “under” stack the children one on top of the other, while the
-“slide” transition puts the children side by side. While navigating to a
-child on the side or below can be performed by swiping the current child
-away, navigating to an upper child requires dragging it from the edge where
-it resides. This doesn't affect non-dragging swipes.
-
-The “over” and “under” transitions can draw their shadow on top of the
-window's transparent areas, like the rounded corners. This is a side-effect
-of allowing shadows to be drawn on top of OpenGL areas. It can be mitigated
-by using [class@Window] or [class@ApplicationWindow] as they will crop
-anything drawn beyond the rounded corners.
-
-## CSS nodes
-
-`HdyDeck` has a single CSS node with name `deck`.
-
-
-
-
-
-
- Creates a new `HdyDeck`.
-
-
- the newly created `HdyDeck`
-
-
-
-
- Finds the previous or next navigatable child.
-
-Gets the previous or next child. This will be the same widget
-[method@Deck.navigate] will navigate to.
-
-If there's no child to navigate to, `NULL` will be returned instead.
-
-
- the previous or next child
-
-
-
-
- a deck
-
-
-
- the direction
-
-
-
-
-
-
- Gets whether swipe gestures for navigating backward are enabled.
-
-
- Whether swipe gestures are enabled.
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets whether swipe gestures for navigating forward enabled.
-
-
- Whether swipe gestures are enabled.
-
-
-
-
- a deck
-
-
-
-
-
- Finds the child of @self with @name.
-
-Returns `NULL` if there is no child with this name.
-
-
- the requested child of @self
-
-
-
-
- a deck
-
-
-
- the name of the child to find
-
-
-
-
-
- Gets whether @self is homogeneous for the given orientation.
-
-
- whether @self is homogeneous for the given orientation
-
-
-
-
- a deck
-
-
-
- the orientation
-
-
-
-
-
-
- Gets whether @self will interpolate its size when changing the visible child.
-
-
- whether child sizes are interpolated
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets the mode transition animation duration for @self.
-
-
- the mode transition duration, in milliseconds.
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets whether a transition is currently running for @self.
-
-
- whether a transition is currently running
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets the type of animation used for transitions between children.
-
-
- the current transition type of @self
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets the visible child widget.
-
-
- the visible child widget
-
-
-
-
- a deck
-
-
-
-
-
-
- Gets the name of the currently visible child widget.
-
-
- the name of the visible child
-
-
-
-
- a deck
-
-
-
-
-
- Inserts @child in the position after @sibling in the list of children.
-
-If @sibling is `NULL`, inserts @child at the first position.
-
-
-
-
-
-
- a deck
-
-
-
- the widget to insert
-
-
-
- the sibling after which to insert @child
-
-
-
-
-
- Navigates to the previous or next child.
-
-The switch is similar to performing a swipe gesture to go in @direction.
-
-
- whether the visible child was changed
-
-
-
-
- a deck
-
-
-
- the direction
-
-
-
-
-
- Inserts @child at the first position in @self.
-
-
-
-
-
-
- a deck
-
-
-
- the widget to prepend
-
-
-
-
-
- Moves @child to the position after @sibling in the list of children.
-
-If @sibling is `NULL`, move @child to the first position.
-
-
-
-
-
-
- a deck
-
-
-
- the widget to move, must be a child of @self
-
-
-
- the sibling to move @child after
-
-
-
-
-
-
- Sets whether swipe gestures for navigating backward are enabled.
-
-
-
-
-
-
- a deck
-
-
-
- the new value
-
-
-
-
-
-
- Sets whether swipe gestures for navigating forward are enabled.
-
-
-
-
-
-
- a deck
-
-
-
- the new value
-
-
-
-
-
- Sets whether @self is homogeneous for a given orientation.
-
-If set to `FALSE`, different children can have different size along the
-opposite orientation.
-
-
-
-
-
-
- a deck
-
-
-
- the orientation
-
-
-
- `TRUE` to make @self homogeneous
-
-
-
-
-
-
- Sets whether @self will interpolate its size when changing the visible child.
-
-@self will interpolate its size between the current one and the one it'll
-take after changing the visible child, according to the set transition
-duration.
-
-
-
-
-
-
- a deck
-
-
-
- the new value
-
-
-
-
-
-
- Sets the mode transition animation duration for @self.
-
-
-
-
-
-
- a deck
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
- Sets the type of animation used for transitions between children.
-
-The transition type can be changed without problems at runtime, so it is
-possible to change the animation based on the child that is about to become
-current.
-
-
-
-
-
-
- a deck
-
-
-
- the new transition type
-
-
-
-
-
-
- Sets the currently visible widget.
-
-
-
-
-
-
- a deck
-
-
-
- the new child
-
-
-
-
-
-
- Makes the child with the name @name visible.
-
-See [method@Deck.set_visible_child] for more details.
-
-
-
-
-
-
- a deck
-
-
-
- the name of a child
-
-
-
-
-
-
-
- Whether swipe gestures allow switching to the previous child.
-
-
-
-
-
- Whether swipe gestures allow switching to the next child.
-
-
-
-
-
- Horizontally homogeneous sizing.
-
-
-
-
-
- Whether or not the size should smoothly change when changing between
-differently sized children.
-
-
-
-
-
- The transition animation duration, in milliseconds.
-
-
-
-
- Whether or not the transition is currently running.
-
-
-
-
-
- The type of animation that will be used for transitions between children.
-
-The transition type can be changed without problems at runtime, so it is
-possible to change the animation based on the child that is about to become
-current.
-
-
-
-
-
- Vertically homogeneous sizing.
-
-
-
-
-
- The widget currently visible.
-
-The transition is determined by [property@Deck:transition-type] and
-[property@Deck:transition-duration]. The transition can be cancelled by the
-user, in which case visible child will change back to the previously
-visible child.
-
-
-
-
-
- The name of the widget currently visible.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- Describes the possible transitions in a [class@Deck] widget.
-
-New values may be added to this enumeration over time.
-
- Cover the old page or uncover the new page,
- sliding from or towards the end according to orientation, text direction
- and children order
-
-
- Uncover the new page or cover the old page,
- sliding from or towards the start according to orientation, text direction
- and children order
-
-
- Slide from left, right, up or down according
- to the orientation, text direction and the children order
-
-
-
- An object representing an [struct@GObject.EnumValue].
-
-The `HdyEnumValueObject` object represents a [struct@GObject.EnumValue],
-allowing it to be used with [iface@Gio.ListModel].
-
-
- Creates a new `HdyEnumValueObject`.
-
-
- the newly created `HdyEnumValueObject`
-
-
-
-
-
-
-
-
-
- Gets the name of @self.
-
-
- the name of @self
-
-
-
-
- an enum value object
-
-
-
-
-
- Gets the nick of @self.
-
-
- the nick of @self
-
-
-
-
- an enum value object
-
-
-
-
-
- Gets the value of @self.
-
-
- the value of @self
-
-
-
-
- an enum value object
-
-
-
-
-
-
-
-
-
-
-
-
- A [class@Gtk.ListBoxRow] used to reveal widgets.
-
-The `HdyExpanderRow` 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
-disable all that the row contains.
-
-## HdyExpanderRow as GtkBuildable
-
-The `HdyExpanderRow` implementation of the [iface@Gtk.Buildable] interface
-supports adding a child as an action widget by specifying “action” 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
-
-`HdyExpanderRow` 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.
-
-When expanded, `HdyExpanderRow` will add the
-`.checked-expander-row-previous-sibling` style class to its previous sibling,
-and remove it when retracted.
-
-
-
-
-
- Creates a new `HdyExpanderRow`.
-
-
- the newly created `HdyExpanderRow`
-
-
-
-
- Adds an action widget to @self.
-
-
-
-
-
-
- a expander row
-
-
-
- the action widget
-
-
-
-
-
- Adds a prefix widget to @self.
-
-
-
-
-
-
- a expander row
-
-
-
- the prefix widget
-
-
-
-
-
-
- Gets whether the expansion of @self is enabled.
-
-
- whether the expansion of @self is enabled
-
-
-
-
- a expander row
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Gets the icon name for @self.
-
-
- the icon name for @self
-
-
-
-
- a expander row
-
-
-
-
-
-
- Gets whether the switch enabling the expansion of @self is visible.
-
-
- whether the switch enabling the expansion of @self is visible
-
-
-
-
- a expander row
-
-
-
-
-
-
- Gets the subtitle for @self.
-
-
- the subtitle for @self
-
-
-
-
- a expander row
-
-
-
-
-
-
- Gets whether an embedded underline in the title or subtitle labels indicates
-a mnemonic.
-
-
- whether an embedded underlines indicates a mnemonic
-
-
-
-
- a expander row
-
-
-
-
-
-
- Sets whether the expansion of @self is enabled.
-
-
-
-
-
-
- a expander row
-
-
-
- `TRUE` to enable the expansion
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sets the icon name for @self.
-
-
-
-
-
-
- a expander row
-
-
-
- the icon name
-
-
-
-
-
-
- Sets whether the switch enabling the expansion of @self is visible.
-
-
-
-
-
-
- a expander row
-
-
-
- `TRUE` to show the switch enabling the expansion
-
-
-
-
-
-
- Sets the subtitle for @self.
-
-
-
-
-
-
- a expander row
-
-
-
- the subtitle
-
-
-
-
-
-
- Sets whether an embedded underline in the title or subtitle labels indicates
-a mnemonic.
-
-
-
-
-
-
- a expander row
-
-
-
- `TRUE` if underlines in the text indicate mnemonics
-
-
-
-
-
-
-
- Whether expansion is enabled.
-
-
-
-
-
- Whether the row is expanded.
-
-
-
-
-
- The icon name for this row.
-
-
-
-
-
- Whether the switch enabling the expansion is visible.
-
-
-
-
-
- The subtitle for this row.
-
-
-
-
-
- Whether an embedded underline in the title or subtitle labels indicates a
-mnemonic.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- An adaptive container acting like a box or an overlay.
-
-The `HdyFlap` widget can display its children like a [class@Gtk.Box] does or
-like a [class@Gtk.Overlay] does, according to the
-[property@Flap:fold-policy] value.
-
-`HdyFlap` has at most three children: [property@Flap:content],
-[property@Flap:flap] and [property@Flap:separator]. Content is the primary
-child, flap is displayed next to it when unfolded, or overlays it when
-folded. Flap can be shown or hidden by changing the
-[property@Flap:reveal-flap] value, as well as via swipe gestures if
-[property@Flap:swipe-to-open] and/or [property@Flap:swipe-to-close] are set
-to `TRUE`.
-
-Optionally, a separator can be provided, which would be displayed between the
-content and the flap when there's no shadow to separate them, depending on
-the transition type.
-
-[property@Flap:flap] is transparent by default; add the `.background` style
-class to it if this is unwanted.
-
-If [property@Flap:modal] is set to `TRUE`, content becomes completely
-inaccessible when the flap is revealed while folded.
-
-The position of the flap and separator children relative to the content is
-determined by orientation, as well as the [property@Flap:flap-position]
-value.
-
-Folding the flap will automatically hide the flap widget, and unfolding it
-will automatically reveal it. If this behavior is not desired, the
-[property@Flap:locked] property can be used to override it.
-
-Common use cases include sidebars, header bars that need to be able to
-overlap the window content (for example, in fullscreen mode) and bottom
-sheets.
-
-## HdyFlap as GtkBuildable
-
-The `HdyFlap` implementation of the [iface@Gtk.Buildable] interface supports
-setting the flap child by specifying “flap” as the “type” attribute of a
-<child> element, and separator by specifying “separator”. Specifying
-“content” child type or omitting it results in setting the content child.
-
-## CSS nodes
-
-`HdyFlap` has a single CSS node with name `flap`. The node will get the style
-classes `.folded` when it is folded, and `.unfolded` when it's not.
-
-
-
-
-
-
- Creates a new `HdyFlap`.
-
-
- the newly created `HdyFlap`
-
-
-
-
-
- Gets the content widget for @self
-
-
- the content widget for @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the flap widget for @self
-
-
- the flap widget for @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the flap position for @self.
-
-
- the flap position for @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the amount of time that fold transitions will take.
-
-
- the fold transition duration, in milliseconds
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the current fold policy of @self.
-
-
- the current fold policy of @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether @self is currently folded.
-
-
- `TRUE` if @self is currently folded
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether @self is locked.
-
-
- whether @self is locked
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether the @self is modal.
-
-
- whether @self is modal
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the amount of time that reveal transitions will take.
-
-
- the reveal transition duration, in milliseconds
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether the flap widget is revealed for @self.
-
-
- whether flap widget is revealed
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the current reveal transition progress for @self.
-
-
- the current reveal progress for @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the separator widget for @self.
-
-
- the separator widget for @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether @self can be closed with a swipe gesture.
-
-
- `TRUE` if @self can be closed with a swipe gesture
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets whether @self can be opened with a swipe gesture.
-
-
- `TRUE` if @self can be opened with a swipe gesture
-
-
-
-
- a flap
-
-
-
-
-
-
- Gets the type of animation used for reveal and fold transitions in @self.
-
-
- the current transition type of @self
-
-
-
-
- a flap
-
-
-
-
-
-
- Sets the content widget for @self.
-
-It is always displayed when unfolded, and partially visible when folded.
-
-
-
-
-
-
- a flap
-
-
-
- the content widget
-
-
-
-
-
-
- Sets the flap widget for @self.
-
-
-
-
-
-
- a flap
-
-
-
- the flap widget
-
-
-
-
-
-
- Sets the flap position for @self.
-
-
-
-
-
-
- a flap
-
-
-
- the new value
-
-
-
-
-
-
- Sets the duration that fold transitions will take.
-
-
-
-
-
-
- a flap
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
- Sets the current fold policy for @self.
-
-
-
-
-
-
- a flap
-
-
-
- a fold policy
-
-
-
-
-
-
- Sets whether @self is locked.
-
-If `FALSE`, folding @self when the flap is revealed automatically closes it,
-and unfolding it when the flap is not revealed opens it. If `TRUE`,
-[property@Flap:reveal-flap] value never changes on its own.
-
-
-
-
-
-
- a flap
-
-
-
- the new value
-
-
-
-
-
-
- Sets whether the @self can be closed with a click.
-
-If @modal is `TRUE`, clicking the content widget while flap is revealed, or
-pressing the <kbd>Esc</kbd> key, will close the flap. If `FALSE`, clicks are
-passed through to the content widget.
-
-
-
-
-
-
- a flap
-
-
-
- whether @self can be closed with a click
-
-
-
-
-
-
- Sets the duration that reveal transitions in @self will take.
-
-
-
-
-
-
- a flap
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
- Sets whether the flap widget is revealed for @self.
-
-
-
-
-
-
- a flap
-
-
-
- `TRUE` to reveal the flap widget, `FALSE` otherwise
-
-
-
-
-
-
- Sets the separator widget for @self.
-
-
-
-
-
-
- a flap
-
-
-
- the separator widget
-
-
-
-
-
-
- Sets whether @self can be closed with a swipe gesture.
-
-The area that can be swiped depends on the [property@Flap:transition-type] value.
-
-
-
-
-
-
- a flap
-
-
-
- whether @self can be closed with a swipe gesture
-
-
-
-
-
-
- Sets whether @self can be opened with a swipe gesture.
-
-The area that can be swiped depends on the [property@Flap:transition-type]
-value.
-
-
-
-
-
-
- a flap
-
-
-
- whether @self can be opened with a swipe gesture
-
-
-
-
-
-
- Sets the type of animation used for reveal and fold transitions in @self.
-
-
-
-
-
-
- a flap
-
-
-
- the new transition type
-
-
-
-
-
-
-
- The content widget.
-
-It's always displayed when unfolded, and partially visible
-when folded.
-
-
-
-
-
- The flap widget.
-
-It's only visible when [property@Flap:reveal-progress] is greater than 0.
-
-
-
-
-
- The flap position.
-
-If `GTK_PACK_START`, the flap is displayed before the content, if
-`GTK_PACK_END`, it's displayed after the content.
-
-
-
-
-
- The fold transition animation duration, in milliseconds.
-
-
-
-
-
- The current fold policy.
-
-See [enum@FlapFoldPolicy] for available policies.
-
-
-
-
- Whether the flap is currently folded.
-
-See [property@Flap:fold-policy].
-
-
-
-
-
- Whether the flap is locked.
-
-If `FALSE`, folding when the flap is revealed automatically closes it, and
-unfolding it when the flap is not revealed opens it. If `TRUE`,
-[property@Flap:reveal-flap] value never changes on its own.
-
-
-
-
-
- Whether the flap is modal.
-
-If `TRUE`, clicking the content widget while flap is revealed, as well as
-pressing the <kbd>Esc</kbd> key, will close the flap. If `FALSE`, clicks
-are passed through to the content widget.
-
-
-
-
-
- The reveal transition animation duration, in milliseconds.
-
-
-
-
-
- Whether the flap widget is revealed.
-
-
-
-
- The current reveal transition progress.
-
-0 means fully hidden, 1 means fully revealed. See
-[property@Flap:reveal-flap].
-
-
-
-
-
- The separator widget.
-
-It's displayed between content and flap when there's no shadow to display.
-When exactly it's visible depends on the [property@Flap:transition-type]
-value. If `NULL`, no separator will be used.
-
-
-
-
-
- Whether the flap can be closed with a swipe gesture.
-
-The area that can be swiped depends on the [property@Flap:transition-type]
-value.
-
-
-
-
-
- Whether the flap can be opened with a swipe gesture.
-
-The area that can be swiped depends on the [property@Flap:transition-type]
-value.
-
-
-
-
-
- the type of animation used for reveal and fold transitions.
-
-[property@Flap:flap] is transparent by default, which means the content
-will be seen through it with `HDY_FLAP_TRANSITION_TYPE_OVER` transitions;
-add the `.background` style class to it if this is unwanted.
-
-
-
-
-
-
-
-
-
-
- Describes the possible folding behavior of a [class@Flap] widget.
-
- Disable folding, the flap cannot reach narrow
- sizes.
-
-
- Keep the flap always folded.
-
-
- Fold and unfold the flap based on available
- space.
-
-
-
- Describes transitions types of a [class@Flap] widget.
-
-These enumeration values describe the possible transitions between children
-in a [class@Flap] widget, as well as which areas can be swiped via
-[property@Flap:swipe-to-open] and [property@Flap:swipe-to-close].
-
-New values may be added to this enum over time.
-
- The flap slides over the content, which is
- dimmed. When folded, only the flap can be swiped.
-
-
- The content slides over the flap. Only the
- content can be swiped.
-
-
- The flap slides offscreen when hidden,
- neither the flap nor content overlap each other. Both widgets can be
- swiped.
-
-
-
- A title bar widget.
-
-`HdyHeaderBar` is similar to [class@Gtk.HeaderBar] but is designed to fix
-some of its shortcomings for adaptive applications.
-
-`HdyHeaderBar` doesn't force the custom title widget to be vertically
-centered, hence allowing it to fill up the whole height, which is e.g. needed
-for [class@ViewSwitcher].
-
-When used in a mobile dialog, `HdyHeaderBar` will replace its window
-decorations by a back button allowing to close it. It doesn't have to be its
-direct child and you can use any complex contraption you like as the dialog's
-titlebar.
-
-`HdyHeaderBar` can be used in window's content area rather than titlebar, and
-will still be draggable and will handle right click, middle click and double
-click as expected from a titlebar. This is particularly useful with
-[class@Window] or [class@ApplicationWindow].
-
-## CSS nodes
-
-`HdyHeaderBar` has a single CSS node with name `headerbar`.
-
-
-
-
- Creates a new `HdyHeaderBar`.
-
-
- the newly created `HdyHeaderBar`.
-
-
-
-
-
- Gets the policy @self follows to horizontally align its center widget.
-
-
- the centering policy
-
-
-
-
- a header bar
-
-
-
-
-
-
- Retrieves the custom title widget of the header.
-
-
- the custom title widget of the header
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets the decoration layout.
-
-
- the decoration layout
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets whether space is reserved for a subtitle, regardless if one is currently
-set or not.
-
-
- `TRUE` if the header bar reserves space for a subtitle
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets whether @self should interpolate its size on visible child change.
-
-
- whether @self interpolates its size on visible child change
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets whether this header bar shows the standard window decorations.
-
-
- whether decorations are shown
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets the subtitle of the header.
-
-
- the subtitle of the header
-
-
-
-
- a header bar
-
-
-
-
-
-
- Retrieves the title of the header.
-
-
- the title of the header.
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets the amount of time that transitions between pages will take.
-
-
- the transition duration, in milliseconds
-
-
-
-
- a header bar
-
-
-
-
-
-
- Gets whether the @self is currently in a transition from one page to another.
-
-
- whether the transition is currently running
-
-
-
-
- a header bar
-
-
-
-
-
- Adds @child to @self, packed with reference to the end of the @self.
-
-
-
-
-
-
- a header bar
-
-
-
- the widget to be added to @self
-
-
-
-
-
- Adds @child to @self, packed with reference to the start of the @self.
-
-
-
-
-
-
- a header bar
-
-
-
- the widget to be added to @self
-
-
-
-
-
-
- Sets the policy @self must follow to horizontally align its center widget.
-
-
-
-
-
-
- a header bar
-
-
-
- the centering policy
-
-
-
-
-
-
- Sets a custom title for the header bar.
-
-The title should help a user identify the current view. This supersedes any
-title set by [method@HeaderBar.set_title] or [method@HeaderBar.set_subtitle].
-To achieve the same style as the builtin title and subtitle, use the `.title`
-and `.subtitle` style classes.
-
-You should set the custom title to `NULL`, for the header title label to be
-visible again.
-
-
-
-
-
-
- a header bar
-
-
-
- a custom widget to use for a title
-
-
-
-
-
-
- Sets the decoration layout for this header bar.
-
-
-
-
-
-
- a header bar
-
-
-
- a decoration layout
-
-
-
-
-
-
- Sets whether space is reserved for a subtitle, even if none is currently set.
-
-
-
-
-
-
- a header bar
-
-
-
- `TRUE` to reserve space for a subtitle
-
-
-
-
-
-
- Sets whether @self should interpolate its size on visible child change.
-
-
-
-
-
-
- a header bar
-
-
-
- `TRUE` to interpolate the size
-
-
-
-
-
-
- Sets whether this header bar shows the standard window decorations.
-
-
-
-
-
-
- a header bar
-
-
-
- `TRUE` to show standard window decorations
-
-
-
-
-
-
- Sets the subtitle of the header bar.
-
-The title should give a user an additional detail to help them identify the
-current view.
-
-Note that [class@HeaderBar] by default reserves room for the subtitle, even
-if none is currently set. If this is not desired, set the
-[property@HeaderBar:has-subtitle] property to `FALSE`.
-
-
-
-
-
-
- a header bar
-
-
-
- a subtitle
-
-
-
-
-
-
- Sets the title of the [class@HeaderBar].
-
-The title should help a user identify the current view. A good title should
-not include the application name.
-
-
-
-
-
-
- a header bar
-
-
-
- a title
-
-
-
-
-
-
- Sets the duration that transitions between pages will take.
-
-
-
-
-
-
- a header bar
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
-
- The policy for aligning the center widget.
-
-
-
-
-
- Custom title widget to display.
-
-
-
-
-
- The decoration layout for buttons.
-
-If this property is not set, the
-[property@Gtk.Settings:gtk-decoration-layout] setting is used.
-
-There can be valid reasons for overriding the setting, such as a header bar
-design that does not allow for buttons to take room on the right, or only
-offers room for a single close button. Split header bars are another example
-for overriding the setting.
-
-The format of the string is button names, separated by commas. A colon
-separates the buttons that should appear on the start from those on the
-end. Recognized button names are minimize, maximize, close, icon (the
-window icon) and menu (a menu button for the fallback app menu).
-
-For example, “menu:minimize,maximize,close” specifies a menu on the left, and
-minimize, maximize and close buttons on the right.
-
-
-
- Whether [property@HeaderBar:decoration-layout] is set.
-
-
-
-
-
- Whether to reserve space for a subtitle, even if none is currently set.
-
-
-
-
-
- Whether the size should smoothly change when changing between children.
-
-If `TRUE`, the header bar will interpolate its size between the one of the
-previous visible child and the one of the new visible child, according to
-the set transition duration and the orientation, e.g. if the orientation is
-horizontal, it will interpolate the its height.
-
-
-
-
-
- Whether to show window decorations.
-
-Which buttons are actually shown and where is determined by the
-[property@HeaderBar:decoration-layout] property, and by the state of the
-window (e.g. a close button will not be shown if the window can't be
-closed).
-
-
-
- The amount of space between children.
-
-
-
-
-
- The subtitle to display.
-
-
-
-
-
- The title to display.
-
-
-
-
-
- The transition duration, in milliseconds.
-
-
-
-
- Whether or not the transition is currently running.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- An object handling composite title bars.
-
-The `HdyHeaderGroup` object handles the header bars of a composite title bar.
-It splits the window decoration across the header bars, giving the left side
-of the decorations to the leftmost header bar, and the right side of the
-decorations to the rightmost header bar. See
-[method@HeaderBar.set_decoration_layout].
-
-The [property@HeaderGroup:decorate-all] property can be used in conjunction
-with [property@Leaflet:folded] when the title bar is split across the pages
-of a [class@Leaflet] to automatically display the decorations on all the
-pages when the leaflet is folded.
-
-You can nest header groups, which is convenient when you nest leaflets too:
-
-```xml
-<object class="HdyHeaderGroup" id="inner_header_group">
- <property name="decorate-all" bind-source="inner_leaflet" bind-property="folded" bind-flags="sync-create"/>
- <headerbars>
- <headerbar name="inner_header_bar_1"/>
- <headerbar name="inner_header_bar_2"/>
- </headerbars>
-</object>
-<object class="HdyHeaderGroup" id="outer_header_group">
- <property name="decorate-all" bind-source="outer_leaflet" bind-property="folded" bind-flags="sync-create"/>
- <headerbars>
- <headerbar name="inner_header_group"/>
- <headerbar name="outer_header_bar"/>
- </headerbars>
-</object>
-```
-
-
-
- Creates a new `HdyHeaderGroup`.
-
-
- the newly created `HdyHeaderGroup`
-
-
-
-
- Adds @header_bar to @self.
-
-When the widget is destroyed or no longer referenced elsewhere, it will be
-removed from the header group.
-
-
-
-
-
-
- a header group
-
-
-
- the header bar to add
-
-
-
-
-
- Adds @header_bar to @self.
-
-When the widget is destroyed or no longer referenced elsewhere, it will be
-removed from the header group.
-
-
-
-
-
-
- a header group
-
-
-
- the header bar to add
-
-
-
-
-
- Adds @header_group to @self.
-
-When the nested group is no longer referenced elsewhere, it will be removed
-from the header group.
-
-
-
-
-
-
- a header group
-
-
-
- the header group to add
-
-
-
-
-
- Returns the list of children associated with @self.
-
-
- the list of
- children
-
-
-
-
-
-
- a header group
-
-
-
-
-
-
- Gets whether the elements of the group should all receive the full
-decoration.
-
-
- whether the elements of the group should all receive the full
- decoration
-
-
-
-
- a header group
-
-
-
-
-
- Removes @child from @self.
-
-
-
-
-
-
- a header group
-
-
-
- the header group child to remove
-
-
-
-
-
- Removes @header_bar from @self.
-
-
-
-
-
-
- a header group
-
-
-
- the header bar to remove
-
-
-
-
-
- Removes @header_bar from @self.
-
-
-
-
-
-
- a header group
-
-
-
- the header bar to remove
-
-
-
-
-
- Removes a nested `HdyHeaderGroup` from @self.
-
-
-
-
-
-
- a header group
-
-
-
- the header group to remove
-
-
-
-
-
-
- Sets whether the elements of the group should all receive the full
-decoration.
-
-
-
-
-
-
- a header group
-
-
-
- whether the elements of the group should all receive the full
- decoration
-
-
-
-
-
-
-
- Whether the elements of the group should all receive the full decoration.
-
-This is useful in conjunction with [property@Leaflet:folded] when the
-leaflet contains the header bars of the group, as you want them all to
-display the complete decoration when the leaflet is folded.
-
-
-
- This signal is emitted before updating the decoration layouts.
-
-
-
-
-
-
- A child object for [class@HeaderGroup].
-
-
- Gets the child type.
-
-
- the child type
-
-
-
-
- a header group child
-
-
-
-
-
- Gets the child [class@Gtk.HeaderBar].
-
-Use [method@HeaderGroupChild.get_child_type] to check the child type.
-
-
- the child header bar
-
-
-
-
- a header group child
-
-
-
-
-
- Gets the child [class@HeaderBar].
-
-Use [method@HeaderGroupChild.get_child_type] to check the child type.
-
-
- the child headerbar
-
-
-
-
- a header group child
-
-
-
-
-
- Gets the child [class@HeaderGroup].
-
-Use [method@HeaderGroupChild.get_child_type] to check the child type.
-
-
- the child header bar
-
-
-
-
- a header group child
-
-
-
-
-
-
-
-
-
-
-
-
- Describes the child types handled by [class@HeaderGroup].
-
-New values may be added to this enumeration over time.
-
- The child is a [class@HeaderBar]
-
-
- The child is a
- [class@Gtk.HeaderBar]
-
-
- The child is a
- [class@HeaderGroup]
-
-
-
-
-
-
-
-
-
- A keypad for dialing numbers
-
-The `HdyKeypad` widget is a keypad for entering numbers such as phone numbers
-or PIN codes.
-
-## CSS nodes
-
-`HdyKeypad` has a single CSS node with name `keypad`.
-
-
-
-
- Creates a new `HdyKeypad`.
-
-
- the newly created `HdyKeypad`
-
-
-
-
- whether the hash, plus, and asterisk symbols should be visible
-
-
-
- whether the letters below the digits should be visible
-
-
-
-
-
-
- Returns the amount of space between the columns of @self.
-
-
- the column spacing of @self
-
-
-
-
- a keypad
-
-
-
-
-
-
- Gets the widget for the lower right corner (or left, in RTL locales).
-
-
- the end action widget
-
-
-
-
- a keypad
-
-
-
-
-
-
- Gets the connected entry.
-
-
- the entry set
-
-
-
-
- a keypad
-
-
-
-
-
-
- Gets whether standard letters are displayed below the digits on the buttons.
-
-
- whether the letters below the digits should be visible
-
-
-
-
- a keypad
-
-
-
-
-
-
- Returns the amount of space between the rows of @self.
-
-
- the row spacing of @self
-
-
-
-
- a keypad
-
-
-
-
-
-
- Gets the widget for the lower left corner (or right, in RTL locales).
-
-
- the start action widget
-
-
-
-
- a keypad
-
-
-
-
-
-
- Gets whether symbols are displayed.
-
-
- whether symboles are visible
-
-
-
-
- a keypad
-
-
-
-
-
-
- Sets the amount of space between columns of @self.
-
-
-
-
-
-
- a keypad
-
-
-
- the amount of space to insert between columns
-
-
-
-
-
-
- Sets the widget for the lower right corner (or left, in RTL locales).
-
-
-
-
-
-
- a keypad
-
-
-
- the end action widget
-
-
-
-
-
-
- Binds @entry to @self.
-
-
-
-
-
-
- a keypad
-
-
-
- an entry
-
-
-
-
-
-
- Sets whether standard letters are displayed below the digits on the buttons.
-
-
-
-
-
-
- a keypad
-
-
-
- whether the letters below the digits should be visible
-
-
-
-
-
- Sets the amount of space between rows of @self.
-
-
-
-
-
-
- a keypad
-
-
-
- the amount of space to insert between rows
-
-
-
-
-
-
- Sets the widget for the lower left corner (or right, in RTL locales).
-
-
-
-
-
-
- a keypad
-
-
-
- the start action widget
-
-
-
-
-
-
- Sets whether standard letters are displayed below the digits on the buttons.
-
-
-
-
-
-
- a keypad
-
-
-
- whether the hash, plus, and asterisk symbols should be visible
-
-
-
-
-
-
-
- The amount of space between two consecutive columns.
-
-
-
-
-
- The widget for the lower end corner of @self.
-
-
-
-
-
- The entry widget connected to the keypad.
-
-The entry will block any input not possible to type with the keypad.
-
-
-
-
-
- Whether standard letters should be displayed below the digits on the
-buttons.
-
-
-
-
-
- The amount of space between two consecutive rows.
-
-
-
-
-
- The widget for the lower start corner of @self.
-
-
-
-
-
- Whether to display symbols.
-
-This includes hash and asterisk buttons, and the plus symbol at the bottom
-of its 0 button.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- An adaptive container acting like a box or a stack.
-
-The `HdyLeaflet` widget can display its children like a [class@Gtk.Box] does
-or like a [class@Gtk.Stack] does, adapting to size changes by switching
-between the two modes.
-
-When there is enough space the children are displayed side by side, otherwise
-only one is displayed and the leaflet is said to be “folded”. The threshold
-is dictated by the preferred minimum sizes of the children. When a leaflet is
-folded, the children can be navigated using swipe gestures.
-
-The “over” and “under” transition types stack the children one on top of the
-other, while the “slide” transition puts the children side by side. While
-navigating to a child on the side or below can be performed by swiping the
-current child away, navigating to an upper child requires dragging it from
-the edge where it resides. This doesn't affect non-dragging swipes.
-
-The “over” and “under” transitions can draw their shadow on top of the
-window's transparent areas, like the rounded corners. This is a side-effect
-of allowing shadows to be drawn on top of OpenGL areas. It can be mitigated
-by using [class@Window] or [class@ApplicationWindow] as they will crop
-anything drawn beyond the rounded corners.
-
-The child property `navigatable` can be set on `HdyLeaflet` children to
-determine whether they can be navigated to when folded. If `FALSE`, the child
-will be ignored by [method@Leaflet.get_adjacent_child],
-[method@Leaflet.navigate], and swipe gestures. This can be used used to
-prevent switching to widgets like separators.
-
-## CSS nodes
-
-`HdyLeaflet` has a single CSS node with name `leaflet`. The node will get the
-style classes `.folded` when it is folded, `.unfolded` when it's not, or none
-if it didn't compute its fold yet.
-
-
-
-
-
-
- Creates a new `HdyLeaflet`.
-
-
- the newly created `HdyLeaflet`
-
-
-
-
- Finds the previous or next navigatable child.
-
-This will be the same widget [method@Leaflet.navigate] will navigate to.
-
-If there's no child to navigate to, `NULL` will be returned instead.
-
-
- the previous or next child
-
-
-
-
- a leaflet
-
-
-
- the direction
-
-
-
-
-
-
- Gets whether swipe gestures switch to the previous navigatable child.
-
-
- `TRUE` if back swipe is enabled
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets whether swipe gestures switch to the next navigatable child.
-
-
- `TRUE` if forward swipe is enabled
-
-
-
-
- a leaflet
-
-
-
-
-
- Finds the child of @self with the name given as the argument.
-
-Returns `NULL` if there is no child with this name.
-
-
- the requested child of @self
-
-
-
-
- a leaflet
-
-
-
- the name of the child to find
-
-
-
-
-
-
- Gets the amount of time that transitions between children will take.
-
-
- the child transition duration, in milliseconds
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Returns whether @self is currently in a transition from one page to another.
-
-
- whether a transition is currently running
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets whether @self is folded.
-
-
- whether @self is folded
-
-
-
-
- a leaflet
-
-
-
-
-
- Gets whether @self is homogeneous for the given fold and orientation.
-
-
- whether @self is homogeneous for the given fold and orientation
-
-
-
-
- a leaflet
-
-
-
- the fold
-
-
-
- the orientation
-
-
-
-
-
-
- Gets whether to interpolate between the sizes of children on page switches.
-
-
- `TRUE` if child sizes are interpolated
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets the amount of time that transitions between modes in @self will take.
-
-
- the mode transition duration, in milliseconds
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets the animation type that will be used for transitions between modes and
-children.
-
-
- the current transition type of @self
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets the visible child widget.
-
-
- the visible child widget
-
-
-
-
- a leaflet
-
-
-
-
-
-
- Gets the name of the currently visible child widget.
-
-
- the name of the visible child
-
-
-
-
- a leaflet
-
-
-
-
-
- Inserts @child in the position after @sibling in the list of children.
-
-If @sibling is `NULL`, inserts @child at the first position.
-
-
-
-
-
-
- a leaflet
-
-
-
- the widget to insert
-
-
-
- the sibling after which to insert @child
-
-
-
-
-
- Navigates to the previous or next navigatable child.
-
-The switch is similar to performing a swipe gesture to go in @direction.
-
-
- whether the visible child was changed
-
-
-
-
- a leaflet
-
-
-
- the direction
-
-
-
-
-
- Inserts @child at the first position in @self.
-
-
-
-
-
-
- a leaflet
-
-
-
- the widget to prepend
-
-
-
-
-
- Moves @child to the position after @sibling in the list of children.
-
-If @sibling is `NULL`, move @child to the first position.
-
-
-
-
-
-
- a leaflet
-
-
-
- the widget to move, must be a child of @self
-
-
-
- the sibling to move @child after
-
-
-
-
-
-
- Sets whether swipe gestures switch to the previous navigatable child.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new value
-
-
-
-
-
-
- Sets whether swipe gestures switch to the next navigatable child.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new value
-
-
-
-
-
-
- Sets the duration that transitions between children in @self will take.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
- Sets whether to be homogeneous for the given fold and orientation.
-
-If it is homogeneous, the [class@Leaflet] will request the same
-width or height for all its children depending on the orientation. If it
-isn't and it is folded, the leaflet may change width or height when a
-different child becomes visible.
-
-
-
-
-
-
- a leaflet
-
-
-
- the fold
-
-
-
- the orientation
-
-
-
- `TRUE` to make @self homogeneous
-
-
-
-
-
-
- Sets whether @self will interpolate its size when changing the visible child.
-
-If the [property@Leaflet:interpolate-size] property is set to `TRUE`, @self
-will interpolate its size between the current one and the one it'll take
-after changing the visible child, according to the set transition duration.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new value
-
-
-
-
-
-
- Sets the duration that transitions between modes in @self will take.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
- Sets the animation type that will be used for transitions between modes and
-children.
-
-The transition type can be changed without problems at runtime, so it is
-possible to change the animation based on the mode or child that is about to
-become current.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new transition type
-
-
-
-
-
-
- Sets the currently visible widget when the leaflet is folded.
-
-
-
-
-
-
- a leaflet
-
-
-
- the new child
-
-
-
-
-
-
- Makes the child with the name @name visible.
-
-See [method@Leaflet.set_visible_child] for more details.
-
-
-
-
-
-
- a leaflet
-
-
-
- the name of a child
-
-
-
-
-
-
-
- Whether swipe gestures allow switching to the previous navigatable child.
-
-
-
-
-
- Whether swipe gestures allow switching to the next navigatable child.
-
-
-
-
-
- The child transition animation duration, in milliseconds.
-
-
-
-
- Whether a child transition is currently running.
-
-
-
-
- Whether the leaflet is folded.
-
-The leaflet will be folded if the size allocated to it is smaller than the
-sum of the natural size of its children, it will be unfolded otherwise.
-
-
-
-
-
- Whether to allocate the same width for all children when folded.
-
-
-
-
-
- Whether to allocate the same width for all children when unfolded.
-
-
-
-
-
- Whether the size should smoothly change when changing between children.
-
-
-
-
-
- The mode transition animation duration, in milliseconds.
-
-
-
-
-
- The animation type used for transitions between modes and children.
-
-The transition type can be changed without problems at runtime, so it is
-possible to change the animation based on the mode or child that is about
-to become current.
-
-
-
-
-
- Whether to allocates the same height for all children when folded.
-
-
-
-
-
- Whether to allocate the same height for all children when unfolded.
-
-
-
-
-
- The widget currently visible when the leaflet is folded.
-
-The transition is determined by [property@Leaflet:transition-type] and
-[property@Leaflet:child-transition-duration]. The transition can be
-cancelled by the user, in which case visible child will change back to the
-previously visible child.
-
-
-
-
-
- The name of the widget currently visible when the leaflet is folded.
-
-See [property@Leaflet:visible-child].
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- Describes the possible transitions in a [class@Leaflet] widget.
-
-New values may be added to this enumeration over time.
-
- Cover the old page or uncover the new
- page, sliding from or towards the end according to orientation, text
- direction and children order
-
-
- Uncover the new page or cover the old
- page, sliding from or towards the start according to orientation, text
- direction and children order
-
-
- Slide from left, right, up or down
- according to the orientation, text direction and the children order
-
-
-
- Describes the direction of a swipe navigation gesture.
-
- Corresponds to start or top, depending on
- orientation and text direction
-
-
- Corresponds to end or bottom, depending on
- orientation and text direction
-
-
-
- A group of preference rows.
-
-A `HdyPreferencesGroup` represents a group or tightly related preferences,
-which in turn are represented by [class@PreferencesRow].
-
-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@PreferencesWindow]
-to let the user look for a preference.
-
-## CSS nodes
-
-`HdyPreferencesGroup` has a single CSS node with name `preferencesgroup`.
-
-
-
-
- Creates a new `HdyPreferencesGroup`.
-
-
- the newly created `HdyPreferencesGroup`
-
-
-
-
-
-
-
- the description of @self
-
-
-
-
- a preferences group
-
-
-
-
-
-
- Gets the title of @self.
-
-
- the title of @self
-
-
-
-
- a preferences group
-
-
-
-
-
-
- Gets whether @self uses markup for the title and description.
-
-
- whether @self uses markup for its labels
-
-
-
-
- a preferences group
-
-
-
-
-
-
- Sets the description for @self.
-
-
-
-
-
-
- a preferences group
-
-
-
- the description
-
-
-
-
-
-
- Sets the title for @self.
-
-
-
-
-
-
- a preferences group
-
-
-
- the title
-
-
-
-
-
-
- Sets whether @self uses markup for the title and description.
-
-
-
-
-
-
- a preferences group
-
-
-
- whether to use markup
-
-
-
-
-
-
-
- The description for this group of preferences.
-
-
-
-
-
- The title for this group of preferences.
-
-
-
-
-
- Whether to use markup for the title and description.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- A page from [class@PreferencesWindow].
-
-The `HdyPreferencesPage` widget gathers preferences groups into a single page
-of a preferences window.
-
-## CSS nodes
-
-`HdyPreferencesPage` has a single CSS node with name `preferencespage`.
-
-
-
-
- Creates a new `HdyPreferencesPage`.
-
-
- the newly created `HdyPreferencesPage`
-
-
-
-
-
- Gets the icon name for @self.
-
-
- the icon name for @self
-
-
-
-
- a preferences page
-
-
-
-
-
-
- Gets the title of @self.
-
-
- the title of the @self
-
-
-
-
- a preferences page
-
-
-
-
-
-
- Sets the icon name for @self.
-
-
-
-
-
-
- a preferences page
-
-
-
- the icon name
-
-
-
-
-
-
- Sets the title of @self.
-
-
-
-
-
-
- a preferences page
-
-
-
- the title of the page
-
-
-
-
-
-
-
- The icon name for this page of preferences.
-
-
-
-
-
- The title for this page of preferences.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- A [class@Gtk.ListBoxRow] used to present preferences.
-
-The `HdyPreferencesRow` widget has a title that [class@PreferencesWindow]
-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.
-
-[class@ActionRow] and its derivatives are convenient to use as preference
-rows as they take care of presenting the preference's title while letting you
-compose the inputs of the preference around it.
-
-
-
-
-
- Creates a new `HdyPreferencesRow`.
-
-
- the newly created `HdyPreferencesRow`
-
-
-
-
-
- Gets the title of the preference represented by @self.
-
-
- the title of the preference represented
- by @self
-
-
-
-
- a preferences row
-
-
-
-
-
-
- Gets whether an embedded underline in the title indicates a mnemonic.
-
-
- whether an embedded underline in the title indicates a mnemonic
-
-
-
-
- a preferences row
-
-
-
-
-
-
- Sets the title of the preference represented by @self.
-
-
-
-
-
-
- a preferences row
-
-
-
- the title
-
-
-
-
-
-
- Sets whether an embedded underline in the title indicates a mnemonic.
-
-
-
-
-
-
- a preferences row
-
-
-
- `TRUE` if underlines in the text indicate mnemonics
-
-
-
-
-
-
-
- The title of the preference represented by this row.
-
-
-
-
-
- Whether an embedded underline in the title indicates a mnemonic.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- A window to present an application's preferences.
-
-The `HdyPreferencesWindow` widget presents an application's preferences
-gathered into pages and groups. The preferences are searchable by the user.
-
-## CSS nodes
-
-`HdyPreferencesWindow` has a main CSS node with the name `window` and the
-style class `.preferences`.
-
-
-
-
- Creates a new `HdyPreferencesWindow`.
-
-
- the newly created `HdyPreferencesWindow`
-
-
-
-
- Closes the current subpage.
-
-If there is no presented subpage, this does nothing.
-
-
-
-
-
-
- a preferences window
-
-
-
-
-
-
- Gets whether swipe gestures allow switching from a subpage to the
-preferences.
-
-
- `TRUE` if back swipe is enabled
-
-
-
-
- a preferences window
-
-
-
-
-
-
- Gets whether search is enabled for @self.
-
-
- whether search is enabled for @self
-
-
-
-
- a preferences window
-
-
-
-
-
- Sets @subpage as the window's subpage and opens it.
-
-The transition can be cancelled by the user, in which case visible child will
-change back to the previously visible child.
-
-
-
-
-
-
- a preferences window
-
-
-
- the subpage
-
-
-
-
-
-
- Sets whether swipe gestures allow switching from a subpage to the
-preferences.
-
-
-
-
-
-
- a preferences window
-
-
-
- the new value
-
-
-
-
-
-
- Sets whether search is enabled for @self.
-
-
-
-
-
-
- a preferences window
-
-
-
- `TRUE` to enable search, `FALSE` to disable it
-
-
-
-
-
-
-
- Whether the window allows closing the subpage via a swipe gesture.
-
-
-
-
-
- Whether search is enabled.
-
-
-
-
-
-
-
-
-
- the parent class
-
-
-
-
-
-
-
-
-
- A toolbar to integrate a search entry with.
-
-`HdySearchBar` is a container made to have a search entry (possibly with
-additional connex widgets, such as drop-down menus, or buttons) built-in. The
-search bar would appear when a search is started through typing on the
-keyboard, or the application’s search mode is toggled on.
-
-For keyboard presses to start a search, events will need to be forwarded from
-the top-level window that contains the search bar. See
-[method@SearchBar.handle_event] for example code. Common shortcuts such as
-<kbd>Ctrl</kbd>+<kbd>F</kbd> should be handled as an application action, or
-through the menu items.
-
-You will also need to tell the search bar about which entry you are using as
-your search entry using [method@SearchBar.connect_entry]. The following
-example shows you how to create a more complex search entry.
-
-`HdySearchBar` is very similar to [class@Gtk.SearchBar], the main difference
-being that it allows the search entry to fill all the available space. This
-allows you to control your search entry's width with a [class@Clamp].
-
-## CSS nodes
-
-`HdySearchBar` has a single CSS node with name `searchbar`.
-
-
-
-
- Creates a new `HdySearchBar.
-
-You will need to tell it about which widget is going to be your text entry
-using [method@SearchBar.connect_entry].
-
-
- the newly created `HdySearchBar`
-
-
-
-
- Sets the entry widget passed as the one to be used in this search bar.
-
-The entry should be a descendant of the search bar. This is only required if
-the entry isn’t the direct child of the search bar (as in our main example).
-
-
-
-
-
-
- a search bar
-
-
-
- an entry
-
-
-
-
-
-
- Gets whether the search mode is on.
-
-
- whether search mode is toggled on
-
-
-
-
- a search bar
-
-
-
-
-
-
- Gets whether the close button is shown.
-
-
- whether the close button is shown
-
-
-
-
- a search bar
-
-
-
-
-
- Handles key press events.
-
-This function should be called when the top-level window which contains the
-search bar received a key event.
-
-If the key event is handled by the search bar, the bar will be shown, the
-entry populated with the entered text and `GDK_EVENT_STOP` will be returned.
-The caller should ensure that events are not propagated further.
-
-If no entry has been connected to the search bar, using
-[method@SearchBar.connect_entry], this function will return immediately with
-a warning.
-
-## Showing the search bar on key presses
-
-```c
-static gboolean
-on_key_press_event (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
-{
- HdySearchBar *bar = HDY_SEARCH_BAR (user_data);
- return hdy_search_bar_handle_event (self, event);
-}
-
-static void
-create_toplevel (void)
-{
- GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- GtkWindow *search_bar = hdy_search_bar_new ();
-
- // Add more widgets to the window...
-
- g_signal_connect (window,
- "key-press-event",
- G_CALLBACK (on_key_press_event),
- search_bar);
-}
-```
-
-
- `GDK_EVENT_STOP` if the key press event resulted in text being
- entered in the search entry (and revealing the search bar if necessary),
- `GDK_EVENT_PROPAGATE` otherwise.
-
-
-
-
- a search bar
-
-
-
- a [struct@Gdk.Event] containing key press events
-
-
-
-
-
-
- Switches the search mode on or off.
-
-
-
-
-
-
- a search bar
-
-
-
- the new state of the search mode
-
-
-
-
-
-
- Shows or hides the close button.
-
-Applications that already have a “search” toggle button should not show a
-close button in their search bar, as it duplicates the role of the toggle
-button.
-
-
-
-
-
-
- a search bar
-
-
-
- whether the close button will be shown or not
-
-
-
-
-
-
-
- Whether the search mode is on and the search bar shown.
-
-
-
-
-
- Whether to show the close button in the toolbar.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A best fit container.
-
-The `HdySqueezer` widget is a container which only shows the first of its
-children that fits in the available size. It is convenient to offer different
-widgets to represent the same data with different levels of detail, making
-the widget seem to squeeze itself to fit in the available space.
-
-Transitions between children can be animated as fades. This can be controlled
-with [method@Squeezer.set_transition_type].
-
-## CSS nodes
-
-`HdySqueezer` has a single CSS node with name `squeezer`.
-
-
-
-
-
- Creates a new `HdySqueezer`.
-
-
- the newly created `HdySqueezer`
-
-
-
-
- Gets whether @child is enabled.
-
-See [method@Squeezer.set_child_enabled].
-
-
- whether @child is enabled
-
-
-
-
- a squeezer
-
-
-
- a child of @self
-
-
-
-
-
-
- Gets whether @self is homogeneous.
-
-
- whether @self is homogeneous
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets whether @self should interpolate its size on visible child change.
-
-
- whether @self interpolates its size on visible child change
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets the amount of time that transitions between children will take.
-
-
- the transition duration, in milliseconds
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets whether a transition is currently running for @self.
-
-
- whether a transition is currently running
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets the animation type that will be used for transitions between children.
-
-
- the current transition type of @self
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets the currently visible child of @self.
-
-
- the visible child
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets the horizontal alignment.
-
-
- the xalign property
-
-
-
-
- a squeezer
-
-
-
-
-
-
- Gets the vertical alignment.
-
-
- the yalign property
-
-
-
-
- a squeezer
-
-
-
-
-
- Sets whether @child is enabled.
-
-If a child is disabled, it will be ignored when looking for the child fitting
-the available size best. This allows to programmatically and prematurely hide
-a child of @self even if it fits in the available space.
-
-This can be used e.g. to ensure a certain child is hidden below a certain
-window width, or any other constraint you find suitable.
-
-
-
-
-
-
- a squeezer
-
-
-
- a child of @self
-
-
-
- whether to enable the child
-
-
-
-
-
-
- Sets whether all children have the same size for the opposite orientation.
-
-
-
-
-
-
- a squeezer
-
-
-
- `TRUE` to make @self homogeneous
-
-
-
-
-
-
- Sets whether @self should interpolate its size on visible child change.
-
-
-
-
-
-
- a squeezer
-
-
-
- `TRUE` to interpolate the size
-
-
-
-
-
-
- Sets the duration that transitions between children in @self will take.
-
-
-
-
-
-
- a squeezer
-
-
-
- the new duration, in milliseconds
-
-
-
-
-
-
- Sets the animation type that will be used for transitions between children.
-
-
-
-
-
-
- a squeezer
-
-
-
- the new transition type
-
-
-
-
-
-
- Sets the horizontal alignment.
-
-
-
-
-
-
- a squeezer
-
-
-
- the new xalign value, between 0 and 1
-
-
-
-
-
-
- Sets the vertical alignment.
-
-
-
-
-
-
- a squeezer
-
-
-
- the new yalign value, between 0 and 1
-
-
-
-
-
-
-
- Whether all children have the same size for the opposite orientation.
-
-For example, if a squeezer is horizontal and is homogeneous, it will request
-the same height for all its children. If it isn't, the squeezer may change
-size when a different child becomes visible.
-
-
-
-
-
- Whether the squeezer interpolates its size when changing the visible child.
-
-If `TRUE`, the squeezer will interpolate its size between the one of the
-previous visible child and the one of the new visible child, according to
-the set transition duration and the orientation, e.g. if the squeezer is
-horizontal, it will interpolate the its height.
-
-
-
-
-
- The animation duration, in milliseconds.
-
-
-
-
- Whether a transition is currently running.
-
-
-
-
-
- The type of animation used for transitions between children.
-
-Available types include various kinds of fades and slides.
-
-The transition type can be changed without problems at runtime, so it is
-possible to change the animation based on the child that is about to become
-current.
-
-
-
-
- The currently visible child.
-
-
-
-
-
- The horizontal alignment, from 0 (start) to 1 (end).
-
-The xalign property determines the horizontal alignment of the children
-inside the squeezer's size allocation. Compare this to
-[property@Gtk.Widget:halign], which determines how the squeezer's size
-allocation is positioned in the space available for the squeezer.
-
-This will affect the position of children too wide to fit in the squeezer
-as they are fading out.
-
-
-
-
-
- The vertical alignment, from 0 (start) to 1 (end).
-
-The yalign property determines the vertical alignment of the children
-inside the squeezer's size allocation. Compare this to
-[property@Gtk.Widget:valign], which determines how the squeezer's size
-allocation is positioned in the space available for the squeezer.
-
-This will affect the position of children too tall to fit in the squeezer
-as they are fading out.
-
-
-
-
-
-
-
-
-
-
- Describes the possible transitions in a [class@Squeezer] widget.
-
- No transition
-
-
- A cross-fade
-
-
-
- A page used for empty/error states and similar use-cases.
-
-The `HdyStatusPage` widget can have an icon, a title, a description and a
-custom widget which is displayed below them.
-
-## CSS nodes
-
-`HdyStatusPage` has a main CSS node with name `statuspage`.
-
-
-
-
- Creates a new `HdyStatusPage`.
-
-
- the newly created `HdyStatusPage`
-
-
-
-
-
- Gets the description for @self.
-
-
- the description for @self
-
-
-
-
- a status page
-
-
-
-
-
-
- Gets the icon name for @self.
-
-
- the icon name for @self
-
-
-
-
- a status page
-
-
-
-
-
-
- Gets the title for @self.
-
-
- the title for @self
-
-
-
-
- a status page
-
-
-
-
-
-
- Sets the description for @self.
-
-
-
-
-
-
- a status page
-
-
-
- the description
-
-
-
-
-
-
- Sets the icon name for @self.
-
-
-
-
-
-
- a status page
-
-
-
- the icon name
-
-
-
-
-
-
- Sets the title for @self.
-
-
-
-
-
-
- a status page
-
-
-
- the title
-
-
-
-
-
-
-
- The description to be displayed below the title.
-
-
-
-
-
- The name of the icon to be used.
-
-
-
-
-
- The title to be displayed below the icon.
-
-
-
-
-
-
-
-
-
-
- A class for managing application-wide styling.
-
-`HdyStyleManager` provides a way to query and influence the application
-styles, such as whether to use dark or high contrast appearance.
-
-It allows to set the color scheme via the
-[property@StyleManager:color-scheme] property, and to query the current
-appearance, as well as whether a system-wide color scheme preference exists.
-
-Important: [property@Gtk.Settings:gtk-application-prefer-dark-theme] should
-not be used together with `HdyStyleManager` and will result in a warning.
-Color schemes should be used instead.
-
-
- Gets the default [class@StyleManager] instance.
-
-It manages all [class@Gdk.Display] instances unless the style manager for
-that display has an override.
-
-See [func@StyleManager.get_for_display].
-
-
- the default style manager
-
-
-
-
- Gets the [class@StyleManager] instance managing @display.
-
-It can be used to override styles for that specific display instead of the
-whole application.
-
-Most applications should use [func@StyleManager.get_default] instead.
-
-
- the style manager for @display
-
-
-
-
- a display
-
-
-
-
-
-
- Gets the requested application color scheme.
-
-
- the color scheme
-
-
-
-
- a style manager
-
-
-
-
-
-
- Gets whether the application is using dark appearance.
-
-
- whether the application is using dark appearance
-
-
-
-
- a style manager
-
-
-
-
-
-
- Gets the display the style manager is associated with.
-
-The display will be `NULL` for the style manager returned by
-[func@StyleManager.get_default].
-
-
- (nullable): the display
-
-
-
-
- a style manager
-
-
-
-
-
-
- Gets whether the application is using high contrast appearance.
-
-
- whether the application is using high contrast appearance
-
-
-
-
- a style manager
-
-
-
-
-
-
- Gets whether the system supports color schemes.
-
-
- whether the system supports color schemes
-
-
-
-
- a style manager
-
-
-
-
-
-
- Sets the requested application color scheme.
-
-The effective appearance will be decided based on the application color
-scheme and the system preferred color scheme. The
-[property@StyleManager:dark] property can be used to query the current
-effective appearance.
-
-
-
-
-
-
- a style manager
-
-
-
- the color scheme
-
-
-
-
-
-
-
- The requested application color scheme.
-
-The effective appearance will be decided based on the application color
-scheme and the system preferred color scheme. The
-[property@StyleManager:dark] property can be used to query the current
-effective appearance.
-
-The `HDY_COLOR_SCHEME_PREFER_LIGHT` color scheme results in the application
-using light appearance unless the system prefers dark colors. This is the
-default value.
-
-The `HDY_COLOR_SCHEME_PREFER_DARK` color scheme results in the application
-using dark appearance, but can still switch to the light appearance if the
-system can prefers it, for example, when the high contrast preference is
-enabled.
-
-The `HDY_COLOR_SCHEME_FORCE_LIGHT` and `HDY_COLOR_SCHEME_FORCE_DARK` values
-ignore the system preference entirely, they are useful if the application
-wants to match its UI to its content or to provide a separate color scheme
-switcher.
-
-If a per-[class@Gdk.Display] style manager has its color scheme set to
-`HDY_COLOR_SCHEME_DEFAULT`, it will inherit the color scheme from the
-default style manager.
-
-For the default style manager, `HDY_COLOR_SCHEME_DEFAULT` is equivalent to
-`HDY_COLOR_SCHEME_FORCE_LIGHT`.
-
-The [property@StyleManager:system-supports-color-schemes] property can be
-used to check if the current environment provides a color scheme
-preference.
-
-
-
-
- Whether the application is using dark appearance.
-
-This property can be used to query the current appearance, as requested via
-[property@StyleManager:color-scheme].
-
-
-
-
- The display the style manager is associated with.
-
-The display will be `NULL` for the style manager returned by
-[func@StyleManager.get_default].
-
-
-
-
- Whether the application is using high contrast appearance.
-
-This cannot be overridden by applications.
-
-
-
-
- Whether the system supports color schemes.
-
-This property can be used to check if the current environment provides a
-color scheme preference. For example, applications might want to show a
-separate appearance switcher if it's set to `FALSE`.
-
-It's only set at startup and cannot change its value later.
-
-See [property@StyleManager:color-scheme].
-
-
-
-
-
-
-
-
-
-
- An object for syncing swipeable widgets.
-
-The `HdySwipeGroup` object can be used to sync multiple swipeable widgets
-that implement the [iface@Swipeable] interface, such as [class@Carousel], so
-that animating one of them also animates all the other widgets in the group.
-
-This can be useful for syncing widgets between a window's titlebar and
-content area.
-
-## HdySwipeGroup as GtkBuildable
-
-`HdySwipeGroup` can be created in an UI definition. The list of swipeable
-widgets is specified with a <swipeables> element containing multiple
-<swipeable> elements with their ”name” attribute specifying the id of
-the widgets.
-
-```xml
-<object class="HdySwipeGroup">
- <swipeables>
- <swipeable name="carousel1"/>
- <swipeable name="carousel2"/>
- </swipeables>
-</object>
-```
-
-`HdySwipeGroup` has been deprecated, [class@Window] and
-[class@ApplicationWindow] allow using a single leaflet for both content and
-header bar, without the need to sync them.
-
-
-
- Creates a new `HdySwipeGroup`.
-
-
- the newly created `HdySwipeGroup`
-
-
-
-
- Adds a swipeable to @self.
-
-When the widget is destroyed or no longer referenced elsewhere, it will be
-removed from the swipe group.
-
-
-
-
-
-
- a swipe group
-
-
-
- the [iface@Swipeable] to add
-
-
-
-
-
- Gets the list of swipeables associated with @self.
-
-
- a list of swipeables
-
-
-
-
-
-
- a swipe group
-
-
-
-
-
- Removes a widget from a [class@SwipeGroup].
-
-
-
-
-
-
- a swipe group
-
-
-
- the [iface@Swipeable] to remove
-
-
-
-
-
-
-
-
-
-
-
-
- Swipe tracker used in [class@Carousel] and [class@Leaflet].
-
-The `HdySwipeTracker` object can be used for implementing widgets with swipe
-gestures. It supports touch-based swipes, pointer dragging, and touchpad
-scrolling.
-
-The widgets will probably want to expose [property@SwipeTracker:enabled]
-property. If they expect to use horizontal orientation,
-[property@SwipeTracker:reversed] property can be used for supporting RTL text
-direction.
-
-
-
- Creates a new `HdySwipeTracker` object on @widget.
-
-
- the newly created `HdySwipeTracker`
-
-
-
-
- a swipeable to add the tracker on
-
-
-
-
-
-
- Whether to allow swiping for more than one snap point at a time.
-
-If the value is `FALSE`, each swipe can only move to the adjacent snap
-points.
-
-
- whether long swipes are allowed
-
-
-
-
- a swipe tracker
-
-
-
-
-
-
- Get whether @self can be dragged with mouse pointer.
-
-
- `TRUE` is mouse dragging is allowed
-
-
-
-
- a swipe tracker
-
-
-
-
-
-
- Get whether @self is enabled.
-
-
- `TRUE` if @self is enabled
-
-
-
-
- a swipe tracker
-
-
-
-
-
-
- Get whether @self is reversing the swipe direction.
-
-
- `TRUE` is the direction is reversed
-
-
-
-
- a swipe tracker
-
-
-
-
-
-
- Get @self's swipeable widget.
-
-
- the swipeable widget
-
-
-
-
- a swipe tracker
-
-
-
-
-
-
- Sets whether to allow swiping for more than one snap point at a time.
-
-If the value is `FALSE`, each swipe can only move to the adjacent snap
-points.
-
-
-
-
-
-
- a swipe tracker
-
-
-
- whether to allow long swipes
-
-
-
-
-
-
- Set whether @self can be dragged with mouse pointer.
-
-This should usually be `FALSE`.
-
-
-
-
-
-
- a swipe tracker
-
-
-
- whether to allow mouse dragging
-
-
-
-
-
-
- Set whether @self is enabled.
-
-
-
-
-
-
- a swipe tracker
-
-
-
- whether to enable to swipe tracker
-
-
-
-
-
-
- Set whether to reverse the swipe direction.
-
-If @self is horizontal, can be used for supporting RTL text direction.
-
-
-
-
-
-
- a swipe tracker
-
-
-
- whether to reverse the swipe direction
-
-
-
-
-
- Move the current progress value by @delta.
-
-This can be used to adjust the current position if snap points move during
-the gesture.
-
-
-
-
-
-
- a swipe tracker
-
-
-
- the position delta
-
-
-
-
-
-
-
- Whether to allow swiping for more than one snap point at a time.
-
-If the value is `FALSE`, each swipe can only move to the adjacent snap
-points.
-
-
-
-
-
- Whether to allow dragging with mouse pointer.
-
-This should usually be `FALSE`.
-
-
-
-
-
- Whether the swipe tracker is enabled.
-
-When it's not enabled, no events will be processed. Usually widgets will
-want to expose this via a property.
-
-
-
-
-
- Whether to reverse the swipe direction.
-
-If the swipe tracker is horizontal, it can be used for supporting RTL text
-direction.
-
-
-
-
- The widget the swipe tracker is attached to. Must not be `NULL`.
-
-
-
- This signal is emitted when a possible swipe is detected.
-
-The @direction value can be used to restrict the swipe to a certain
-direction.
-
-
-
-
-
- the direction of the swipe
-
-
-
- `TRUE` if the swipe is directly triggered by a gesture,
- `FALSE` if it's triggered via a [class@SwipeGroup]
-
-
-
-
-
- This signal is emitted as soon as the gesture has stopped.
-
-
-
-
-
- snap-back animation duration, in milliseconds
-
-
-
- the progress value to animate to
-
-
-
-
-
- This signal is emitted every time the progress value changes.
-
-
-
-
-
- the current animation progress value
-
-
-
-
-
-
-
-
-
-
-
-
- An interface for swipeable widgets.
-
-The `HdySwipeable` interface is implemented by all swipeable widgets. They
-can be synced using [class@SwipeGroup].
-
-See [class@SwipeTracker] for details about implementing it.
-
-
-
- Gets the progress @self will snap back to after the gesture is canceled.
-
-
- the cancel progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the swipe distance of @self.
-
-This corresponds to how many pixels 1 unit represents.
-
-
- the swipe distance in pixels
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the current progress of @self.
-
-
- the current progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the snap points of @self.
-
-Each snap point represents a progress value that is considered acceptable to
-end the swipe on.
-
-
- the snap points
-
-
-
-
-
-
- a swipeable
-
-
-
- location to return the number of the snap points
-
-
-
-
-
- Gets the area @self can start a swipe from for the given direction and
-gesture type.
-
-This can be used to restrict swipes to only be possible from a certain area,
-for example, to only allow edge swipes, or to have a draggable element and
-ignore swipes elsewhere.
-
-Swipe area is only considered for direct swipes (as in, not initiated by
-[class@SwipeGroup]).
-
-If not implemented, the default implementation returns the allocation of
-@self, allowing swipes from anywhere.
-
-
-
-
-
-
- a swipeable
-
-
-
- the direction of the swipe
-
-
-
- whether the swipe is caused by a dragging gesture
-
-
-
- a pointer to a rectangle to store the swipe area
-
-
-
-
-
- Gets the [class@SwipeTracker] used by this swipeable widget.
-
-
- the swipe tracker
-
-
-
-
- a swipeable
-
-
-
-
-
- Switches to child with index @index.
-
-See [signal@Swipeable::child-switched].
-
-
-
-
-
-
- a swipeable
-
-
-
- the index of the child to switch to
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
- Emits [signal@Swipeable::child-switched] signal.
-
-This should be called when the widget switches visible child widget.
-
-@duration can be 0 if the child is switched without animation.
-
-
-
-
-
-
- a swipeable
-
-
-
- the index of the child to switch to
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
- Gets the progress @self will snap back to after the gesture is canceled.
-
-
- the cancel progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the swipe distance of @self.
-
-This corresponds to how many pixels 1 unit represents.
-
-
- the swipe distance in pixels
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the current progress of @self.
-
-
- the current progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
- Gets the snap points of @self.
-
-Each snap point represents a progress value that is considered acceptable to
-end the swipe on.
-
-
- the snap points
-
-
-
-
-
-
- a swipeable
-
-
-
- location to return the number of the snap points
-
-
-
-
-
- Gets the area @self can start a swipe from for the given direction and
-gesture type.
-
-This can be used to restrict swipes to only be possible from a certain area,
-for example, to only allow edge swipes, or to have a draggable element and
-ignore swipes elsewhere.
-
-Swipe area is only considered for direct swipes (as in, not initiated by
-[class@SwipeGroup]).
-
-If not implemented, the default implementation returns the allocation of
-@self, allowing swipes from anywhere.
-
-
-
-
-
-
- a swipeable
-
-
-
- the direction of the swipe
-
-
-
- whether the swipe is caused by a dragging gesture
-
-
-
- a pointer to a rectangle to store the swipe area
-
-
-
-
-
- Gets the [class@SwipeTracker] used by this swipeable widget.
-
-
- the swipe tracker
-
-
-
-
- a swipeable
-
-
-
-
-
- Switches to child with index @index.
-
-See [signal@Swipeable::child-switched].
-
-
-
-
-
-
- a swipeable
-
-
-
- the index of the child to switch to
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
- Emitted when the widget's visible child is changed.
-
-@duration can be 0 if the child is switched without animation.
-
-This is used by [class@SwipeGroup], applications should not connect to it.
-
-
-
-
-
- the index of the child to switch to
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
-
- An interface for swipeable widgets.
-
-
- the parent interface
-
-
-
-
-
-
-
-
-
-
- a swipeable
-
-
-
- the index of the child to switch to
-
-
-
- animation duration, in milliseconds
-
-
-
-
-
-
-
-
-
- the swipe tracker
-
-
-
-
- a swipeable
-
-
-
-
-
-
-
-
-
- the swipe distance in pixels
-
-
-
-
- a swipeable
-
-
-
-
-
-
-
-
-
- the snap points
-
-
-
-
-
-
- a swipeable
-
-
-
- location to return the number of the snap points
-
-
-
-
-
-
-
-
-
- the current progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
-
-
-
-
- the cancel progress, unitless
-
-
-
-
- a swipeable
-
-
-
-
-
-
-
-
-
-
-
-
-
- a swipeable
-
-
-
- the direction of the swipe
-
-
-
- whether the swipe is caused by a dragging gesture
-
-
-
- a pointer to a rectangle to store the swipe area
-
-
-
-
-
-
-
-
-
-
-
-
- A tab bar for [class@TabView].
-
-The `HdyTabBar` widget is a tab bar that can be used with conjunction with
-[class@TabView].
-
-`HdyTabBar` can autohide and can optionally contain action widgets on both
-sides of the tabs.
-
-When there's not enough space to show all the tabs, `HdyTabBar` will scroll
-them. Pinned tabs always stay visible and aren't a part of the scrollable
-area.
-
-## CSS nodes
-
-`HdyTabBar` has a single CSS node with name `tabbar`.
-
-
-
-
- Creates a new `HdyTabBar` widget.
-
-
- a new `HdyTabBar`
-
-
-
-
-
- Gets whether the tabs automatically hide.
-
-
- whether the tabs automatically hide
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets the widget shown after the tabs.
-
-
- the widget shown after the tabs
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets whether tabs should expand.
-
-
- whether tabs should expand
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets extra drag destination targets.
-
-
- extra drag targets
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets whether tabs use inverted layout.
-
-
- whether tabs use inverted layout
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets whether @self is overflowing.
-
-
- whether @self is overflowing
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets the widget shown before the tabs.
-
-
- the widget shown before the tabs
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets the value of the [property@TabBar:tabs-revealed] property.
-
-
- whether the tabs are current revealed
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Gets the [class@TabView] @self controls.
-
-
- the [class@TabView] @self controls
-
-
-
-
- a tab bar
-
-
-
-
-
-
- Sets whether the tabs automatically hide.
-
-If @autohide is `TRUE`, the tab bar disappears when the associated
-[class@TabView] has 0 or 1 tab, no pinned tabs, and no tab is being
-transferred.
-
-Autohide is enabled by default.
-
-See [property@TabBar:tabs-revealed].
-
-
-
-
-
-
- a tab bar
-
-
-
- whether the tabs automatically hide
-
-
-
-
-
-
- Sets the widget to show after the tabs.
-
-
-
-
-
-
- a tab bar
-
-
-
- the widget to show after the tabs
-
-
-
-
-
-
- Sets whether tabs should expand.
-
-If @expand_tabs is `TRUE`, the tabs will always vary width filling the whole
-width when possible, otherwise tabs will always have the minimum possible
-size.
-
-Expand is enabled by default.
-
-
-
-
-
-
- a tab bar
-
-
-
- whether to expand tabs
-
-
-
-
-
-
- Sets extra drag destination targets.
-
-This allows to drag arbitrary content onto tabs, for example URLs in a web
-browser.
-
-If a tab is hovered for a certain period of time while dragging the content,
-it will be automatically selected.
-
-After content is dropped, the [signal@TabBar::extra-drag-data-received]
-signal can be used to retrieve and process the drag data.
-
-
-
-
-
-
- a tab bar
-
-
-
- extra drag targets
-
-
-
-
-
-
- Sets whether tabs tabs use inverted layout.
-
-If @inverted is `TRUE`, non-pinned tabs will have the close button at the
-beginning and the indicator at the end rather than the opposite.
-
-
-
-
-
-
- a tab bar
-
-
-
- whether tabs use inverted layout
-
-
-
-
-
-
- Sets the widget to show before the tabs.
-
-
-
-
-
-
- a tab bar
-
-
-
- the widget to show before the tabs
-
-
-
-
-
-
- Sets the [class@TabView] @self controls.
-
-
-
-
-
-
- a tab bar
-
-
-
- a tab view
-
-
-
-
-
-
-
- Whether tabs automatically hide.
-
-If set to `TRUE`, the tab bar disappears when the associated
-[class@TabView] has 0 or 1 tab, no pinned tabs, and no tab is being
-transferred.
-
-See [property@TabBar:tabs-revealed].
-
-
-
-
-
- The widget shown after the tabs.
-
-
-
-
-
- Whether tabs should expand.
-
-If set to `TRUE`, the tabs will always vary width filling the whole width
-when possible, otherwise tabs will always have the minimum possible size.
-
-
-
-
-
- Extra drag destination targets.
-
-Allows to drag arbitrary content onto tabs, for example URLs in a web
-browser.
-
-If a tab is hovered for a certain period of time while dragging the
-content, it will be automatically selected.
-
-After content is dropped, the [signal@TabBar::extra-drag-data-received]
-signal can be used to retrieve and process the drag data.
-
-
-
-
-
- Whether tabs use inverted layout.
-
-If set to `TRUE`, non-pinned tabs will have the close button at the
-beginning and the indicator at the end rather than the opposite.
-
-
-
-
- Whether the tab bar is overflowing.
-
-If set to `TRUE`, all tabs cannot be displayed at once and require
-scrolling.
-
-
-
-
-
- The widget shown before the tabs.
-
-
-
-
- Whether tabs are currently revealed.
-
-See [property@TabBar:autohide].
-
-
-
-
-
- The [class@TabView] the tab bar controls.
-
-
-
- Emitted when content allowed via [property@TabBar:extra-drag-dest-targets]
-is dropped onto a tab.
-
-See [signal@Gtk.Widget::drag-data-received].
-
-
-
-
-
- the tab page matching the tab the content was dropped onto
-
-
-
- the drag context
-
-
-
- the received data
-
-
-
- the info that has been registered with the target in the
- [struct@Gtk.TargetList]
-
-
-
- the timestamp at which the data was received
-
-
-
-
-
-
-
-
-
-
-
-
- An auxiliary class used by [class@TabView].
-
-
-
- Gets the child of @self.
-
-
- the child of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets the icon of @self.
-
-
- the icon of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets whether the indicator of @self is activatable.
-
-
- whether the indicator is activatable
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets the indicator icon of @self.
-
-
- the indicator icon of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets whether @self is loading.
-
-
- whether @self is loading
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets whether @self needs attention.
-
-
- whether @self needs attention
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets the parent page of @self.
-
-
- the parent page of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets whether @self is pinned.
-
-
- whether @self is pinned
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets whether @self is selected.
-
-
- whether @self is selected
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets the title of @self.
-
-
- the title of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Gets the tooltip of @self.
-
-
- the tooltip of @self
-
-
-
-
- a tab page
-
-
-
-
-
-
- Sets the icon of @self.
-
-
-
-
-
-
- a tab page
-
-
-
- the icon of @self
-
-
-
-
-
-
- Sets whether the indicator of @self is activatable.
-
-
-
-
-
-
- a tab page
-
-
-
- whether the indicator is activatable
-
-
-
-
-
-
- Sets the indicator icon of @self.
-
-
-
-
-
-
- a tab page
-
-
-
- the indicator icon of @self
-
-
-
-
-
-
- Sets whether @self is loading.
-
-
-
-
-
-
- a tab page
-
-
-
- whether @self is loading
-
-
-
-
-
-
- Sets whether @self needs attention.
-
-
-
-
-
-
- a tab page
-
-
-
- whether @self needs attention
-
-
-
-
-
-
- Sets the title of @self.
-
-
-
-
-
-
- a tab page
-
-
-
- the title of @self
-
-
-
-
-
-
- Sets the tooltip of @self.
-
-
-
-
-
-
- a tab page
-
-
-
- the tooltip of @self
-
-
-
-
-
-
- The child of the page.
-
-
-
-
-
- The icon of the page.
-
-[class@TabBar] displays the icon next to the title.
-
-It will not show the icon if [property@TabPage:loading] is set to `TRUE`,
-or if the page is pinned and [propertyTabPage:indicator-icon] is set.
-
-
-
-
-
- Whether the indicator icon is activatable.
-
-If set to `TRUE`, [signal@TabView::indicator-activated] will be emitted
-when the indicator icon is clicked.
-
-If [property@TabPage:indicator-icon] is not set, does nothing.
-
-
-
-
-
- An indicator icon for the page.
-
-A common use case is an audio or camera indicator in a web browser.
-
-[class@TabPage] will show it at the beginning of the tab, alongside icon
-representing [property@TabPage:icon] or loading spinner.
-
-If the page is pinned, the indicator will be shown instead of icon or
-spinner.
-
-If [property@TabPage:indicator-activatable] is set to `TRUE`, the indicator
-icon can act as a button.
-
-
-
-
-
- Whether the page is loading.
-
-If set to `TRUE`, [class@TabBar] will display a spinner in place of icon.
-
-If the page is pinned and [property@TabPage:indicator-icon] is set, the
-loading status will not be visible.
-
-
-
-
-
- Whether the page needs attention.
-
-[class@TabBar] will display a glow under the tab representing the page if
-set to `TRUE`. If the tab is not visible, the corresponding edge of the tab
-bar will be highlighted.
-
-
-
-
- The parent page of the page.
-
-See [method@TabView.add_page] and [method@TabView.close_page].
-
-
-
-
- Whether the page is pinned.
-
-See [method@TabView.set_page_pinned].
-
-
-
-
- Whether the page is selected.
-
-
-
-
-
- The title of the page.
-
-[class@TabBar] will display it in the center of the tab unless it's pinned,
-and will use it as a tooltip unless [property@TabPage:tooltip] is set.
-
-
-
-
-
- The tooltip of the page.
-
-The tooltip can be marked up with the Pango text markup language.
-
-If not set, [class@TabBar] will use [property@TabPage:title] as a tooltip
-instead.
-
-
-
-
-
-
-
-
-
-
- A dynamic tabbed container.
-
-`HdyTabView` is a container which shows one child at a time. While it
-provides keyboard shortcuts for switching between pages, it does not provide
-a visible tab bar and relies on external widgets for that, such as
-[class@TabBar].
-
-`HdyTabView` maintains a [class@TabPage] object for each page,which holds
-additional per-page properties. You can obtain the [class@TabPage] for a page
-with [method@TabView.get_page], and as return value for
-[method@TabView.append] and other functions for adding children.
-
-`HdyTabView` only aims to be useful for dynamic tabs in multi-window
-document-based applications, such as web browsers, file managers, text
-editors or terminals. It does not aim to replace [class@Gtk.Notebook] for use
-cases such as tabbed dialogs.
-
-As such, it does not support disabling page reordering or detaching, or
-adding children via [iface@Gtk.Buildable].
-
-## CSS nodes
-
-`HdyTabView` has a main CSS node with the name `tabview`.
-
-It contains the subnode overlay, which contains subnodes stack and widget.
-The stack subnode contains the added pages.
-
-```
-tabview
-╰── overlay
- ├── stack
- │ ╰── [ Children ]
- ╰── widget
-```
-
-
-
-
- Creates a new `HdyTabView`.
-
-
- the newly created `HdyTabView`
-
-
-
-
- Adds @child to @self with @parent as the parent.
-
-This function can be used to automatically position new pages, and to select
-the correct page when this page is closed while being selected (see
-[method@TabView.close_page].
-
-If @parent is `NULL`, this function is equivalent to [method@TabView.append].
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
- a parent page for @child
-
-
-
-
-
- Inserts @child as the last non-pinned page.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
-
-
- Inserts @child as the last pinned page.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
-
-
- Requests to close all pages other than @page.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Requests to close @page.
-
-Calling this function will result in [signal@TabView::close-page] signal
-being emitted for @page. Closing the page can then be confirmed or denied via
-[method@TabView.close_page_finish].
-
-If the page is waiting for a [method@TabView.close_page_finish] call, this
-function will do nothing.
-
-The default handler for [signal@TabView::close-page] will immediately confirm
-closing the page if it's non-pinned, or reject it if it's pinned. This
-behavior can be changed by registering your own handler for that signal.
-
-If @page was selected, another page will be selected instead:
-
-If the [property@TabPage:parent] value is `NULL`, the next page will be
-selected when possible, or if the page was already last, the previous page
-will be selected instead.
-
-If it's not `NULL`, the previous page will be selected if it's a descendant
-(possibly indirect) of the parent. If both the previous page and the parent
-are pinned, the parent will be selected instead.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Completes a [method@TabView.close_page] call for @page.
-
-If @confirm is `TRUE`, @page will be closed. If it's `FALSE`, ite will be
-reverted to its previous state and [method@TabView.close_page] can be called
-for it again.
-
-This function should not be called unless a custom handler for
-[signal@TabView::close-page] is used.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
- whether to confirm or deny closing @page
-
-
-
-
-
- Requests to close all pages after @page.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Requests to close all pages before @page.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
-
- Gets default icon of @self.
-
-
- the default icon of @self
-
-
-
-
- a tab view
-
-
-
-
-
-
- Whether a page is being transferred.
-
-Gets the value of [property@TabView:is-transferring-page] property.
-
-
- whether a page is being transferred
-
-
-
-
- a tab view
-
-
-
-
-
-
- Gets the tab context menu model for @self.
-
-
- the tab context menu model for @self
-
-
-
-
- a tab view
-
-
-
-
-
-
- Gets the number of pages in @self.
-
-
- the number of pages in @self
-
-
-
-
- a tab view
-
-
-
-
-
-
- Gets the number of pinned pages in @self.
-
-See [method@TabView.set_page_pinned].
-
-
- the number of pinned pages in @self
-
-
-
-
- a tab view
-
-
-
-
-
- Gets the [class@TabPage] representing the child at @position.
-
-
- the page object at @position
-
-
-
-
- a tab view
-
-
-
- the index of the page in @self, starting from 0
-
-
-
-
-
- Gets the [class@TabPage] object representing @child.
-
-
- the [class@TabPage] representing @child
-
-
-
-
- a tab view
-
-
-
- a child in @self
-
-
-
-
-
- Finds the position of @page in @self, starting from 0.
-
-
- the position of @page in @self
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Returns a [iface@Gio.ListModel] containing the pages of @self.
-
-This model can be used to keep an up to date view of the pages.
-
-
- the model containing pages of @self
-
-
-
-
- a tab view
-
-
-
-
-
-
- Gets the currently selected page in @self.
-
-
- the selected page in @self
-
-
-
-
- a tab view
-
-
-
-
-
-
- Gets the shortcut widget for @self.
-
-
- the shortcut widget for @self
-
-
-
-
- a tab view
-
-
-
-
-
- Inserts a non-pinned page at @position.
-
-It's an error to try to insert a page before a pinned page, in that case
-[method@TabView.insert_pinned] should be used instead.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
- the position to add @child at, starting from 0
-
-
-
-
-
- Inserts a pinned page at @position.
-
-It's an error to try to insert a pinned page after a non-pinned page, in that
-case [method@TabView.insert] should be used instead.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
- the position to add @child at, starting from 0
-
-
-
-
-
- Inserts @child as the first non-pinned page.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
-
-
- Inserts @child as the first pinned page.
-
-
- the page object representing @child
-
-
-
-
- a tab view
-
-
-
- a widget to add
-
-
-
-
-
- Reorders @page to before its previous page if possible.
-
-
- whether @page was moved
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Reorders @page to the first possible position.
-
-
- whether @page was moved
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Reorders @page to after its next page if possible.
-
-
- whether @page was moved
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Reorders @page to the last possible position.
-
-
- whether @page was moved
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
-
-
- Reorders @page to @position.
-
-It's a programmer error to try to reorder a pinned page after a non-pinned
-one, or a non-pinned page before a pinned one.
-
-
- whether @page was moved
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
- the position to insert the page at, starting at 0
-
-
-
-
-
- Selects the page after the currently selected page.
-
-If the last page was already selected, this function does nothing.
-
-
- whether the selected page was changed
-
-
-
-
- a tab view
-
-
-
-
-
- Selects the page before the currently selected page.
-
-If the first page was already selected, this function does nothing.
-
-
- whether the selected page was changed
-
-
-
-
- a tab view
-
-
-
-
-
-
- Sets default page icon for @self.
-
-If a page doesn't provide its own icon via [property@TabPage:icon], default
-icon may be used instead for contexts where having an icon is necessary.
-
-[class@TabBar] will use default icon for pinned tabs in case the page is not
-loading, doesn't have an icon and an indicator. Default icon is never used
-for tabs that aren't pinned.
-
-By default, `hdy-tab-icon-missing-symbolic` icon is used.
-
-
-
-
-
-
- a tab view
-
-
-
- the default icon
-
-
-
-
-
-
- Sets the tab context menu model for @self.
-
-When a context menu is shown for a tab, it will be constructed from the
-provided menu model. Use [signal@TabView::setup-menu] signal to set up the
-menu actions for the particular tab.
-
-
-
-
-
-
- a tab view
-
-
-
- a menu model
-
-
-
-
-
- Pins or unpins @page.
-
-Pinned pages are guaranteed to be placed before all non-pinned pages; at any
-given moment the first [property@TabView:n-pinned-pages] pages in @self are
-guaranteed to be pinned.
-
-When a page is pinned or unpinned, it's automatically reordered: pinning a
-page moves it after other pinned pages; unpinning a page moves it before
-other non-pinned pages.
-
-Pinned pages can still be reordered between each other.
-
-[class@TabBar] will display pinned pages in a compact form, never showing the
-title or close button, and only showing a single icon, selected in the
-following order:
-
-1. [property@TabPage:indicator-icon]
-2. A spinner if [property@TabPage:loading] is `TRUE`
-3. [property@TabPage:icon]
-4. [property@TabView:default-icon]
-
-Pinned pages cannot be closed by default, see [signal@TabView::close-page]
-for how to override that behavior.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
- whether @page should be pinned
-
-
-
-
-
-
- Sets the currently selected page in @self.
-
-
-
-
-
-
- a tab view
-
-
-
- a page in @self
-
-
-
-
-
-
- Sets the shortcut widget for @self.
-
-
-
-
-
-
- a tab view
-
-
-
- a shortcut widget
-
-
-
-
-
- Transfers @page from @self to @other_view.
-
-The @page object will be reused.
-
-It's a programmer error to try to insert a pinned page after a non-pinned
-one, or a non-pinned page before a pinned one.
-
-
-
-
-
-
- a tab view
-
-
-
- a page of @self
-
-
-
- the tab view to transfer the page to
-
-
-
- the position to insert the page at, starting at 0
-
-
-
-
-
-
-
- Default page icon.
-
-If a page doesn't provide its own icon via [property@TabPage:icon], default
-icon may be used instead for contexts where having an icon is necessary.
-
-[class@TabBar] will use default icon for pinned tabs in case the page is
-not loading, doesn't have an icon and an indicator. Default icon is never
-used for tabs that aren't pinned.
-
-
-
-
- Whether a page is being transferred.
-
-This property will be set to `TRUE` when a drag-n-drop tab transfer starts
-on any [class@TabView], and to `FALSE` after it ends.
-
-During the transfer, children cannot receive pointer input and a tab can be
-safely dropped on the tab view.
-
-
-
-
-
- Tab context menu model.
-
-When a context menu is shown for a tab, it will be constructed from the
-provided menu model. Use [signal@TabView::setup-menu] signal to set up the
-menu actions for the particular tab.
-
-
-
-
- The number of pages in the tab view.
-
-
-
-
- The number of pinned pages in the tab view.
-
-See [method@TabView.set_page_pinned].
-
-
-
-
-
- The currently selected page.
-
-
-
-
-
- Tab shortcut widget.
-
-Has the following shortcuts:
-
-* <kbd>Ctrl</kbd>+<kbd>Page Up</kbd> - switch to the previous page
-* <kbd>Ctrl</kbd>+<kbd>Page Down</kbd> - switch to the next page
-* <kbd>Ctrl</kbd>+<kbd>Home</kbd> - switch to the first page
-* <kbd>Ctrl</kbd>+<kbd>End</kbd> - switch to the last page
-* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Up</kbd> - move the current page
- backward
-* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Page Down</kbd> - move the current
- page forward
-* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Home</kbd> - move the current page at
- the start
-* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>End</kbd> - move the current page at
- the end
-* <kbd>Ctrl</kbd>+<kbd>Tab</kbd> - switch to the next page, with looping
-* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Tab</kbd> - switch to the previous
- page, with looping
-* <kbd>Alt</kbd>+<kbd>1</kbd>⋯<kbd>9</kbd> - switch to pages 1-9
-* <kbd>Alt</kbd>+<kbd>0</kbd> - switch to page 10
-
-These shortcuts are always available on @self, this property is useful if
-they should be available globally.
-
-
-
- Emitted after [method@TabView.close_page] has been called for @page.
-
-The handler is expected to call [method@TabView.close_page_finish] to
-confirm or reject the closing.
-
-The default handler will immediately confirm closing for non-pinned pages,
-or reject it for pinned pages, equivalent to the following example:
-
-```c
-static gboolean
-close_page_cb (HdyTabView *view,
- HdyTabPage *page,
- gpointer user_data)
-{
- hdy_tab_view_close_page_finish (view, page, !hdy_tab_page_get_pinned (page));
-
- return GDK_EVENT_STOP;
-}
-```
-
-The [method@TabView.close_page_finish] doesn't have to happen during the
-handler, so can be used to do asynchronous checks before confirming the
-closing.
-
-A typical reason to connect to this signal is to show a confirmation dialog
-for closing a tab.
-
-
-
-
-
- a page of the view
-
-
-
-
-
- Emitted when a tab should be transferred into a new window.
-
-This can happen after a tab has been dropped on desktop.
-
-The signal handler is expected to create a new window, position it as
-needed and return its `HdyTabView`that the page will be transferred into.
-
- the [class@TabView] from the new
- window
-
-
-
-
- Emitted after the indicator icon on @page has been activated.
-
-See [property@TabPage:indicator-icon] and
-[property@TabPage:indicator-activatable].
-
-
-
-
-
- a page of the view
-
-
-
-
-
- Emitted when a page has been created or transferred to the view.
-
-A typical reason to connect to this signal would be to connect to page
-signals for things such as updating window title.
-
-
-
-
-
- a page of the view
-
-
-
- the position of the page, starting from 0
-
-
-
-
-
- Emitted when a page has been removed or transferred to another view.
-
-A typical reason to connect to this signal would be to disconnect signal
-handlers connected in the [signal@TabView::page-attached] handler.
-
-It is important not to try and destroy the page child in the handler of
-this function as the child might merely be moved to another window; use
-child dispose handler for that or do it in sync with your
-[method@TabView.close_page_finish] calls.
-
-
-
-
-
- a page of the view
-
-
-
- the position of the removed page, starting from 0
-
-
-
-
-
- This signal is emitted after @page has been reordered to @position.
-
-
-
-
-
- a page of the view
-
-
-
- the position @page was moved to, starting at 0
-
-
-
-
-
- Emitted when a context menu is opened or closed for @page.
-
-If the menu has been closed, @page will be set to `NULL`.
-
-It can be used to set up menu actions before showing the menu, for example
-disable actions not applicable to @page.
-
-
-
-
-
- a page of @self
-
-
-
-
-
-
-
-
-
-
-
-
- A simple title bar container.
-
-`HdyTitleBar` is meant to be used as the top-level widget of your window's
-title bar. It will be drawn with the same style as a [class@Gtk.HeaderBar]
-but it won't force a widget layout on you: you can put whatever widget you
-want in it, including a [class@Gtk.HeaderBar].
-
-`HdyTitleBar` becomes really useful when you want to animate header bars,
-like an adaptive application using [class@Leaflet] would do.
-
-`HdyTitleBar` has been deprecated, header bars can be animated without it
-when placed inside [class@Window] or [class@ApplicationWindow].
-
-## CSS nodes
-
-`HdyTitleBar` has a single CSS node with name `headerbar`.
-
-
-
-
- Creates a new `HdyTitleBar`.
-
-
- a new `HdyTitleBar`
-
-
-
-
-
- Returns whether whether @self is in selection mode.
-
-
- `TRUE` if the title bar is in selection mode
-
-
-
-
- a title bar
-
-
-
-
-
-
- Sets whether @self is in selection mode.
-
-
-
-
-
-
- a title bar
-
-
-
- `TRUE` to enable the selection mode
-
-
-
-
-
-
-
- Whether or not the title bar is in selection mode.
-
-
-
-
-
-
-
-
-
-
- An object representing a [struct@GObject.Value].
-
-The `HdyValueObject` object represents a [struct@GObject.Value], allowing it
-to be used with [iface@Gio.ListModel].
-
-
- Creates a new `HdyValueObject`.
-
-
- a new `HdyValueObject`
-
-
-
-
- the value to store
-
-
-
-
-
- Creates a new `HdyValueObject`.
-
-This is a convenience method which uses the `G_VALUE_COLLECT` macro
-internally.
-
-
- a new `HdyValueObject`
-
-
-
-
- the type of the value
-
-
-
- the value to store
-
-
-
-
-
- Creates a new `HdyValueObject`.
-
-This is a convenience method to create a [class@ValueObject] that stores a
-string.
-
-
- a new `HdyValueObject`
-
-
-
-
- the string to store
-
-
-
-
-
- Creates a new `HdyValueObject`.
-
-This is a convenience method to create a [class@ValueObject] that stores a
-string taking ownership of it.
-
-
- a new `HdyValueObject`
-
-
-
-
- the string to store
-
-
-
-
-
- Copy data from the contained [struct@GObject.Value] into @dest.
-
-
-
-
-
-
- the value
-
-
-
- value with correct type to copy into
-
-
-
-
-
- Gets a copy of the contained string if the value is of type `G_TYPE_STRING`.
-
-
- a copy of the contained string
-
-
-
-
- the value
-
-
-
-
-
- Returns the contained string if the value is of type `G_TYPE_STRING`.
-
-
- the contained string
-
-
-
-
- the value
-
-
-
-
-
-
- Return the contained value.
-
-
- the contained [struct@GObject.Value]
-
-
-
-
- the value
-
-
-
-
-
-
- The contained value.
-
-
-
-
-
-
-
-
-
-
- An adaptive view switcher.
-
-An adaptive view switcher, designed to switch between multiple views in a
-similar fashion than a [class@Gtk.StackSwitcher].
-
-Depending on the available width, the view switcher can adapt from a wide
-mode showing the view's icon and title side by side, to a narrow mode showing
-the view's icon and title one on top of the other, in a more compact way.
-This can be controlled via the policy property.
-
-To look good in a header bar, an `HdyViewSwitcher` requires to fill its full
-height. Contrary to [class@Gtk.HeaderBar], [class@HeaderBar] doesn't force a
-vertical alignment on its title widget, so we recommend it over
-[class@Gtk.HeaderBar].
-
-## CSS nodes
-
-`HdyViewSwitcher` has a single CSS node with name `viewswitcher`.
-
-
-
-
- Creates a new `HdyViewSwitcher`.
-
-
- the newly created `HdyViewSwitcher`
-
-
-
-
-
- Get the ellipsizing position of the narrow mode label.
-
-
- a [enum@Pango.EllipsizeMode]
-
-
-
-
- a view switcher
-
-
-
-
-
-
- Gets the policy of @self.
-
-
- the policy of @self
-
-
-
-
- a view switcher
-
-
-
-
-
-
- Gets the stack controlled by @self.
-
-
- the stack
-
-
-
-
- a view switcher
-
-
-
-
-
-
- Sets the mode used to ellipsize the text in narrow mode.
-
-
-
-
-
-
- a view switcher
-
-
-
- a [enum@Pango.EllipsizeMode]
-
-
-
-
-
-
- Sets the policy of @self.
-
-
-
-
-
-
- a view switcher
-
-
-
- the new policy
-
-
-
-
-
-
- Sets the [class@Gtk.Stack] to control.
-
-
-
-
-
-
- a view switcher
-
-
-
- a stack
-
-
-
-
-
-
-
- The preferred place to ellipsize the string.
-
-If the narrow mode label does not have enough room to display the entire
-string, specified as a [enum@Pango.EllipsizeMode].
-
-Note that setting this property to a value other than
-`PANGO_ELLIPSIZE_NONE` has the side-effect that the label requests only
-enough space to display the ellipsis.
-
-
-
-
-
- The policy to determine which mode to use.
-
-
-
-
-
- The [class@Gtk.Stack] the view switcher controls.
-
-
-
-
- A view switcher action bar.
-
-An action bar letting you switch between multiple views offered by a
-[class@Gtk.Stack], via an [class@ViewSwitcher]. It is designed to be put at
-the bottom of a window and to be revealed only on really narrow windows e.g.
-on mobile phones. It can't be revealed if there are less than two pages.
-
-`HdyViewSwitcherBar` is intended to be used together with
-[class@ViewSwitcherTitle].
-
-A common use case is to bind the [property@ViewSwitcherBar:reveal] property
-to [property@ViewSwitcherTitle:title-visible] to automatically reveal the
-view switcher bar when the title label is displayed in place of the view
-switcher, as follows:
-
-```xml
-<object class="GtkWindow"/>
- <child type="titlebar">
- <object class="HdyHeaderBar">
- <property name="centering-policy">strict</property>
- <child type="title">
- <object class="HdyViewSwitcherTitle"
- id="view_switcher_title">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <child>
- <object class="GtkStack" id="stack"/>
- </child>
- <child>
- <object class="HdyViewSwitcherBar">
- <property name="stack">stack</property>
- <property name="reveal"
- bind-source="view_switcher_title"
- bind-property="title-visible"
- bind-flags="sync-create"/>
- </object>
- </child>
- </object>
- </child>
-</object>
-```
-
-## CSS nodes
-
-`HdyViewSwitcherBar` has a single CSS node with name `viewswitcherbar`.
-
-
-
-
- Creates a new `HdyViewSwitcherBar`.
-
-
- the newly created `HdyViewSwitcherBar`
-
-
-
-
-
- Gets the policy of @self.
-
-
- the policy of @self
-
-
-
-
- a view switcher bar
-
-
-
-
-
-
- Gets whether @self should be revealed or hidden.
-
-
- whether @self is revealed
-
-
-
-
- a view switcher bar
-
-
-
-
-
-
- Get the [class@Gtk.Stack] being controlled by the [class@ViewSwitcher].
-
-
- the stack
-
-
-
-
- a view switcher bar
-
-
-
-
-
-
- Sets the policy of @self.
-
-
-
-
-
-
- a view switcher bar
-
-
-
- the new policy
-
-
-
-
-
-
- Sets whether @self should be revealed or not.
-
-
-
-
-
-
- a view switcher bar
-
-
-
- `TRUE` to reveal @self
-
-
-
-
-
-
- Sets the [class@Gtk.Stack] to control.
-
-
-
-
-
-
- a view switcher bar
-
-
-
- a stack
-
-
-
-
-
-
-
- The policy used to determine which mode to use.
-
-
-
-
-
- Whether the bar should be revealed or hidden.
-
-
-
-
-
- The [class@Gtk.Stack] the [class@ViewSwitcher] controls.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Describes the adaptive modes of [class@ViewSwitcher].
-
- Automatically adapt to the best fitting mode
-
-
- Force the narrow mode
-
-
- Force the wide mode
-
-
-
- A view switcher title.
-
-A widget letting you switch between multiple views contained by a
-[class@Gtk.Stack], via an [class@ViewSwitcher].
-
-It is designed to be used as the title widget of a [class@HeaderBar], and
-will display the window's title when the window is too narrow to fit the view
-switcher e.g. on mobile phones, or if there are less than two views.
-
-`HdyViewSwitcherTitle` is intended to be used together with
-[class@ViewSwitcherBar].
-
-A common use case is to bind the [property@ViewSwitcherBar:reveal] property
-to [property@ViewSwitcherTitle:title-visible] to automatically reveal the
-view switcher bar when the title label is displayed in place of the view
-switcher, as follows:
-
-```xml
-<object class="GtkWindow"/>
- <child type="titlebar">
- <object class="HdyHeaderBar">
- <property name="centering-policy">strict</property>
- <child type="title">
- <object class="HdyViewSwitcherTitle"
- id="view_switcher_title">
- <property name="stack">stack</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <child>
- <object class="GtkStack" id="stack"/>
- </child>
- <child>
- <object class="HdyViewSwitcherBar">
- <property name="stack">stack</property>
- <property name="reveal"
- bind-source="view_switcher_title"
- bind-property="title-visible"
- bind-flags="sync-create"/>
- </object>
- </child>
- </object>
- </child>
-</object>
-```
-
-## CSS nodes
-
-`HdyViewSwitcherTitle` has a single CSS node with name `viewswitchertitle`.
-
-
-
-
- Creates a new `HdyViewSwitcherTitle`.
-
-
- the newly created `HdyViewSwitcherTitle`
-
-
-
-
-
- Gets the policy of @self.
-
-
- the policy of @self
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Gets the stack controlled by @self.
-
-
- the stack
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Gets the subtitle of @self.
-
-
- the subtitle of @self
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Gets the title of @self.
-
-
- the title of @self
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Gets whether the title of @self is currently visible.
-
-
- whether the title of @self is currently visible
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Gets whether @self's view switcher is enabled.
-
-
- whether the view switcher is enabled
-
-
-
-
- a view switcher title
-
-
-
-
-
-
- Sets the policy of @self.
-
-
-
-
-
-
- a view switcher title
-
-
-
- the new policy
-
-
-
-
-
-
- Sets the [class@Gtk.Stack] to control.
-
-
-
-
-
-
- a view switcher title
-
-
-
- a stack
-
-
-
-
-
-
- Sets the subtitle of @self.
-
-
-
-
-
-
- a view switcher title
-
-
-
- a subtitle
-
-
-
-
-
-
- Sets the title of @self.
-
-
-
-
-
-
- a view switcher title
-
-
-
- a title
-
-
-
-
-
-
- Sets whether @self's view switcher is enabled.
-
-
-
-
-
-
- a view switcher title
-
-
-
- `TRUE` to enable the view switcher, `FALSE` to disable it
-
-
-
-
-
-
-
- The policy used to determine which mode to use.
-
-
-
-
-
- The [class@Gtk.Stack] the [class@ViewSwitcher] controls.
-
-
-
-
-
- The subtitle of the [class@ViewSwitcher].
-
-The subtitle should give a user additional details.
-
-
-
-
-
- The title of the [class@ViewSwitcher].
-
-The title should give a user additional details. A good title should not
-include the application name.
-
-
-
-
- Whether the bar should be revealed or hidden.
-
-
-
-
-
- Whether the bar should be revealed or hidden.
-
-If it is disabled, the title will be displayed instead. This allows to
-programmatically hide the view switcher even if it fits in the available
-space.
-
-This can be used e.g. to ensure the view switcher is hidden below a certain
-window width, or any other constraint you find suitable.
-
-
-
-
-
-
-
-
-
-
- A freeform window.
-
-The `HdyWindow` widget is a subclass of [class@Gtk.Window] which has no
-titlebar area and provides rounded corners on all sides, ensuring they can
-never be overlapped by the content. This makes it safe to use headerbars in
-the content area as follows:
-
-```xml
-<object class="HdyWindow"/>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="HdyHeaderBar">
- <property name="visible">True</property>
- <property name="show-close-button">True</property>
- </object>
- </child>
- <child>
- <!-- ... -->
- </child>
- </object>
- </child>
-</object>
-```
-
-It's recommended to use [class@HeaderBar] with `HdyWindow`, as unlike
-[class@Gtk.HeaderBar] it remains draggable inside the window. Otherwise,
-[class@WindowHandle] can be used.
-
-`HdyWindow` allows to easily implement titlebar autohiding by putting the
-headerbar inside a [class@Gtk.Revealer], and to show titlebar above content
-by putting it into a [class@Gtk.Overlay] instead of [class@Gtk.Box].
-
-If the window has a [class@Gtk.GLArea], it may bring a slight performance
-regression when the window is not fullscreen, tiled or maximized.
-
-Using [method@Gtk.Window.get_titlebar] and [method@Gtk.Window.set_titlebar]
-is not supported and will result in a crash.
-
-## CSS nodes
-
-`HdyWindow` has a main CSS node with the name `window` and style classes
-`.background`, `.csd` and `.unified`.
-
-The `.solid-csd` style class on the main node is used for client-side
-decorations without invisible borders.
-
-`HdyWindow` also represents window states with the following style classes on
-the main node: `.tiled`, `.maximized`, `.fullscreen`.
-
-It contains the subnodes decoration for window shadow and/or border,
-decoration-overlay for the sheen on top of the window, `widget.titlebar`, and
-deck, which contains the child inside the window.
-
-
-
-
- Creates a new `HdyWindow`.
-
-
- the newly created `HdyWindow`
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- A bin that acts like a titlebar.
-
-`HdyWindowHandle` is a [class@Gtk.Bin] subclass that can be dragged to move
-its [class@Gtk.Window], and handles right click, middle click and double
-click as expected from a titlebar. This is particularly useful with
-[class@Window] or [class@ApplicationWindow].
-
-It isn't necessary to use `HdyWindowHandle` if you use [class@HeaderBar].
-
-It can be safely nested or used in the actual window titlebar.
-
-## CSS nodes
-
-`HdyWindowHandle` has a single CSS node with name `windowhandle`.
-
-
-
-
- Creates a new `HdyWindowHandle`.
-
-
- the newly created `HdyWindowHandle`
-
-
-
-
-
-
-
-
-
-
-
- Computes the ease out for a value.
-
-
- the ease out for @t
-
-
-
-
- the term
-
-
-
-
-
- Returns the name of a [class@EnumValueObject].
-
-This is a default implementation of [callback@ComboRowGetEnumValueNameFunc]
-to be used with [method@ComboRow.set_for_enum]. If the enumeration has a
-nickname, it will return it, otherwise it will return its name.
-
-
- a displayable name that represents @value
-
-
-
-
- the value from the enum from which to get a name
-
-
-
- unused user data
-
-
-
-
-
- Checks whether animations are enabled for @widget.
-
-This should be used when implementing an animated widget to know whether to
-animate it or not.
-
-
- whether animations are enabled for @widget
-
-
-
-
- a widget
-
-
-
-
-
- Initializes Libhandy.
-
-Call this function just after initializing GTK, if you are using
-[class@Gtk.Application] it means it must be called when the
-[signal@Gio.Application::startup] signal is emitted.
-
-If Libhandy has already been initialized, the function will simply return.
-
-This makes sure translations, types, themes, and icons for the Handy library
-are set up properly.
-
-
-
-
-
-
-
diff --git a/libphosh-rs/NM-1.0.gir b/libphosh-rs/NM-1.0.gir
index 1b45719b3..38966a3c1 100644
--- a/libphosh-rs/NM-1.0.gir
+++ b/libphosh-rs/NM-1.0.gir
@@ -2,596 +2,299 @@
-
+
-
-
- 802.11 access point flags.
-
- access point has no special capabilities
-
-
- access point requires authentication and
+
+
+ 802.11 access point flags.
+
+ access point has no special capabilities
+
+
+ access point requires authentication and
encryption (usually means WEP)
-
- access point supports some WPS method
-
-
- access point supports push-button WPS
-
-
- access point supports PIN-based WPS
+
+ access point supports some WPS method
+
+
+ access point supports push-button WPS
+
+
+ access point supports PIN-based WPS
-
- 802.11 access point security and authentication flags. These flags describe
+
+ 802.11 access point security and authentication flags. These flags describe
the current security requirements of an access point as determined from the
access point's beacon.
-
- the access point has no special security requirements
-
-
- 40/64-bit WEP is supported for
+
+ the access point has no special security requirements
+
+
+ 40/64-bit WEP is supported for
pairwise/unicast encryption
-
- 104/128-bit WEP is supported for
+
+ 104/128-bit WEP is supported for
pairwise/unicast encryption
-
- TKIP is supported for pairwise/unicast encryption
-
-
- AES/CCMP is supported for pairwise/unicast encryption
-
-
- 40/64-bit WEP is supported for group/broadcast
+
+ TKIP is supported for pairwise/unicast encryption
+
+
+ AES/CCMP is supported for pairwise/unicast encryption
+
+
+ 40/64-bit WEP is supported for group/broadcast
encryption
-
- 104/128-bit WEP is supported for
+
+ 104/128-bit WEP is supported for
group/broadcast encryption
-
- TKIP is supported for group/broadcast encryption
-
-
- AES/CCMP is supported for group/broadcast
+
+ TKIP is supported for group/broadcast encryption
+
+
+ AES/CCMP is supported for group/broadcast
encryption
-
- WPA/RSN Pre-Shared Key encryption is
+
+ WPA/RSN Pre-Shared Key encryption is
supported
-
- 802.1x authentication and key management
+
+ 802.1x authentication and key management
is supported
-
- WPA/RSN Simultaneous Authentication of Equals is
+
+ WPA/RSN Simultaneous Authentication of Equals is
supported
-
- WPA/RSN Opportunistic Wireless Encryption is
+
+ WPA/RSN Opportunistic Wireless Encryption is
supported
-
- WPA/RSN Opportunistic Wireless Encryption
+
+ WPA/RSN Opportunistic Wireless Encryption
transition mode is supported. Since: 1.26.
-
- WPA3 Enterprise Suite-B 192 bit mode
+
+ WPA3 Enterprise Suite-B 192 bit mode
is supported. Since: 1.30.
-
- Indicates the 802.11 mode an access point or device is currently in.
-
- the device or access point mode is unknown
-
-
- for both devices and access point objects, indicates
+
+ Indicates the 802.11 mode an access point or device is currently in.
+
+ the device or access point mode is unknown
+
+
+ for both devices and access point objects, indicates
the object is part of an Ad-Hoc 802.11 network without a central
coordinating access point.
-
- the device or access point is in infrastructure mode.
+
+ the device or access point is in infrastructure mode.
For devices, this indicates the device is an 802.11 client/station. For
access point objects, this indicates the object is an access point that
provides connectivity to clients.
-
- the device is an access point/hotspot. Not valid for
+
+ the device is an access point/hotspot. Not valid for
access point objects; used only for hotspot mode on the local machine.
-
- the device is a 802.11s mesh point. Since: 1.20.
+
+ the device is a 802.11s mesh point. Since: 1.20.
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
- Validates a given connection against a given Wi-Fi access point to ensure that
+
+
+
+ Validates a given connection against a given Wi-Fi access point to ensure that
the connection may be activated with that AP. The connection must match the
@ap's SSID, (if given) BSSID, and other attributes like security settings,
channel, band, etc.
-
+
- %TRUE if the connection may be activated with this Wi-Fi AP,
+ %TRUE if the connection may be activated with this Wi-Fi AP,
%FALSE if it cannot be.
- an #NMAccessPoint to validate @connection against
+ an #NMAccessPoint to validate @connection against
- an #NMConnection to validate against @ap
+ an #NMConnection to validate against @ap
-
- Filters a given array of connections for a given #NMAccessPoint object and
+
+ Filters a given array of connections for a given #NMAccessPoint object and
returns connections which may be activated with the access point. Any
returned connections will match the @ap's SSID and (if given) BSSID and
other attributes like security settings, channel, etc.
@@ -600,12 +303,9 @@ To obtain the list of connections that are compatible with this access point,
use nm_client_get_connections() and then filter the returned list for a given
#NMDevice using nm_device_filter_connections() and finally filter that list
with this function.
-
+
- an array of
+ an array of
#NMConnections that could be activated with the given @ap. The array should
be freed with g_ptr_array_unref() when it is no longer required.
@@ -618,15 +318,11 @@ WARNING: the transfer annotation for this function may not work correctly
- an #NMAccessPoint to filter connections for
+ an #NMAccessPoint to filter connections for
- an array of #NMConnections to
+ an array of #NMConnections to
filter
@@ -634,624 +330,339 @@ filter
-
- Gets the bandwidth advertised by the access point in MHz.
-
+
+ Gets the bandwidth advertised by the access point in MHz.
+
- the advertised bandwidth (MHz)
+ the advertised bandwidth (MHz)
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the Basic Service Set ID (BSSID) of the Wi-Fi access point.
-
+
+ Gets the Basic Service Set ID (BSSID) of the Wi-Fi access point.
+
- the BSSID of the access point. This is an internal string and must
+ the BSSID of the access point. This is an internal string and must
not be modified or freed.
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the flags of the access point.
-
+
+ Gets the flags of the access point.
+
- the flags
+ the flags
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the frequency of the access point in MHz.
-
+
+ Gets the frequency of the access point in MHz.
+
- the frequency in MHz
+ the frequency in MHz
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Returns the timestamp (in CLOCK_BOOTTIME seconds) for the last time the
+
+ Returns the timestamp (in CLOCK_BOOTTIME seconds) for the last time the
access point was found in scan results. A value of -1 means the access
point has not been found in a scan.
-
+
- the last seen time in seconds
+ the last seen time in seconds
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the maximum bit rate of the access point in kbit/s.
-
+
+ Gets the maximum bit rate of the access point in kbit/s.
+
- the maximum bit rate (kbit/s)
+ the maximum bit rate (kbit/s)
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the mode of the access point.
-
+
+ Gets the mode of the access point.
+
- the mode
+ the mode
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the RSN (Robust Secure Network, ie WPA version 2) flags of the access
+
+ Gets the RSN (Robust Secure Network, ie WPA version 2) flags of the access
point.
-
+
- the RSN flags
+ the RSN flags
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the SSID of the access point.
-
+
+ Gets the SSID of the access point.
+
- the #GBytes containing the SSID, or %NULL if the
+ the #GBytes containing the SSID, or %NULL if the
SSID is unknown.
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the current signal strength of the access point as a percentage.
-
+
+ Gets the current signal strength of the access point as a percentage.
+
- the signal strength (0 to 100)
+ the signal strength (0 to 100)
- a #NMAccessPoint
+ a #NMAccessPoint
-
- Gets the WPA (version 1) flags of the access point.
-
+
+ Gets the WPA (version 1) flags of the access point.
+
- the WPA flags
+ the WPA flags
- a #NMAccessPoint
+ a #NMAccessPoint
-
- The channel bandwidth announced by the AP in MHz.
+
+ The channel bandwidth announced by the AP in MHz.
-
- The BSSID of the access point.
+
+ The BSSID of the access point.
-
- The flags of the access point.
+
+ The flags of the access point.
-
- The frequency of the access point.
+
+ The frequency of the access point.
-
- Alias for #NMAccessPoint:bssid.
+
+ Alias for #NMAccessPoint:bssid.
Use #NMAccessPoint:bssid.
-
- The timestamp (in CLOCK_BOOTTIME seconds) for the last time the
+
+ The timestamp (in CLOCK_BOOTTIME seconds) for the last time the
access point was found in scan results. A value of -1 means the
access point has not been found in a scan.
-
- The maximum bit rate of the access point in kbit/s.
+
+ The maximum bit rate of the access point in kbit/s.
-
- The mode of the access point; either "infrastructure" (a central
+
+ The mode of the access point; either "infrastructure" (a central
coordinator of the wireless network allowing clients to connect) or
"ad-hoc" (a network with no central controller).
-
- The RSN flags of the access point.
+
+ The RSN flags of the access point.
- The SSID of the access point, or %NULL if it is not known.
+ The SSID of the access point, or %NULL if it is not known.
-
- The current signal strength of the access point.
+
+ The current signal strength of the access point.
-
- The WPA flags of the access point.
+
+ The WPA flags of the access point.
-
-
+
+
-
- Flags describing the current activation state.
-
- an alias for numeric zero, no flags set.
-
-
- the device is a master.
-
-
- the device is a slave.
-
-
- layer2 is activated and ready.
-
-
- IPv4 setting is completed.
-
-
- IPv6 setting is completed.
-
-
- The master has any slave devices attached.
+
+ Flags describing the current activation state.
+
+ an alias for numeric zero, no flags set.
+
+
+ the device is a master.
+
+
+ the device is a slave.
+
+
+ layer2 is activated and ready.
+
+
+ IPv4 setting is completed.
+
+
+ IPv6 setting is completed.
+
+
+ The master has any slave devices attached.
This only makes sense if the device is a master.
-
- the lifetime
+
+ the lifetime
of the activation is bound to the visibility of the connection profile,
which in turn depends on "connection.permissions" and whether a session
for the user exists. Since: 1.16.
-
- the active connection was generated to
+
+ the active connection was generated to
represent an external configuration of a networking device. Since: 1.26.
-
-
-
- Gets the #NMRemoteConnection associated with @connection.
-
-
- the #NMRemoteConnection which this
+
+
+
+ Gets the #NMRemoteConnection associated with @connection.
+
+
+ the #NMRemoteConnection which this
#NMActiveConnection is an active instance of.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the #NMConnection's type.
-
+
+ Gets the #NMConnection's type.
+
- the type of the #NMConnection that backs the #NMActiveConnection.
+ the type of the #NMConnection that backs the #NMActiveConnection.
This is the internal string used by the connection, and must not be modified.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the controller #NMDevice of the connection. This replaces the
+
+ Gets the controller #NMDevice of the connection. This replaces the
deprecated nm_active_connection_get_master() method.
-
+
- the controller #NMDevice of the #NMActiveConnection.
+ the controller #NMDevice of the #NMActiveConnection.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Whether the active connection is the default IPv4 one (that is, is used for
+
+ Whether the active connection is the default IPv4 one (that is, is used for
the default IPv4 route and DNS information).
-
+
- %TRUE if the active connection is the default IPv4 connection
+ %TRUE if the active connection is the default IPv4 connection
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Whether the active connection is the default IPv6 one (that is, is used for
+
+ Whether the active connection is the default IPv6 one (that is, is used for
the default IPv6 route and DNS information).
-
+
- %TRUE if the active connection is the default IPv6 connection
+ %TRUE if the active connection is the default IPv6 connection
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the #NMDevices used for the active connections.
-
+
+ Gets the #NMDevices used for the active connections.
+
- the #GPtrArray containing #NMDevices.
+ the #GPtrArray containing #NMDevices.
This is the internal copy used by the connection, and must not be modified.
@@ -1259,457 +670,267 @@ This is the internal copy used by the connection, and must not be modified.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the current IPv4 #NMDhcpConfig (if any) associated with the
+
+ Gets the current IPv4 #NMDhcpConfig (if any) associated with the
#NMActiveConnection.
-
+
- the IPv4 #NMDhcpConfig, or %NULL if the connection
+ the IPv4 #NMDhcpConfig, or %NULL if the connection
does not use DHCP, or is not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED
state.
- an #NMActiveConnection
+ an #NMActiveConnection
-
- Gets the current IPv6 #NMDhcpConfig (if any) associated with the
+
+ Gets the current IPv6 #NMDhcpConfig (if any) associated with the
#NMActiveConnection.
-
+
- the IPv6 #NMDhcpConfig, or %NULL if the connection
+ the IPv6 #NMDhcpConfig, or %NULL if the connection
does not use DHCPv6, or is not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED
state.
- an #NMActiveConnection
+ an #NMActiveConnection
-
- Gets the #NMConnection's ID.
-
+
+ Gets the #NMConnection's ID.
+
- the ID of the #NMConnection that backs the #NMActiveConnection.
+ the ID of the #NMConnection that backs the #NMActiveConnection.
This is the internal string used by the connection, and must not be modified.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the current IPv4 #NMIPConfig associated with the #NMActiveConnection.
-
+
+ Gets the current IPv4 #NMIPConfig associated with the #NMActiveConnection.
+
- the IPv4 #NMIPConfig, or %NULL if the connection is
+ the IPv4 #NMIPConfig, or %NULL if the connection is
not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
- an #NMActiveConnection
+ an #NMActiveConnection
-
- Gets the current IPv6 #NMIPConfig associated with the #NMActiveConnection.
-
+
+ Gets the current IPv6 #NMIPConfig associated with the #NMActiveConnection.
+
- the IPv6 #NMIPConfig, or %NULL if the connection is
+ the IPv6 #NMIPConfig, or %NULL if the connection is
not in the %NM_ACTIVE_CONNECTION_STATE_ACTIVATED state.
- an #NMActiveConnection
+ an #NMActiveConnection
-
- Gets the master #NMDevice of the connection.
+
+ Gets the master #NMDevice of the connection.
Use nm_active_connection_get_controller() instead.
-
+
- the master #NMDevice of the #NMActiveConnection.
+ the master #NMDevice of the #NMActiveConnection.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the path of the "specific object" used at activation.
+
+ Gets the path of the "specific object" used at activation.
Currently, there is no single method that will allow you to automatically turn
this into an appropriate #NMObject; you need to know what kind of object it
is based on other information. (Eg, if @connection corresponds to a Wi-Fi
connection, then the specific object will be an #NMAccessPoint, and you can
resolve it with nm_device_wifi_get_access_point_by_path().)
-
+
- the specific object's D-Bus path. This is the internal string used
+ the specific object's D-Bus path. This is the internal string used
by the connection, and must not be modified.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the active connection's state.
-
+
+ Gets the active connection's state.
+
- the state
+ the state
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the active connection's state flags.
-
+
+ Gets the active connection's state flags.
+
- the state flags
+ the state flags
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the reason for active connection's state.
-
+
+ Gets the reason for active connection's state.
+
- the reason
-
+ the reason
+
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Gets the #NMConnection's UUID.
-
+
+ Gets the #NMConnection's UUID.
+
- the UUID of the #NMConnection that backs the #NMActiveConnection.
+ the UUID of the #NMConnection that backs the #NMActiveConnection.
This is the internal string used by the connection, and must not be modified.
- a #NMActiveConnection
+ a #NMActiveConnection
-
- Whether the active connection is a VPN connection.
-
+
+ Whether the active connection is a VPN connection.
+
- %TRUE if the active connection is a VPN connection
+ %TRUE if the active connection is a VPN connection
- a #NMActiveConnection
+ a #NMActiveConnection
-
- The connection that this is an active instance of.
+
+ The connection that this is an active instance of.
-
- The controller device if one exists. This replaces the deprecated
+
+ The controller device if one exists. This replaces the deprecated
"master" property.
-
- Whether the active connection is the default IPv4 one.
+
+ Whether the active connection is the default IPv4 one.
-
- Whether the active connection is the default IPv6 one.
+
+ Whether the active connection is the default IPv6 one.
- The devices of the active connection.
+ The devices of the active connection.
-
- The IPv4 #NMDhcpConfig of the connection.
+
+ The IPv4 #NMDhcpConfig of the connection.
-
- The IPv6 #NMDhcpConfig of the connection.
+
+ The IPv6 #NMDhcpConfig of the connection.
-
- The active connection's ID
+
+ The active connection's ID
-
- The IPv4 #NMIPConfig of the connection.
+
+ The IPv4 #NMIPConfig of the connection.
-
- The IPv6 #NMIPConfig of the connection.
+
+ The IPv6 #NMIPConfig of the connection.
-
- The master device if one exists. Replaced by the "controller" property.
+
+ The master device if one exists. Replaced by the "controller" property.
-
- The path to the "specific object" of the active connection; see
+
+ The path to the "specific object" of the active connection; see
nm_active_connection_get_specific_object_path() for more details.
-
- The state of the active connection.
+
+ The state of the active connection.
-
- The state flags of the active connection.
+
+ The state flags of the active connection.
- The active connection's type
+ The active connection's type
-
- The active connection's UUID
+
+ The active connection's UUID
-
- Whether the active connection is a VPN connection.
+
+ Whether the active connection is a VPN connection.
@@ -1718,314 +939,132 @@ nm_active_connection_get_specific_object_path() for more details.
- the new state number (#NMActiveConnectionState)
+ the new state number (#NMActiveConnectionState)
- the state change reason (#NMActiveConnectionStateReason)
+ the state change reason (#NMActiveConnectionStateReason)
-
-
+
+
-
- #NMActiveConnectionState values indicate the state of a connection to a
+
+ #NMActiveConnectionState values indicate the state of a connection to a
specific network while it is starting, connected, or disconnecting from that
network.
-
- the state of the connection is unknown
-
-
- a network connection is being prepared
-
-
- there is a connection to the network
-
-
- the network connection is being
+
+ the state of the connection is unknown
+
+
+ a network connection is being prepared
+
+
+ there is a connection to the network
+
+
+ the network connection is being
torn down and cleaned up
-
- the network connection is disconnected
+
+ the network connection is disconnected
and will be removed
-
- Active connection state reasons.
-
- The reason for the active connection
+
+ Active connection state reasons.
+
+ The reason for the active connection
state change is unknown.
-
- No reason was given for the active
+
+ No reason was given for the active
connection state change.
-
- The active connection changed
+
+ The active connection changed
state because the user disconnected it.
-
- The active connection
+
+ The active connection
changed state because the device it was using was disconnected.
-
- The service providing the
+
+ The service providing the
VPN connection was stopped.
-
- The IP config of the active
+
+ The IP config of the active
connection was invalid.
-
- The connection attempt to
+
+ The connection attempt to
the VPN service timed out.
-
- A timeout occurred
+
+ A timeout occurred
while starting the service providing the VPN connection.
-
- Starting the service
+
+ Starting the service
providing the VPN connection failed.
-
- Necessary secrets for the
+
+ Necessary secrets for the
connection were not provided.
-
- Authentication to the
+
+ Authentication to the
server failed.
-
- The connection was
+
+ The connection was
deleted from settings.
-
- Master connection of this
+
+ Master connection of this
connection failed to activate.
-
- Could not create the
+
+ Could not create the
software device link.
-
- The device this connection
+
+ The device this connection
depended on disappeared.
-
- Errors returned from the secret-agent manager.
+
+ Errors returned from the secret-agent manager.
These errors may be returned from operations that could cause secrets to be
requested (such as nm_client_activate_connection()), and correspond to D-Bus
errors in the "org.freedesktop.NetworkManager.AgentManager" namespace.
-
- unknown or unspecified error
-
-
- The caller does not have permission
+
+ unknown or unspecified error
+
+
+ The caller does not have permission
to register a secret agent, or is trying to register the same secret agent
twice.
-
- The identifier is not a valid
+
+ The identifier is not a valid
secret agent identifier.
-
- The caller tried to unregister an agent
+
+ The caller tried to unregister an agent
that was not registered.
-
- No secret agent returned secrets for this
+
+ No secret agent returned secrets for this
request
-
- The user canceled the secrets request.
+
+ The user canceled the secrets request.
@@ -2033,105 +1072,56 @@ errors in the "org.freedesktop.NetworkManager.AgentManager" namespace.
-
-
+
+
-
-
+
+
-
- #NMBluetoothCapabilities values indicate the usable capabilities of a
+
+ #NMBluetoothCapabilities values indicate the usable capabilities of a
Bluetooth device.
-
- device has no usable capabilities
-
-
- device provides Dial-Up Networking capability
-
-
- device provides Network Access Point capability
+
+ device has no usable capabilities
+
+
+ device provides Dial-Up Networking capability
+
+
+ device provides Network Access Point capability
-
-
+
+
- Creates a new #NMBridgeVlan object for the given VLAN id range.
+ Creates a new #NMBridgeVlan object for the given VLAN id range.
Setting @vid_end to 0 is equivalent to setting it to @vid_start
and creates a single-id VLAN.
Since 1.42, ref-counting of #NMBridgeVlan is thread-safe.
-
+
- the new #NMBridgeVlan object.
+ the new #NMBridgeVlan object.
- the start VLAN id, must be between 1 and 4094.
+ the start VLAN id, must be between 1 and 4094.
- the end VLAN id, must be 0 or between @vid_start and 4094.
+ the end VLAN id, must be 0 or between @vid_start and 4094.
- Compare two bridge VLAN objects.
-
-
- zero of the two instances are equivalent or
+ Compare two bridge VLAN objects.
+
+
+ zero of the two instances are equivalent or
a non-zero integer otherwise. This defines a total ordering
over the VLANs. Whether a VLAN is sealed or not does not
affect the comparison.
@@ -2139,388 +1129,251 @@ Since 1.42, ref-counting of #NMBridgeVlan is thread-safe.
- a #NMBridgeVlan
+ a #NMBridgeVlan
- another #NMBridgeVlan
+ another #NMBridgeVlan
-
- Gets the VLAN id range.
-
+
+ Gets the VLAN id range.
+
- %TRUE is the VLAN specifies a range, %FALSE if it is
+ %TRUE is the VLAN specifies a range, %FALSE if it is
a single-id VLAN.
- the #NMBridgeVlan
+ the #NMBridgeVlan
-
- location to store the VLAN id range start.
+
+ location to store the VLAN id range start.
-
- location to store the VLAN id range end
+
+ location to store the VLAN id range end
-
- Returns whether the VLAN is the PVID for the port.
-
+
+ Returns whether the VLAN is the PVID for the port.
+
- %TRUE if the VLAN is the PVID
+ %TRUE if the VLAN is the PVID
- the #NMBridgeVlan
+ the #NMBridgeVlan
-
-
+
+
- whether @self is sealed or not.
+ whether @self is sealed or not.
- the #NMBridgeVlan instance
+ the #NMBridgeVlan instance
-
- Returns whether the VLAN is untagged.
-
+
+ Returns whether the VLAN is untagged.
+
- %TRUE if the VLAN is untagged, %FALSE otherwise
+ %TRUE if the VLAN is untagged, %FALSE otherwise
- the #NMBridgeVlan
+ the #NMBridgeVlan
-
-
+
+
- a clone of @vlan. This instance
+ a clone of @vlan. This instance
is always unsealed.
- the #NMBridgeVlan instance to copy
+ the #NMBridgeVlan instance to copy
- Increases the reference count of the object.
-
+ Increases the reference count of the object.
+
- the input argument @vlan object.
+ the input argument @vlan object.
Since 1.42, ref-counting of #NMBridgeVlan is thread-safe.
- the #NMBridgeVlan
+ the #NMBridgeVlan
- Seal the #NMBridgeVlan instance. Afterwards, it is a bug
+ Seal the #NMBridgeVlan instance. Afterwards, it is a bug
to call all functions that modify the instance (except ref/unref).
A sealed instance cannot be unsealed again, but you can create
an unsealed copy with nm_bridge_vlan_new_clone().
-
+
- the #NMBridgeVlan instance
+ the #NMBridgeVlan instance
-
- Change the value of the PVID property of the VLAN. It
+
+ Change the value of the PVID property of the VLAN. It
is invalid to set the value to %TRUE for non-single-id
VLANs.
-
+
- the #NMBridgeVlan
+ the #NMBridgeVlan
- the new value
+ the new value
-
- Change the value of the untagged property of the VLAN.
-
+
+ Change the value of the untagged property of the VLAN.
+
- the #NMBridgeVlan
+ the #NMBridgeVlan
- the new value
+ the new value
-
- Convert a %NMBridgeVlan to a string.
-
+
+ Convert a %NMBridgeVlan to a string.
+
- formatted string or %NULL
+ formatted string or %NULL
- the %NMBridgeVlan
+ the %NMBridgeVlan
- Decreases the reference count of the object. If the reference count
+ Decreases the reference count of the object. If the reference count
reaches zero the object will be destroyed.
Since 1.42, ref-counting of #NMBridgeVlan is thread-safe.
-
+
- the #NMBridgeVlan
+ the #NMBridgeVlan
-
- Parses the string representation of the queueing
+
+ Parses the string representation of the queueing
discipline to a %NMBridgeVlan instance.
-
+
- the %NMBridgeVlan or %NULL
+ the %NMBridgeVlan or %NULL
- the string representation of a bridge VLAN
+ the string representation of a bridge VLAN
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
- major version (e.g. 1 for version 1.2.5)
+ major version (e.g. 1 for version 1.2.5)
- minor version (e.g. 2 for version 1.2.5)
+ minor version (e.g. 2 for version 1.2.5)
- micro version (e.g. 5 for version 1.2.5)
+ micro version (e.g. 5 for version 1.2.5)
@@ -2531,126 +1384,86 @@ discipline to a %NMBridgeVlan instance.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2658,54 +1471,38 @@ discipline to a %NMBridgeVlan instance.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2713,39 +1510,27 @@ discipline to a %NMBridgeVlan instance.
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2761,314 +1546,171 @@ discipline to a %NMBridgeVlan instance.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
- #NMCapability names the numbers in the Capabilities property.
+
+ #NMCapability names the numbers in the Capabilities property.
Capabilities are positive numbers. They are part of stable API
and a certain capability number is guaranteed not to change.
The range 0x7000 - 0x7FFF of capabilities is guaranteed not to be
used by upstream NetworkManager. It could thus be used for downstream
extensions.
-
- Teams can be managed. This means the team device plugin
+
+ Teams can be managed. This means the team device plugin
is loaded.
-
- OpenVSwitch can be managed. This means the OVS device plugin
+
+ OpenVSwitch can be managed. This means the OVS device plugin
is loaded. Since: 1.24.
-
-
-
- Gets the timestamp (in CLOCK_BOOTTIME milliseconds) of checkpoint creation.
+
+
+
+ Gets the timestamp (in CLOCK_BOOTTIME milliseconds) of checkpoint creation.
Use nm_utils_get_timestamp_msec() to obtain current time value suitable for
comparing to this value.
-
+
- the timestamp of checkpoint creation.
+ the timestamp of checkpoint creation.
- a #NMCheckpoint
+ a #NMCheckpoint
-
- The devices that are part of this checkpoint.
-
+
+ The devices that are part of this checkpoint.
+
- the devices list.
+ the devices list.
- a #NMCheckpoint
+ a #NMCheckpoint
-
- Gets the timeout in seconds for automatic rollback.
-
+
+ Gets the timeout in seconds for automatic rollback.
+
- the rollback timeout.
+ the rollback timeout.
- a #NMCheckpoint
+ a #NMCheckpoint
-
- The timestamp (in CLOCK_BOOTTIME milliseconds) of checkpoint creation.
+
+ The timestamp (in CLOCK_BOOTTIME milliseconds) of checkpoint creation.
-
- The devices that are part of this checkpoint.
+
+ The devices that are part of this checkpoint.
-
- Timeout in seconds for automatic rollback, or zero.
+
+ Timeout in seconds for automatic rollback, or zero.
-
-
+
+
-
- The flags for CheckpointCreate call
- Public since 1.4, g-ir since 1.12.
-
- no flags
-
-
- when creating
+
+ The flags for CheckpointCreate call
+
+ no flags
+
+
+ when creating
a new checkpoint, destroy all existing ones.
-
- upon rollback,
+
+ upon rollback,
delete any new connection added after the checkpoint. Since: 1.6.
-
- upon rollback,
+
+ upon rollback,
disconnect any new device appeared after the checkpoint. Since: 1.6.
-
- by default, creating
+
+ by default, creating
a checkpoint fails if there are already existing checkpoints that
reference the same devices. With this flag, creation of such
checkpoints is allowed, however, if an older checkpoint
@@ -3081,30 +1723,16 @@ comparing to this value.
checkpoint can be automatically destroyed by the rollback
of an older checkpoint. Since: 1.12.
-
- during rollback,
+
+ during rollback,
by default externally added ports attached to bridge devices are preserved.
With this flag, the rollback detaches all external ports.
This only has an effect for bridge ports. Before 1.38, this was the default
behavior. Since: 1.38.
-
- NMClient contains a cache of the objects of NetworkManager's D-Bus API.
+
+ NMClient contains a cache of the objects of NetworkManager's D-Bus API.
It uses #GMainContext and #GDBusConnection for that and registers to
D-Bus signals. That means, when iterating the associated #GMainContext,
D-Bus signals gets processed and the #NMClient instance updates and
@@ -3113,9 +1741,7 @@ emits #GObject signals.
- Creates a new #NMClient synchronously.
+ Creates a new #NMClient synchronously.
Note that this will block until a NMClient instance is fully initialized.
This does nothing beside calling g_initable_new(). You are free to call
@@ -3148,53 +1774,34 @@ leaks. See nm_client_get_context_busy_watcher().
Creating an #NMClient instance when NetworkManager is not running
does not cause a failure.
-
+
- a new #NMClient or NULL on an error
+ a new #NMClient or NULL on an error
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- Gets the result of an nm_client_new_async() call.
-
+
+ Gets the result of an nm_client_new_async() call.
+
- a new #NMClient, or %NULL on error
+ a new #NMClient, or %NULL on error
- a #GAsyncResult
+ a #GAsyncResult
- Creates a new #NMClient asynchronously.
+ Creates a new #NMClient asynchronously.
@callback will be called when it is done. Use
nm_client_new_finish() to get the result.
@@ -3215,70 +1822,41 @@ leaks. See nm_client_get_context_busy_watcher().
Creating an #NMClient instance when NetworkManager is not running
does not cause a failure.
-
+
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to call when the client is created
+
+ callback to call when the client is created
-
- data for @callback
+
+ data for @callback
-
-
-
- %TRUE if waiting is complete successfully. In that case, all resources of the
+
+
+
+ %TRUE if waiting is complete successfully. In that case, all resources of the
nmclient are wrapped up and released. This can only fail by user cancellation.
- a #GAsyncResult obtained from the #GAsyncReadyCallback passed to nm_client_wait_shutdown()
+ a #GAsyncResult obtained from the #GAsyncReadyCallback passed to nm_client_wait_shutdown()
-
- Asynchronously starts a connection to a particular network using the
+
+ Asynchronously starts a connection to a particular network using the
configuration settings from @connection and the network device @device.
Certain connection types also take a "specific object" which is the object
path of a connection- specific object, like an #NMAccessPoint for Wi-Fi
@@ -3294,43 +1872,25 @@ Note that the callback is invoked when NetworkManager has started activating
the new connection, not when it finishes. You can use the returned
#NMActiveConnection object (in particular, #NMActiveConnection:state) to
track the activation to its completion.
-
+
- a #NMClient
+ a #NMClient
-
- an #NMConnection
+
+ an #NMConnection
-
- the #NMDevice
+
+ the #NMDevice
-
- the object path of a connection-type-specific
+
+ the object path of a connection-type-specific
object this activation should use. This parameter is currently ignored for
wired and mobile broadband connections, and the value of %NULL should be used
(ie, no specific object). For Wi-Fi or WiMAX connections, pass the object
@@ -3339,73 +1899,41 @@ track the activation to its completion.
details of the newly added connection.
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the activation has started
+
+ callback to be called when the activation has started
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_activate_connection_async().
-
+
+ Gets the result of a call to nm_client_activate_connection_async().
+
- the new #NMActiveConnection on success, %NULL on
+ the new #NMActiveConnection on success, %NULL on
failure, in which case @error will be set.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Adds a new connection using the given details (if any) as a template,
+
+ Adds a new connection using the given details (if any) as a template,
automatically filling in missing settings with the capabilities of the given
device and specific object. The new connection is then asynchronously
activated as with nm_client_activate_connection_async(). Cannot be used for
@@ -3426,45 +1954,27 @@ by the daemon:
meaning an explicit disconnect is needed. The value "dbus-client"
means the connection will automatically be deactivated when the calling
D-Bus client disappears from the system bus.
-
+
- a #NMClient
+ a #NMClient
-
- an #NMConnection to add; the connection may be
+
+ an #NMConnection to add; the connection may be
partially filled (or even %NULL) and will be completed by NetworkManager
using the given @device and @specific_object before being added
-
- the #NMDevice
+
+ the #NMDevice
-
- the object path of a connection-type-specific
+
+ the object path of a connection-type-specific
object this activation should use. This parameter is currently ignored for
wired and mobile broadband connections, and the value of %NULL should be used
(i.e., no specific object). For Wi-Fi or WiMAX connections, pass the object
@@ -3474,95 +1984,53 @@ by the daemon:
- a #GVariant containing a dictionary with options, or %NULL
+ a #GVariant containing a dictionary with options, or %NULL
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the activation has started
+
+ callback to be called when the activation has started
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_add_and_activate_connection2().
+
+ Gets the result of a call to nm_client_add_and_activate_connection2().
You can call nm_active_connection_get_connection() on the returned
#NMActiveConnection to find the path of the created #NMConnection.
-
+
- the new #NMActiveConnection on success, %NULL on
+ the new #NMActiveConnection on success, %NULL on
failure, in which case @error will be set.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- the output result
+
+ the output result
of type "a{sv}" returned by D-Bus' AddAndActivate2 call. Currently, no
output is implemented yet.
-
- Adds a new connection using the given details (if any) as a template,
+
+ Adds a new connection using the given details (if any) as a template,
automatically filling in missing settings with the capabilities of the given
device and specific object. The new connection is then asynchronously
activated as with nm_client_activate_connection_async(). Cannot be used for
@@ -3572,45 +2040,27 @@ Note that the callback is invoked when NetworkManager has started activating
the new connection, not when it finishes. You can used the returned
#NMActiveConnection object (in particular, #NMActiveConnection:state) to
track the activation to its completion.
-
+
- a #NMClient
+ a #NMClient
-
- an #NMConnection to add; the connection may be
+
+ an #NMConnection to add; the connection may be
partially filled (or even %NULL) and will be completed by NetworkManager
using the given @device and @specific_object before being added
-
- the #NMDevice
+
+ the #NMDevice
-
- the object path of a connection-type-specific
+
+ the object path of a connection-type-specific
object this activation should use. This parameter is currently ignored for
wired and mobile broadband connections, and the value of %NULL should be used
(ie, no specific object). For Wi-Fi or WiMAX connections, pass the object
@@ -3620,115 +2070,68 @@ track the activation to its completion.
If the variant is floating, it will be consumed.
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the activation has started
+
+ callback to be called when the activation has started
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_add_and_activate_connection_async().
+
+ Gets the result of a call to nm_client_add_and_activate_connection_async().
You can call nm_active_connection_get_connection() on the returned
#NMActiveConnection to find the path of the created #NMConnection.
-
+
- the new #NMActiveConnection on success, %NULL on
+ the new #NMActiveConnection on success, %NULL on
failure, in which case @error will be set.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Call AddConnection2() D-Bus API asynchronously.
-
+
+ Call AddConnection2() D-Bus API asynchronously.
+
- the %NMClient
+ the %NMClient
- the "a{sa{sv}}" #GVariant with the content of the setting.
+ the "a{sa{sv}}" #GVariant with the content of the setting.
- the %NMSettingsAddConnection2Flags argument.
-
-
-
- the "a{sv}" #GVariant with extra argument or %NULL
+ the %NMSettingsAddConnection2Flags argument.
+
+
+
+ the "a{sv}" #GVariant with extra argument or %NULL
for no extra arguments.
- this function wraps AddConnection2(), which has an
+ this function wraps AddConnection2(), which has an
additional result "a{sv}" output parameter. By setting this to %TRUE,
you signal that you are not interested in that output parameter.
This allows the function to fall back to AddConnection() and AddConnectionUnsaved(),
@@ -3737,73 +2140,38 @@ You can call nm_active_connection_get_connection() on the returned
under the hood always calls AddConnection2().
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
-
+
+
- on success, a pointer to the added
+ on success, a pointer to the added
#NMRemoteConnection.
- the #NMClient
+ the #NMClient
- the #GAsyncResult
+ the #GAsyncResult
-
- the output
+
+ the output
#GVariant from AddConnection2().
If you care about the output result, then the "ignore_out_result"
parameter of nm_client_add_connection2() must not be set to %TRUE.
@@ -3811,11 +2179,8 @@ You can call nm_active_connection_get_connection() on the returned
-
- Requests that the remote settings service add the given settings to a new
+
+ Requests that the remote settings service add the given settings to a new
connection. If @save_to_disk is %TRUE, the connection is immediately written
to disk; otherwise it is initially only stored in memory, but may be saved
later by calling the connection's nm_remote_connection_commit_changes()
@@ -3829,565 +2194,325 @@ operation is complete.
Note that the #NMRemoteConnection returned in @callback may not contain
identical settings to @connection as NetworkManager may perform automatic
completion and/or normalization of connection properties.
-
+
- the %NMClient
+ the %NMClient
- the connection to add. Note that this object's settings will be
+ the connection to add. Note that this object's settings will be
added, not the object itself
- whether to immediately save the connection to disk
+ whether to immediately save the connection to disk
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_add_connection_async().
-
+
+ Gets the result of a call to nm_client_add_connection_async().
+
- the new #NMRemoteConnection on success, %NULL on
+ the new #NMRemoteConnection on success, %NULL on
failure, in which case @error will be set.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Updates the network connectivity state and returns the (new)
+
+ Updates the network connectivity state and returns the (new)
current state. Contrast nm_client_get_connectivity(), which returns
the most recent known state without re-checking.
This is a blocking call; use nm_client_check_connectivity_async()
if you do not want to block.
Use nm_client_check_connectivity_async() or GDBusConnection.
-
+
- the (new) current connectivity state
+ the (new) current connectivity state
- an #NMClient
+ an #NMClient
-
- a #GCancellable
+
+ a #GCancellable
-
- Asynchronously updates the network connectivity state and invokes
+
+ Asynchronously updates the network connectivity state and invokes
@callback when complete. Contrast nm_client_get_connectivity(),
which (immediately) returns the most recent known state without
re-checking, and nm_client_check_connectivity(), which blocks.
-
+
- an #NMClient
+ an #NMClient
-
- a #GCancellable
+
+ a #GCancellable
-
- callback to call with the result
+
+ callback to call with the result
-
- data for @callback.
+
+ data for @callback.
-
- Retrieves the result of an nm_client_check_connectivity_async()
+
+ Retrieves the result of an nm_client_check_connectivity_async()
call.
-
+
- the (new) current connectivity state
+ the (new) current connectivity state
- an #NMClient
+ an #NMClient
- the #GAsyncResult
+ the #GAsyncResult
-
- Resets the timeout for the checkpoint with path @checkpoint_path
+
+ Resets the timeout for the checkpoint with path @checkpoint_path
to @timeout_add.
-
+
- the %NMClient
+ the %NMClient
- a D-Bus path to a checkpoint
+ a D-Bus path to a checkpoint
- the timeout in seconds counting from now.
+ the timeout in seconds counting from now.
Set to zero, to disable the timeout.
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_checkpoint_adjust_rollback_timeout().
-
+
+ Gets the result of a call to nm_client_checkpoint_adjust_rollback_timeout().
+
- %TRUE on success or %FALSE on failure.
+ %TRUE on success or %FALSE on failure.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Creates a checkpoint of the current networking configuration
+
+ Creates a checkpoint of the current networking configuration
for given interfaces. An empty @devices argument means all
devices. If @rollback_timeout is not zero, a rollback is
automatically performed after the given timeout.
-
+
- the %NMClient
+ the %NMClient
- a list of devices for which a
+ a list of devices for which a
checkpoint should be created.
- the rollback timeout in seconds
+ the rollback timeout in seconds
- creation flags
-
-
-
- a #GCancellable, or %NULL
+ creation flags
+
+
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_checkpoint_create().
-
+
+ Gets the result of a call to nm_client_checkpoint_create().
+
- the new #NMCheckpoint on success, %NULL on
+ the new #NMCheckpoint on success, %NULL on
failure, in which case @error will be set.
- the #NMClient
+ the #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Destroys an existing checkpoint without performing a rollback.
-
+
+ Destroys an existing checkpoint without performing a rollback.
+
- the %NMClient
+ the %NMClient
- the D-Bus path for the checkpoint
+ the D-Bus path for the checkpoint
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_checkpoint_destroy().
-
+
+ Gets the result of a call to nm_client_checkpoint_destroy().
+
- %TRUE on success or %FALSE on failure, in which case
+ %TRUE on success or %FALSE on failure, in which case
@error will be set.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Performs the rollback of a checkpoint before the timeout is reached.
-
+
+ Performs the rollback of a checkpoint before the timeout is reached.
+
- the %NMClient
+ the %NMClient
- the D-Bus path to the checkpoint
+ the D-Bus path to the checkpoint
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_checkpoint_rollback().
-
+
+ Gets the result of a call to nm_client_checkpoint_rollback().
+
- an hash table of
+ an hash table of
devices and results. Devices are represented by their original
D-Bus path; each result is a #NMRollbackResult.
@@ -4397,129 +2522,83 @@ automatically performed after the given timeout.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Determine whether connectivity checking is available. This
+
+ Determine whether connectivity checking is available. This
requires that the URI of a connectivity service has been set in the
configuration file.
-
+
- %TRUE if connectivity checking is available.
+ %TRUE if connectivity checking is available.
- a #NMClient
+ a #NMClient
-
- Determine whether connectivity checking is enabled.
-
+
+ Determine whether connectivity checking is enabled.
+
- %TRUE if connectivity checking is enabled.
+ %TRUE if connectivity checking is enabled.
- a #NMClient
+ a #NMClient
-
- Get the URI that will be queried to determine if there is internet
+
+ Get the URI that will be queried to determine if there is internet
connectivity.
-
+
- the connectivity URI in use
+ the connectivity URI in use
- a #NMClient
+ a #NMClient
-
- Enable or disable connectivity checking. Note that if a
+
+ Enable or disable connectivity checking. Note that if a
connectivity checking URI has not been configured, this will not
have any effect.
Use the async command nm_client_dbus_set_property() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to set "ConnectivityCheckEnabled" property to a "(b)" value.
-
+
- a #NMClient
+ a #NMClient
- %TRUE to enable connectivity checking
+ %TRUE to enable connectivity checking
-
- Call g_dbus_connection_call() on the current name owner with the specified
+
+ Call g_dbus_connection_call() on the current name owner with the specified
arguments. Most importantly, this invokes g_dbus_connection_call() with the
client's #GMainContext, so that the response is always in order with other
events D-Bus events. Of course, the call uses #GTask and will invoke the
@@ -4527,401 +2606,235 @@ callback on the current g_main_context_get_thread_default().
This API is merely a convenient wrapper for g_dbus_connection_call(). You can
also use g_dbus_connection_call() directly, with the same effect.
-
+
- the #NMClient
+ the #NMClient
- path of remote object
+ path of remote object
- D-Bus interface to invoke method on
+ D-Bus interface to invoke method on
- the name of the method to invoke
+ the name of the method to invoke
-
- a #GVariant tuple with parameters for the method
+
+ a #GVariant tuple with parameters for the method
or %NULL if not passing parameters
-
- the expected type of the reply (which will be a
+
+ the expected type of the reply (which will be a
tuple), or %NULL
- the timeout in milliseconds, -1 to use the default
+ the timeout in milliseconds, -1 to use the default
timeout or %G_MAXINT for no timeout
-
- a #GCancellable or %NULL
+
+ a #GCancellable or %NULL
-
- a #GAsyncReadyCallback to call when the request
+
+ a #GAsyncReadyCallback to call when the request
is satisfied or %NULL if you don't care about the result of the
method invocation
-
- the data to pass to @callback
+
+ the data to pass to @callback
-
- Gets the result of a call to nm_client_dbus_call().
-
+
+ Gets the result of a call to nm_client_dbus_call().
+
- the result #GVariant or %NULL on error.
+ the result #GVariant or %NULL on error.
- the #NMClient instance
+ the #NMClient instance
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Like nm_client_dbus_call() but calls "Set" on the standard "org.freedesktop.DBus.Properties"
+
+ Like nm_client_dbus_call() but calls "Set" on the standard "org.freedesktop.DBus.Properties"
D-Bus interface.
-
+
- the #NMClient
+ the #NMClient
- path of remote object
+ path of remote object
- D-Bus interface for the property to set.
+ D-Bus interface for the property to set.
- the name of the property to set
+ the name of the property to set
- a #GVariant with the value to set.
+ a #GVariant with the value to set.
- the timeout in milliseconds, -1 to use the default
+ the timeout in milliseconds, -1 to use the default
timeout or %G_MAXINT for no timeout
-
- a #GCancellable or %NULL
+
+ a #GCancellable or %NULL
-
- a #GAsyncReadyCallback to call when the request
+
+ a #GAsyncReadyCallback to call when the request
is satisfied or %NULL if you don't care about the result of the
method invocation
-
- the data to pass to @callback
+
+ the data to pass to @callback
-
- Gets the result of a call to nm_client_dbus_set_property().
-
+
+ Gets the result of a call to nm_client_dbus_set_property().
+
- %TRUE on success or %FALSE on failure.
+ %TRUE on success or %FALSE on failure.
- the #NMClient instance
+ the #NMClient instance
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Deactivates an active #NMActiveConnection.
+
+ Deactivates an active #NMActiveConnection.
Use nm_client_deactivate_connection_async() or GDBusConnection.
-
+
- success or failure
+ success or failure
- a #NMClient
+ a #NMClient
- the #NMActiveConnection to deactivate
+ the #NMActiveConnection to deactivate
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- Asynchronously deactivates an active #NMActiveConnection.
-
+
+ Asynchronously deactivates an active #NMActiveConnection.
+
- a #NMClient
+ a #NMClient
- the #NMActiveConnection to deactivate
+ the #NMActiveConnection to deactivate
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the deactivation has completed
+
+ callback to be called when the deactivation has completed
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of a call to nm_client_deactivate_connection_async().
-
+
+ Gets the result of a call to nm_client_deactivate_connection_async().
+
- success or failure
+ success or failure
- a #NMClient
+ a #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Gets the #NMActiveConnection corresponding to a
+
+ Gets the #NMActiveConnection corresponding to a
currently-activating connection that is expected to become the new
#NMClient:primary-connection upon successful activation.
-
+
- the appropriate #NMActiveConnection, if
+ the appropriate #NMActiveConnection, if
any.
- an #NMClient
+ an #NMClient
-
- Gets the active connections.
-
+
+ Gets the active connections.
+
- a #GPtrArray
+ a #GPtrArray
containing all the active #NMActiveConnections.
The returned array is owned by the client and should not be modified.
@@ -4930,20 +2843,13 @@ The returned array is owned by the client and should not be modified.
- a #NMClient
+ a #NMClient
-
- Gets both real devices and device placeholders (eg, software devices which
+
+ Gets both real devices and device placeholders (eg, software devices which
do not currently exist, but could be created automatically by NetworkManager
if one of their NMDevice::ActivatableConnections was activated). Use
nm_device_is_real() to determine whether each device is a real device or
@@ -4952,12 +2858,9 @@ a placeholder.
Use nm_device_get_type() or the NM_IS_DEVICE_XXXX() functions to determine
what kind of device each member of the returned array is, and then you may
use device-specific methods such as nm_device_ethernet_get_hw_address().
-
+
- a #GPtrArray
+ a #GPtrArray
containing all the #NMDevices. The returned array is owned by the
#NMClient object and should not be modified.
@@ -4966,23 +2869,15 @@ containing all the #NMDevices. The returned array is owned by the
- a #NMClient
+ a #NMClient
-
-
+
+
- the
+ the
list of capabilities reported by the server or %NULL
if the capabilities are unknown.
The numeric values correspond to #NMCapability enum.
@@ -4994,37 +2889,20 @@ containing all the #NMDevices. The returned array is owned by the
- the #NMClient instance
+ the #NMClient instance
-
- the number of returned capabilities.
+
+ the number of returned capabilities.
-
- Gets all the active checkpoints.
-
+
+ Gets all the active checkpoints.
+
- a #GPtrArray
+ a #GPtrArray
containing all the #NMCheckpoint. The returned array is owned by the
#NMClient object and should not be modified.
@@ -5033,24 +2911,16 @@ containing all the #NMCheckpoint. The returned array is owned by the
- a #NMClient
+ a #NMClient
-
- Returns the first matching %NMRemoteConnection matching a given @id.
-
+
+ Returns the first matching %NMRemoteConnection matching a given @id.
+
- the remote connection object on success, or %NULL if no
+ the remote connection object on success, or %NULL if no
matching object was found.
The connection is as received from D-Bus and might not validate according
@@ -5059,30 +2929,20 @@ to nm_connection_verify().
- the %NMClient
+ the %NMClient
- the id of the remote connection
+ the id of the remote connection
-
- Returns the %NMRemoteConnection representing the connection at @path.
-
+
+ Returns the %NMRemoteConnection representing the connection at @path.
+
- the remote connection object on success, or %NULL if the object was
+ the remote connection object on success, or %NULL if the object was
not known
The connection is as received from D-Bus and might not validate according
@@ -5091,30 +2951,20 @@ to nm_connection_verify().
- the %NMClient
+ the %NMClient
- the D-Bus object path of the remote connection
+ the D-Bus object path of the remote connection
-
- Returns the %NMRemoteConnection identified by @uuid.
-
+
+ Returns the %NMRemoteConnection identified by @uuid.
+
- the remote connection object on success, or %NULL if the object was
+ the remote connection object on success, or %NULL if the object was
not known
The connection is as received from D-Bus and might not validate according
@@ -5123,28 +2973,19 @@ to nm_connection_verify().
- the %NMClient
+ the %NMClient
- the UUID of the remote connection
+ the UUID of the remote connection
-
-
+
+
- an array
+ an array
containing all connections provided by the remote settings service. The
returned array is owned by the #NMClient object and should not be modified.
@@ -5156,48 +2997,32 @@ to nm_connection_verify().
- the %NMClient
+ the %NMClient
-
- Gets the current network connectivity state. Contrast
+
+ Gets the current network connectivity state. Contrast
nm_client_check_connectivity() and
nm_client_check_connectivity_async(), which re-check the
connectivity state first before returning any information.
-
+
- the current connectivity state
+ the current connectivity state
- an #NMClient
+ an #NMClient
-
-
+
+
- a GObject that stays alive as long as there are pending
+ a GObject that stays alive as long as there are pending
D-Bus operations.
NMClient will schedule asynchronous D-Bus requests which will complete on
@@ -5230,131 +3055,84 @@ NMClient is gone completely.
- the NMClient instance.
+ the NMClient instance.
-
- Gets the %GDBusConnection of the instance. This can be either passed when
+
+ Gets the %GDBusConnection of the instance. This can be either passed when
constructing the instance (as "dbus-connection" property), or it will be
automatically initialized during async/sync init.
-
+
- the D-Bus connection of the client, or %NULL if none is set.
+ the D-Bus connection of the client, or %NULL if none is set.
- a #NMClient
+ a #NMClient
-
-
+
+
- the current name owner of the D-Bus service of NetworkManager.
+ the current name owner of the D-Bus service of NetworkManager.
- a #NMClient
+ a #NMClient
-
- Gets a #NMDevice from a #NMClient.
-
+
+ Gets a #NMDevice from a #NMClient.
+
- the #NMDevice for the given @iface or %NULL if none is found.
+ the #NMDevice for the given @iface or %NULL if none is found.
- a #NMClient
+ a #NMClient
- the interface name to search for
+ the interface name to search for
-
- Gets a #NMDevice from a #NMClient.
-
+
+ Gets a #NMDevice from a #NMClient.
+
- the #NMDevice for the given @object_path or %NULL if none is found.
+ the #NMDevice for the given @object_path or %NULL if none is found.
- a #NMClient
+ a #NMClient
- the object path to search for
+ the object path to search for
-
- Gets all the known network devices. Use nm_device_get_type() or the
+
+ Gets all the known network devices. Use nm_device_get_type() or the
<literal>NM_IS_DEVICE_XXXX</literal> functions to determine what kind of
device member of the returned array is, and then you may use device-specific
methods such as nm_device_ethernet_get_hw_address().
-
+
- a #GPtrArray
+ a #GPtrArray
containing all the #NMDevices. The returned array is owned by the
#NMClient object and should not be modified.
@@ -5363,26 +3141,16 @@ containing all the #NMDevices. The returned array is owned by the
- a #NMClient
+ a #NMClient
-
- Gets the current DNS configuration
-
+
+ Gets the current DNS configuration
+
- a #GPtrArray
+ a #GPtrArray
containing #NMDnsEntry elements or %NULL in case the value is not
available. The returned array is owned by the #NMClient object
and should not be modified.
@@ -5392,143 +3160,82 @@ and should not be modified.
- a #NMClient
+ a #NMClient
-
- Gets the current DNS processing mode.
-
+
+ Gets the current DNS processing mode.
+
- the DNS processing mode, or %NULL in case the
+ the DNS processing mode, or %NULL in case the
value is not available.
- the #NMClient
+ the #NMClient
-
- Gets the current DNS resolv.conf manager.
-
+
+ Gets the current DNS resolv.conf manager.
+
- the resolv.conf manager or %NULL in case the
+ the resolv.conf manager or %NULL in case the
value is not available.
- the #NMClient
+ the #NMClient
-
-
+
+
- the #NMClientInstanceFlags flags.
+ the #NMClientInstanceFlags flags.
- the #NMClient instance.
+ the #NMClient instance.
-
- Gets NetworkManager current logging level and domains.
+
+ Gets NetworkManager current logging level and domains.
Use the async command nm_client_dbus_call() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to call "GetLogging" with no arguments to get "(ss)" for level
and domains.
-
+
- %TRUE on success, %FALSE otherwise
+ %TRUE on success, %FALSE otherwise
- a #NMClient
+ a #NMClient
-
- return location for logging level string
+
+ return location for logging level string
-
- return location for log domains string. The string is
+
+ return location for log domains string. The string is
a list of domains separated by ","
-
- The #NMClient instance is permanently associated with the current
+
+ The #NMClient instance is permanently associated with the current
thread default #GMainContext, referenced the time when the instance
was created. To receive events, the user must iterate this context
and can use it to synchronize access to the client.
@@ -5537,134 +3244,86 @@ Note that even after #NMClient instance got destroyed, there might
still be pending sources registered in the context. That means, to fully
clean up, the user must continue iterating the context as long as
the nm_client_get_context_busy_watcher() object is alive.
-
+
- the #GMainContext of the client.
+ the #GMainContext of the client.
- the #NMClient instance
+ the #NMClient instance
-
-
+
+
- whether the default route is metered.
+ whether the default route is metered.
- a #NMClient
+ a #NMClient
-
- Determines whether the daemon is running.
-
+
+ Determines whether the daemon is running.
+
- %TRUE if the daemon is running
+ %TRUE if the daemon is running
- a #NMClient
+ a #NMClient
-
-
+
+
- the #NMObject instance that is
+ the #NMObject instance that is
cached under @dbus_path, or %NULL if no such object exists.
- the #NMClient instance
+ the #NMClient instance
- the D-Bus path of the object to look up
+ the D-Bus path of the object to look up
-
- Requests the result of a specific permission, which indicates whether the
+
+ Requests the result of a specific permission, which indicates whether the
client can or cannot perform the action the permission represents
-
+
- the permission's result, one of #NMClientPermissionResult
-
+ the permission's result, one of #NMClientPermissionResult
+
- a #NMClient
+ a #NMClient
- the permission for which to return the result, one of #NMClientPermission
+ the permission for which to return the result, one of #NMClientPermission
-
-
+
+
- the state of the cached permissions. %NM_TERNARY_DEFAULT
+ the state of the cached permissions. %NM_TERNARY_DEFAULT
means that no permissions result was yet received. All permissions
are unknown. %NM_TERNARY_TRUE means that the permissions got received
and are cached. %%NM_TERNARY_FALSE means that permissions are cached,
@@ -5674,19 +3333,13 @@ client can or cannot perform the action the permission represents
- the #NMClient instance
+ the #NMClient instance
-
- Gets the #NMActiveConnection corresponding to the primary active
+
+ Gets the #NMActiveConnection corresponding to the primary active
network device.
In particular, when there is no VPN active, or the VPN does not
@@ -5697,134 +3350,84 @@ route to the VPN endpoint.
If there is no default route, or the default route is over a
non-NetworkManager-recognized device, this will return %NULL.
-
+
- the appropriate #NMActiveConnection, if
+ the appropriate #NMActiveConnection, if
any
- an #NMClient
+ an #NMClient
-
- Get radio flags.
-
+
+ Get radio flags.
+
- the #NMRadioFlags.
+ the #NMRadioFlags.
- a #NMClient
+ a #NMClient
-
- Tests whether the daemon is still in the process of activating
+
+ Tests whether the daemon is still in the process of activating
connections at startup.
-
+
- whether the daemon is still starting up
+ whether the daemon is still starting up
- a #NMClient
+ a #NMClient
-
- Gets the current daemon state.
-
+
+ Gets the current daemon state.
+
- the current %NMState
+ the current %NMState
- a #NMClient
+ a #NMClient
-
- Gets NetworkManager version.
-
+
+ Gets NetworkManager version.
+
- string with the version (or %NULL if NetworkManager is not running)
+ string with the version (or %NULL if NetworkManager is not running)
- a #NMClient
+ a #NMClient
-
- If available, the first element in the array is NM_VERSION which
+
+ If available, the first element in the array is NM_VERSION which
encodes the daemon version as "(major << 16 | minor << 8 | micro)".
The following elements are a bitfield of %NMVersionInfoCapabilities
that indicate that the daemon supports a certain capability.
-
+
- the
+ the
list of capabilities reported by the server or %NULL
if the capabilities are unknown.
@@ -5833,30 +3436,17 @@ that indicate that the daemon supports a certain capability.
- the #NMClient instance
+ the #NMClient instance
-
- the number of returned capabilities.
+
+ the number of returned capabilities.
-
- Requests that the remote settings service load or reload the given files,
+
+ Requests that the remote settings service load or reload the given files,
adding or updating the connections described within.
The changes to the indicated files will not yet be reflected in
@@ -5868,12 +3458,9 @@ NetworkManager tried to load the files, but some (or all) failed,
then @failures will be set to a %NULL-terminated array of the
filenames that failed to load.
Use nm_client_load_connections_async() or GDBusConnection.
-
+
- %TRUE on success.
+ %TRUE on success.
Warning: before libnm 1.22, the boolean return value was inconsistent.
That is made worse, because when running against certain server versions
@@ -5887,589 +3474,342 @@ Warning: before libnm 1.22, the boolean return value was inconsistent.
- the %NMClient
+ the %NMClient
- %NULL-terminated array of filenames to load
+ %NULL-terminated array of filenames to load
-
- on return, a %NULL-terminated array of
+
+ on return, a %NULL-terminated array of
filenames that failed to load
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- Requests that the remote settings service asynchronously load or reload the
+
+ Requests that the remote settings service asynchronously load or reload the
given files, adding or updating the connections described within.
See nm_client_load_connections() for more details.
-
+
- the %NMClient
+ the %NMClient
- %NULL-terminated array of filenames to load
+ %NULL-terminated array of filenames to load
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the operation completes
+
+ callback to be called when the operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of an nm_client_load_connections_async() call.
+
+ Gets the result of an nm_client_load_connections_async() call.
See nm_client_load_connections() for more details.
-
+
- %TRUE on success.
+ %TRUE on success.
Note that even in the success case, you might have individual @failures.
- the %NMClient
+ the %NMClient
-
- on return, a
+
+ on return, a
%NULL-terminated array of filenames that failed to load
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Whether networking is enabled or disabled.
-
+
+ Whether networking is enabled or disabled.
+
- %TRUE if networking is enabled, %FALSE if networking is disabled
+ %TRUE if networking is enabled, %FALSE if networking is disabled
- a #NMClient
+ a #NMClient
-
- Enables or disables networking. When networking is disabled, all controlled
+
+ Enables or disables networking. When networking is disabled, all controlled
interfaces are disconnected and deactivated. When networking is enabled,
all controlled interfaces are available for activation.
Use the async command nm_client_dbus_call() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to call "Enable" with "(b)" arguments and no return value.
-
+
- %TRUE on success, %FALSE otherwise
+ %TRUE on success, %FALSE otherwise
- a #NMClient
+ a #NMClient
- %TRUE to set networking enabled, %FALSE to set networking disabled
+ %TRUE to set networking enabled, %FALSE to set networking disabled
- Reload NetworkManager's configuration and perform certain updates, like
+ Reload NetworkManager's configuration and perform certain updates, like
flushing caches or rewriting external state to disk. This is similar to
sending SIGHUP to NetworkManager but it allows for more fine-grained control
over what to reload (see @flags). It also allows non-root access via
PolicyKit and contrary to signals it is synchronous.
-
+
- the %NMClient
+ the %NMClient
- flags indicating what to reload.
+ flags indicating what to reload.
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the add operation completes
+
+ callback to be called when the add operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Requests that the remote settings service reload all connection
+
+ Requests that the remote settings service reload all connection
files from disk, adding, updating, and removing connections until
the in-memory state matches the on-disk state.
Use nm_client_reload_connections_async() or GDBusConnection.
-
+
- %TRUE on success, %FALSE on failure
+ %TRUE on success, %FALSE on failure
- the #NMClient
+ the #NMClient
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- Requests that the remote settings service begin reloading all connection
+
+ Requests that the remote settings service begin reloading all connection
files from disk, adding, updating, and removing connections until the
in-memory state matches the on-disk state.
-
+
- the #NMClient
+ the #NMClient
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the reload operation completes
+
+ callback to be called when the reload operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of an nm_client_reload_connections_async() call.
-
+
+ Gets the result of an nm_client_reload_connections_async() call.
+
- %TRUE on success, %FALSE on failure
+ %TRUE on success, %FALSE on failure
- the #NMClient
+ the #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Gets the result of a call to nm_client_reload().
-
+
+ Gets the result of a call to nm_client_reload().
+
- %TRUE on success or %FALSE on failure.
+ %TRUE on success or %FALSE on failure.
- an #NMClient
+ an #NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Requests that the machine's persistent hostname be set to the specified value
+
+ Requests that the machine's persistent hostname be set to the specified value
or cleared.
Use nm_client_save_hostname_async() or GDBusConnection.
-
+
- %TRUE if the request was successful, %FALSE if it failed
+ %TRUE if the request was successful, %FALSE if it failed
- the %NMClient
+ the %NMClient
-
- the new persistent hostname to set, or %NULL to
+
+ the new persistent hostname to set, or %NULL to
clear any existing persistent hostname
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- Requests that the machine's persistent hostname be set to the specified value
+
+ Requests that the machine's persistent hostname be set to the specified value
or cleared.
-
+
- the %NMClient
+ the %NMClient
-
- the new persistent hostname to set, or %NULL to
+
+ the new persistent hostname to set, or %NULL to
clear any existing persistent hostname
-
- a #GCancellable, or %NULL
+
+ a #GCancellable, or %NULL
-
- callback to be called when the operation completes
+
+ callback to be called when the operation completes
-
- caller-specific data passed to @callback
+
+ caller-specific data passed to @callback
-
- Gets the result of an nm_client_save_hostname_async() call.
-
+
+ Gets the result of an nm_client_save_hostname_async() call.
+
- %TRUE if the request was successful, %FALSE if it failed
+ %TRUE if the request was successful, %FALSE if it failed
- the %NMClient
+ the %NMClient
- the result passed to the #GAsyncReadyCallback
+ the result passed to the #GAsyncReadyCallback
-
- Sets NetworkManager logging level and/or domains.
+
+ Sets NetworkManager logging level and/or domains.
Use the async command nm_client_dbus_call() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to call "SetLogging" with "(ss)" arguments for level and domains.
-
+
- %TRUE on success, %FALSE otherwise
+ %TRUE on success, %FALSE otherwise
- a #NMClient
+ a #NMClient
-
- logging level to set (%NULL or an empty string for no change)
+
+ logging level to set (%NULL or an empty string for no change)
-
- logging domains to set. The string should be a list of log
+
+ logging domains to set. The string should be a list of log
domains separated by ",". (%NULL or an empty string for no change)
-
- The way to stop #NMClient is by unrefing it. That will cancel all
+
+ The way to stop #NMClient is by unrefing it. That will cancel all
internally pending async operations. However, as async operations in
NMClient use GTask, hence they cannot complete right away. Instead,
their (internal) result callback still needs to be dispatched by iterating
@@ -6516,353 +3856,218 @@ thread. When being done, you can hand over the cleanup of the context
to g_main_context_default(), assuming that the main thread iterates
the default context. In that case, you don't need to care about passing
a callback to know when shutdown completed.
-
+
- the #NMClient to shutdown.
+ the #NMClient to shutdown.
- whether to hook the client's maincontext
+ whether to hook the client's maincontext
in the current thread default. Otherwise, you must ensure
that the client's maincontext gets iterated so that it can complete.
By integrating the maincontext in the current thread default, you
may instead only iterate the latter.
-
- the #GCancellable to abort the shutdown.
+
+ the #GCancellable to abort the shutdown.
-
- a #GAsyncReadyCallback to call when the request
+
+ a #GAsyncReadyCallback to call when the request
is satisfied or %NULL if you don't care about the result of the
method invocation.
-
- the data to pass to @callback
+
+ the data to pass to @callback
-
- Determines whether WiMAX is enabled.
+
+ Determines whether WiMAX is enabled.
This function always returns FALSE because WiMax is no longer supported.
-
+
- %TRUE if WiMAX is enabled
+ %TRUE if WiMAX is enabled
- a #NMClient
+ a #NMClient
-
- Determines whether the WiMAX hardware is enabled.
+
+ Determines whether the WiMAX hardware is enabled.
This function always returns FALSE because WiMax is no longer supported.
-
+
- %TRUE if the WiMAX hardware is enabled
+ %TRUE if the WiMAX hardware is enabled
- a #NMClient
+ a #NMClient
-
- Enables or disables WiMAX devices.
+
+ Enables or disables WiMAX devices.
This function does nothing because WiMax is no longer supported.
-
+
- a #NMClient
+ a #NMClient
- %TRUE to enable WiMAX
+ %TRUE to enable WiMAX
-
- Determines whether the wireless is enabled.
-
+
+ Determines whether the wireless is enabled.
+
- %TRUE if wireless is enabled
+ %TRUE if wireless is enabled
- a #NMClient
+ a #NMClient
-
- Determines whether the wireless hardware is enabled.
-
+
+ Determines whether the wireless hardware is enabled.
+
- %TRUE if the wireless hardware is enabled
+ %TRUE if the wireless hardware is enabled
- a #NMClient
+ a #NMClient
-
- Enables or disables wireless devices.
+
+ Enables or disables wireless devices.
Use the async command nm_client_dbus_set_property() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to set "WirelessEnabled" property to a "(b)" value.
-
+
- a #NMClient
+ a #NMClient
- %TRUE to enable wireless
+ %TRUE to enable wireless
-
- Determines whether WWAN is enabled.
-
+
+ Determines whether WWAN is enabled.
+
- %TRUE if WWAN is enabled
+ %TRUE if WWAN is enabled
- a #NMClient
+ a #NMClient
-
- Determines whether the WWAN hardware is enabled.
-
+
+ Determines whether the WWAN hardware is enabled.
+
- %TRUE if the WWAN hardware is enabled
+ %TRUE if the WWAN hardware is enabled
- a #NMClient
+ a #NMClient
-
- Enables or disables WWAN devices.
+
+ Enables or disables WWAN devices.
Use the async command nm_client_dbus_set_property() on %NM_DBUS_PATH,
%NM_DBUS_INTERFACE to set "WwanEnabled" property to a "(b)" value.
-
+
- a #NMClient
+ a #NMClient
- %TRUE to enable WWAN
+ %TRUE to enable WWAN
-
- The #NMActiveConnection of the activating connection that is
+
+ The #NMActiveConnection of the activating connection that is
likely to become the new #NMClient:primary-connection.
-
- The active connections.
+
+ The active connections.
-
- List of both real devices and device placeholders.
+
+ List of both real devices and device placeholders.
-
- If %TRUE, adding and modifying connections is supported.
+
+ If %TRUE, adding and modifying connections is supported.
-
- The list of capabilities numbers as guint32 or %NULL if
+
+ The list of capabilities numbers as guint32 or %NULL if
there are no capabilities. The numeric value correspond
to %NMCapability enum.
-
- The list of active checkpoints.
+
+ The list of active checkpoints.
-
- The list of configured connections that are available to the user. (Note
+
+ The list of configured connections that are available to the user. (Note
that this differs from the underlying D-Bus property, which may also
contain the object paths of connections that the user does not have
permission to read the details of.)
@@ -6870,116 +4075,59 @@ permission to read the details of.)
-
- The network connectivity state.
+
+ The network connectivity state.
-
+
-
+
-
- The used URI for connectivity checking.
+
+ The used URI for connectivity checking.
-
- The #GDBusConnection to use.
+
+ The #GDBusConnection to use.
If this is not set during object construction, the D-Bus connection will
automatically be chosen during async/sync initalization via g_bus_get().
-
- The name owner of the NetworkManager D-Bus service.
+
+ The name owner of the NetworkManager D-Bus service.
- List of real network devices. Does not include placeholder devices.
+ List of real network devices. Does not include placeholder devices.
-
- The current DNS configuration, represented as an array
+
+ The current DNS configuration, represented as an array
of #NMDnsEntry objects.
-
- The current DNS processing mode.
+
+ The current DNS processing mode.
-
- The current resolv.conf management mode.
+
+ The current resolv.conf management mode.
- The machine hostname stored in persistent configuration. This can be
+ The machine hostname stored in persistent configuration. This can be
modified by calling nm_client_save_hostname().
-
- #NMClientInstanceFlags for the instance. These affect behavior of #NMClient.
+
+ #NMClientInstanceFlags for the instance. These affect behavior of #NMClient.
This is a construct property and you may only set most flags only during
construction.
@@ -6992,44 +4140,22 @@ The flags %NM_CLIENT_INSTANCE_FLAGS_INITIALIZED_GOOD and %NM_CLIENT_INSTANCE_FLA
cannot be set, however they will be returned by the getter after initialization completes.
-
- Whether the connectivity is metered.
+
+ Whether the connectivity is metered.
-
- Whether networking is enabled.
+
+ Whether networking is enabled.
The property setter is a synchronous D-Bus call. This is deprecated since 1.22.
-
- Whether the daemon is running.
+
+ Whether the daemon is running.
-
- The state of the cached permissions. The value %NM_TERNARY_DEFAULT
+
+ The state of the cached permissions. The value %NM_TERNARY_DEFAULT
means that no permissions are yet received (or not yet requested).
%NM_TERNARY_TRUE means that permissions are received, cached and up
to date. %NM_TERNARY_FALSE means that permissions were received and are
@@ -7044,59 +4170,29 @@ no D-Bus name owner, no permissions are fetched (and this property won't
change).
-
- The #NMActiveConnection of the device with the default route;
+
+ The #NMActiveConnection of the device with the default route;
see nm_client_get_primary_connection() for more details.
-
- Flags for radio interfaces. See #NMRadioFlags.
+
+ Flags for radio interfaces. See #NMRadioFlags.
-
- Whether the daemon is still starting up.
+
+ Whether the daemon is still starting up.
-
- The current daemon state.
+
+ The current daemon state.
-
- The NetworkManager version.
+
+ The NetworkManager version.
-
- Expose version info and capabilities of NetworkManager. If non-empty,
+
+ Expose version info and capabilities of NetworkManager. If non-empty,
the first element is NM_VERSION, which encodes the version of the
daemon as "(major << 16 | minor << 8 | micro)". The following elements
is a bitfields of %NMVersionInfoCapabilities. If a bit is set, then
@@ -7105,590 +4201,305 @@ the running NetworkManager has the respective capability.
-
- Whether WiMAX functionality is enabled.
+
+ Whether WiMAX functionality is enabled.
WiMAX is no longer supported and this always returns FALSE. The setter has no effect.
-
- Whether the WiMAX hardware is enabled.
+
+ Whether the WiMAX hardware is enabled.
WiMAX is no longer supported and this always returns FALSE.
-
- Whether wireless is enabled.
+
+ Whether wireless is enabled.
The property setter is a synchronous D-Bus call. This is deprecated since 1.22.
-
- Whether the wireless hardware is enabled.
+
+ Whether the wireless hardware is enabled.
-
- Whether WWAN functionality is enabled.
+
+ Whether WWAN functionality is enabled.
The property setter is a synchronous D-Bus call. This is deprecated since 1.22.
-
- Whether the WWAN hardware is enabled.
+
+ Whether the WWAN hardware is enabled.
- Notifies that a #NMActiveConnection has been added.
+ Notifies that a #NMActiveConnection has been added.
- the new active connection
+ the new active connection
- Notifies that a #NMActiveConnection has been removed.
+ Notifies that a #NMActiveConnection has been removed.
- the removed active connection
+ the removed active connection
- Notifies that a #NMDevice is added. This signal is emitted for both
+ Notifies that a #NMDevice is added. This signal is emitted for both
regular devices and placeholder devices.
- the new device
+ the new device
- Notifies that a #NMDevice is removed. This signal is emitted for both
+ Notifies that a #NMDevice is removed. This signal is emitted for both
regular devices and placeholder devices.
- the removed device
+ the removed device
- Notifies that a #NMConnection has been added.
+ Notifies that a #NMConnection has been added.
- the new connection
+ the new connection
- Notifies that a #NMConnection has been removed.
+ Notifies that a #NMConnection has been removed.
- the removed connection
+ the removed connection
- Notifies that a #NMDevice is added. This signal is not emitted for
+ Notifies that a #NMDevice is added. This signal is not emitted for
placeholder devices.
- the new device
+ the new device
- Notifies that a #NMDevice is removed. This signal is not emitted for
+ Notifies that a #NMDevice is removed. This signal is not emitted for
placeholder devices.
- the removed device
+ the removed device
- Notifies that a permission has changed
+ Notifies that a permission has changed
- a permission from #NMClientPermission
+ a permission from #NMClientPermission
- the permission's result, one of #NMClientPermissionResult
+ the permission's result, one of #NMClientPermissionResult
-
+
-
- Describes errors that may result from operations involving a #NMClient.
+
+ Describes errors that may result from operations involving a #NMClient.
D-Bus operations may also return errors from other domains, including
#NMManagerError, #NMSettingsError, #NMAgentManagerError, and #NMConnectionError.
-
- unknown or unclassified error
-
-
- an operation that requires NetworkManager
+
+ unknown or unclassified error
+
+
+ an operation that requires NetworkManager
failed because NetworkManager is not running
-
- NetworkManager claimed that an
+
+ NetworkManager claimed that an
operation succeeded, but the object that was allegedly created (eg,
#NMRemoteConnection, #NMActiveConnection) was apparently destroyed before
#NMClient could create a representation of it.
- Registers an error quark for #NMClient if necessary.
+ Registers an error quark for #NMClient if necessary.
- the error quark used for #NMClient errors.
+ the error quark used for #NMClient errors.
-
-
- special value to indicate no flags.
-
-
- by default, NMClient
+
+
+ special value to indicate no flags.
+
+
+ by default, NMClient
will fetch the permissions via "GetPermissions" and refetch them when
"CheckPermissions" signal gets received. By setting this flag, this behavior
can be disabled. You can toggle this flag to enable and disable automatic
fetching of the permissions. Watch also nm_client_get_permissions_state()
to know whether the permissions are up to date.
-
- as #NMClient is an GInitable
+
+ as #NMClient is an GInitable
and GAsyncInitable, nm_client_get_instance_flags() returns this flag
once initialization completed with success. This flag cannot be set
as NM_CLIENT_INSTANCE_FLAGS property. Since: 1.42.
-
- like @NM_CLIENT_INSTANCE_FLAGS_INITIALIZED_GOOD
+
+ like @NM_CLIENT_INSTANCE_FLAGS_INITIALIZED_GOOD
indicates that the instance completed initialization with failure. In that
case the instance is unusable. Since: 1.42.
-
- #NMClientPermission values indicate various permissions that NetworkManager
+
+ #NMClientPermission values indicate various permissions that NetworkManager
clients can obtain to perform certain tasks on behalf of the current user.
-
- unknown or no permission
-
-
- controls whether networking
+
+ unknown or no permission
+
+
+ controls whether networking
can be globally enabled or disabled
-
- controls whether Wi-Fi can be
+
+ controls whether Wi-Fi can be
globally enabled or disabled
-
- controls whether WWAN (3G) can be
+
+ controls whether WWAN (3G) can be
globally enabled or disabled
-
- controls whether WiMAX can be
+
+ controls whether WiMAX can be
globally enabled or disabled
-
- controls whether the client can ask
+
+ controls whether the client can ask
NetworkManager to sleep and wake
-
- controls whether networking connections
+
+ controls whether networking connections
can be started, stopped, and changed
-
- controls whether a password
+
+ controls whether a password
protected Wi-Fi hotspot can be created
-
- controls whether an open Wi-Fi hotspot
+
+ controls whether an open Wi-Fi hotspot
can be created
-
- controls whether connections
+
+ controls whether connections
that are available to all users can be modified
-
- controls whether connections
+
+ controls whether connections
owned by the current user can be modified
-
- controls whether the
+
+ controls whether the
persistent hostname can be changed
-
- modify persistent global
+
+ modify persistent global
DNS configuration
-
- controls access to Reload.
-
-
- permission to create checkpoints.
-
-
- controls whether device
+
+ controls access to Reload.
+
+
+ permission to create checkpoints.
+
+
+ controls whether device
statistics can be globally enabled or disabled
-
- controls whether
+
+ controls whether
connectivity check can be enabled or disabled
-
- controls whether wifi scans can be performed
-
-
- a reserved boundary value
+
+ controls whether wifi scans can be performed
+
+
+ a reserved boundary value
-
- #NMClientPermissionResult values indicate what authorizations and permissions
+
+ #NMClientPermissionResult values indicate what authorizations and permissions
the user requires to obtain a given #NMClientPermission
-
- unknown or no authorization
-
-
- the permission is available
-
-
- authorization is necessary before the
+
+ unknown or no authorization
+
+
+ the permission is available
+
+
+ authorization is necessary before the
permission is available
-
- permission to perform the operation is
+
+ permission to perform the operation is
denied by system policy
-
- NMConnection is the interface implemented by #NMRemoteConnection on the
+
+ NMConnection is the interface implemented by #NMRemoteConnection on the
client side, and #NMSettingsConnection on the daemon side.
-
+
@@ -7699,8 +4510,7 @@ client side, and #NMSettingsConnection on the daemon side.
-
+
@@ -7711,8 +4521,7 @@ client side, and #NMSettingsConnection on the daemon side.
-
+
@@ -7726,192 +4535,125 @@ client side, and #NMSettingsConnection on the daemon side.
- Adds a #NMSetting to the connection, replacing any previous #NMSetting of the
+ Adds a #NMSetting to the connection, replacing any previous #NMSetting of the
same name which has previously been added to the #NMConnection. The
connection takes ownership of the #NMSetting object and does not increase
the setting object's reference count.
-
+
- a #NMConnection
+ a #NMConnection
- the #NMSetting to add to the connection object
+ the #NMSetting to add to the connection object
- Clears and frees any secrets that may be stored in the connection, to avoid
+ Clears and frees any secrets that may be stored in the connection, to avoid
keeping secret data in memory when not needed.
-
+
- the #NMConnection
+ the #NMConnection
-
- Clears and frees secrets determined by @func.
-
+
+ Clears and frees secrets determined by @func.
+
- the #NMConnection
+ the #NMConnection
-
- function to be called to determine whether a
+
+ function to be called to determine whether a
specific secret should be cleared or not. If %NULL, all secrets are cleared.
-
-
-
- caller-supplied data passed to @func
+
+
+
+ caller-supplied data passed to @func
-
- Deletes all of @connection's settings.
-
+
+ Deletes all of @connection's settings.
+
- a #NMConnection
+ a #NMConnection
- Compares two #NMConnection objects for similarity, with comparison behavior
+ Compares two #NMConnection objects for similarity, with comparison behavior
modified by a set of flags. See nm_setting_compare() for a description of
each flag's behavior.
-
+
- %TRUE if the comparison succeeds, %FALSE if it does not
+ %TRUE if the comparison succeeds, %FALSE if it does not
- a #NMConnection
+ a #NMConnection
- a second #NMConnection to compare with the first
+ a second #NMConnection to compare with the first
- compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT
+ compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT
- Compares two #NMConnection objects for similarity, with comparison behavior
+ Compares two #NMConnection objects for similarity, with comparison behavior
modified by a set of flags. See nm_setting_compare() for a description of
each flag's behavior. If the connections differ, settings and keys within
each setting that differ are added to the returned @out_settings hash table.
No values are returned, only key names.
-
+
- %TRUE if the connections contain the same values, %FALSE if they do
+ %TRUE if the connections contain the same values, %FALSE if they do
not
- a #NMConnection
+ a #NMConnection
- a second #NMConnection to compare with the first
+ a second #NMConnection to compare with the first
- compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT
+ compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT
-
-
+
+
if the connections differ, on return a hash table
mapping setting names to second-level GHashTable (utf8 to guint32), which
contains the key names that differ mapped to one or more of
@@ -7920,1095 +4662,701 @@ contains the key names that differ mapped to one or more of
-
+
- Print the connection (including secrets!) to stdout. For debugging
+ Print the connection (including secrets!) to stdout. For debugging
purposes ONLY, should NOT be used for serialization of the setting,
or machine-parsed in any way. The output format is not guaranteed to
be stable and may change at any time.
-
+
- the #NMConnection
+ the #NMConnection
-
- Iterates over the properties of each #NMSetting object in the #NMConnection,
+
+ Iterates over the properties of each #NMSetting object in the #NMConnection,
calling the supplied user function for each property.
-
+
- the #NMConnection
+ the #NMConnection
-
- user-supplied function called for each setting's property
+
+ user-supplied function called for each setting's property
-
- user data passed to @func at each invocation
+
+ user data passed to @func at each invocation
-
- A shortcut to return the type from the connection's #NMSettingConnection.
-
+
+ A shortcut to return the type from the connection's #NMSettingConnection.
+
- the type from the connection's 'connection' setting
+ the type from the connection's 'connection' setting
- the #NMConnection
+ the #NMConnection
- A shortcut to return the ID from the connection's #NMSettingConnection.
-
-
- the ID from the connection's 'connection' setting
+ A shortcut to return the ID from the connection's #NMSettingConnection.
+
+
+ the ID from the connection's 'connection' setting
- the #NMConnection
+ the #NMConnection
-
- Returns the interface name as stored in NMSettingConnection:interface_name.
+
+ Returns the interface name as stored in NMSettingConnection:interface_name.
If the connection contains no NMSettingConnection, it will return %NULL.
For hardware devices and software devices created outside of NetworkManager,
this name is used to match the device. for software devices created by
NetworkManager, this is the name of the created interface.
-
+
- Name of the kernel interface or %NULL
+ Name of the kernel interface or %NULL
- The #NMConnection
+ The #NMConnection
- Returns the connection's D-Bus path.
-
-
- the D-Bus path of the connection, previously set by a call to
+ Returns the connection's D-Bus path.
+
+
+ the D-Bus path of the connection, previously set by a call to
nm_connection_set_path().
- the #NMConnection
+ the #NMConnection
- Gets the #NMSetting with the given #GType, if one has been previously added
+ Gets the #NMSetting with the given #GType, if one has been previously added
to the #NMConnection.
-
+
- the #NMSetting, or %NULL if no setting of that type was previously
+ the #NMSetting, or %NULL if no setting of that type was previously
added to the #NMConnection
- a #NMConnection
+ a #NMConnection
- the #GType of the setting object to return
+ the #GType of the setting object to return
-
- A shortcut to return any #NMSetting8021x the connection might contain.
-
+
+ A shortcut to return any #NMSetting8021x the connection might contain.
+
- an #NMSetting8021x if the connection contains one, otherwise %NULL
+ an #NMSetting8021x if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingAdsl the connection might contain.
-
+
+ A shortcut to return any #NMSettingAdsl the connection might contain.
+
- an #NMSettingAdsl if the connection contains one, otherwise %NULL
+ an #NMSettingAdsl if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingBluetooth the connection might contain.
-
+
+ A shortcut to return any #NMSettingBluetooth the connection might contain.
+
- an #NMSettingBluetooth if the connection contains one, otherwise %NULL
+ an #NMSettingBluetooth if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingBond the connection might contain.
-
+
+ A shortcut to return any #NMSettingBond the connection might contain.
+
- an #NMSettingBond if the connection contains one, otherwise %NULL
+ an #NMSettingBond if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingBridge the connection might contain.
-
+
+ A shortcut to return any #NMSettingBridge the connection might contain.
+
- an #NMSettingBridge if the connection contains one, otherwise %NULL
+ an #NMSettingBridge if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingBridgePort the connection might contain.
-
+
+ A shortcut to return any #NMSettingBridgePort the connection might contain.
+
- an #NMSettingBridgePort if the connection contains one, otherwise %NULL
+ an #NMSettingBridgePort if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- Gets the #NMSetting with the given name, if one has been previously added
+
+ Gets the #NMSetting with the given name, if one has been previously added
the #NMConnection.
-
+
- the #NMSetting, or %NULL if no setting with that name was previously
+ the #NMSetting, or %NULL if no setting with that name was previously
added to the #NMConnection
- a #NMConnection
+ a #NMConnection
- a setting name
+ a setting name
-
- A shortcut to return any #NMSettingCdma the connection might contain.
-
+
+ A shortcut to return any #NMSettingCdma the connection might contain.
+
- an #NMSettingCdma if the connection contains one, otherwise %NULL
+ an #NMSettingCdma if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingConnection the connection might contain.
-
+
+ A shortcut to return any #NMSettingConnection the connection might contain.
+
- an #NMSettingConnection if the connection contains one, otherwise %NULL
+ an #NMSettingConnection if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingDcb the connection might contain.
-
+
+ A shortcut to return any #NMSettingDcb the connection might contain.
+
- an #NMSettingDcb if the connection contains one, otherwise NULL
+ an #NMSettingDcb if the connection contains one, otherwise NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingDummy the connection might contain.
-
+
+ A shortcut to return any #NMSettingDummy the connection might contain.
+
- an #NMSettingDummy if the connection contains one, otherwise %NULL
+ an #NMSettingDummy if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingGeneric the connection might contain.
-
+
+ A shortcut to return any #NMSettingGeneric the connection might contain.
+
- an #NMSettingGeneric if the connection contains one, otherwise NULL
+ an #NMSettingGeneric if the connection contains one, otherwise NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingGsm the connection might contain.
-
+
+ A shortcut to return any #NMSettingGsm the connection might contain.
+
- an #NMSettingGsm if the connection contains one, otherwise %NULL
+ an #NMSettingGsm if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingInfiniband the connection might contain.
-
+
+ A shortcut to return any #NMSettingInfiniband the connection might contain.
+
- an #NMSettingInfiniband if the connection contains one, otherwise %NULL
+ an #NMSettingInfiniband if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingIP4Config the connection might contain.
+
+ A shortcut to return any #NMSettingIP4Config the connection might contain.
Note that it returns the value as type #NMSettingIPConfig, since the vast
majority of IPv4-setting-related methods are on that type, not
#NMSettingIP4Config.
-
+
- an #NMSettingIP4Config if the
+ an #NMSettingIP4Config if the
connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingIP6Config the connection might contain.
+
+ A shortcut to return any #NMSettingIP6Config the connection might contain.
Note that it returns the value as type #NMSettingIPConfig, since the vast
majority of IPv6-setting-related methods are on that type, not
#NMSettingIP6Config.
-
+
- an #NMSettingIP6Config if the
+ an #NMSettingIP6Config if the
connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingIPTunnel the connection might contain.
-
+
+ A shortcut to return any #NMSettingIPTunnel the connection might contain.
+
- an #NMSettingIPTunnel if the connection contains one, otherwise %NULL
+ an #NMSettingIPTunnel if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingMacsec the connection might contain.
-
+
+ A shortcut to return any #NMSettingMacsec the connection might contain.
+
- an #NMSettingMacsec if the connection contains one, otherwise %NULL
+ an #NMSettingMacsec if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingMacvlan the connection might contain.
-
+
+ A shortcut to return any #NMSettingMacvlan the connection might contain.
+
- an #NMSettingMacvlan if the connection contains one, otherwise %NULL
+ an #NMSettingMacvlan if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingOlpcMesh the connection might contain.
-
+
+ A shortcut to return any #NMSettingOlpcMesh the connection might contain.
+
- an #NMSettingOlpcMesh if the connection contains one, otherwise %NULL
+ an #NMSettingOlpcMesh if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingOvsBridge the connection might contain.
-
+
+ A shortcut to return any #NMSettingOvsBridge the connection might contain.
+
- an #NMSettingOvsBridge if the connection contains one, otherwise %NULL
+ an #NMSettingOvsBridge if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingOvsInterface the connection might contain.
-
+
+ A shortcut to return any #NMSettingOvsInterface the connection might contain.
+
- an #NMSettingOvsInterface if the connection contains one, otherwise %NULL
+ an #NMSettingOvsInterface if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingOvsPatch the connection might contain.
-
+
+ A shortcut to return any #NMSettingOvsPatch the connection might contain.
+
- an #NMSettingOvsPatch if the connection contains one, otherwise %NULL
+ an #NMSettingOvsPatch if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingOvsPort the connection might contain.
-
+
+ A shortcut to return any #NMSettingOvsPort the connection might contain.
+
- an #NMSettingOvsPort if the connection contains one, otherwise %NULL
+ an #NMSettingOvsPort if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingPpp the connection might contain.
-
+
+ A shortcut to return any #NMSettingPpp the connection might contain.
+
- an #NMSettingPpp if the connection contains one, otherwise %NULL
+ an #NMSettingPpp if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingPppoe the connection might contain.
-
+
+ A shortcut to return any #NMSettingPppoe the connection might contain.
+
- an #NMSettingPppoe if the connection contains one, otherwise %NULL
+ an #NMSettingPppoe if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingProxy the connection might contain.
-
+
+ A shortcut to return any #NMSettingProxy the connection might contain.
+
- an #NMSettingProxy if the connection contains one, otherwise %NULL
+ an #NMSettingProxy if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingSerial the connection might contain.
-
+
+ A shortcut to return any #NMSettingSerial the connection might contain.
+
- an #NMSettingSerial if the connection contains one, otherwise %NULL
+ an #NMSettingSerial if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingTCConfig the connection might contain.
-
+
+ A shortcut to return any #NMSettingTCConfig the connection might contain.
+
- an #NMSettingTCConfig if the connection contains one, otherwise %NULL
+ an #NMSettingTCConfig if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingTeam the connection might contain.
-
+
+ A shortcut to return any #NMSettingTeam the connection might contain.
+
- an #NMSettingTeam if the connection contains one, otherwise %NULL
+ an #NMSettingTeam if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingTeamPort the connection might contain.
-
+
+ A shortcut to return any #NMSettingTeamPort the connection might contain.
+
- an #NMSettingTeamPort if the connection contains one, otherwise %NULL
+ an #NMSettingTeamPort if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingTun the connection might contain.
-
+
+ A shortcut to return any #NMSettingTun the connection might contain.
+
- an #NMSettingTun if the connection contains one, otherwise %NULL
+ an #NMSettingTun if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingVlan the connection might contain.
-
+
+ A shortcut to return any #NMSettingVlan the connection might contain.
+
- an #NMSettingVlan if the connection contains one, otherwise %NULL
+ an #NMSettingVlan if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingVpn the connection might contain.
-
+
+ A shortcut to return any #NMSettingVpn the connection might contain.
+
- an #NMSettingVpn if the connection contains one, otherwise %NULL
+ an #NMSettingVpn if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingVxlan the connection might contain.
-
+
+ A shortcut to return any #NMSettingVxlan the connection might contain.
+
- an #NMSettingVxlan if the connection contains one, otherwise %NULL
+ an #NMSettingVxlan if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingWimax the connection might contain.
-
+
+ A shortcut to return any #NMSettingWimax the connection might contain.
+
- an #NMSettingWimax if the connection contains one, otherwise %NULL
+ an #NMSettingWimax if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingWired the connection might contain.
-
+
+ A shortcut to return any #NMSettingWired the connection might contain.
+
- an #NMSettingWired if the connection contains one, otherwise %NULL
+ an #NMSettingWired if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingWireless the connection might contain.
-
+
+ A shortcut to return any #NMSettingWireless the connection might contain.
+
- an #NMSettingWireless if the connection contains one, otherwise %NULL
+ an #NMSettingWireless if the connection contains one, otherwise %NULL
- the #NMConnection
+ the #NMConnection
-
- A shortcut to return any #NMSettingWirelessSecurity the connection might contain.
-
+
+ A shortcut to return any #NMSettingWirelessSecurity the connection might contain.
+
- an #NMSettingWirelessSecurity if the connection contains one, otherwise %NULL
-
+ an #NMSettingWirelessSecurity if the connection contains one, otherwise %NULL
+
- the #NMConnection
+ the #NMConnection
-
- Retrieves the settings in @connection.
+
+ Retrieves the settings in @connection.
The returned array is %NULL-terminated.
-
+
- a
+ a
%NULL-terminated array containing every setting of @connection.
If the connection has no settings, %NULL is returned.
@@ -9017,154 +5365,101 @@ The returned array is %NULL-terminated.
- the #NMConnection instance
+ the #NMConnection instance
-
- the length of the returned array
+
+ the length of the returned array
- A shortcut to return the UUID from the connection's #NMSettingConnection.
-
-
- the UUID from the connection's 'connection' setting
+ A shortcut to return the UUID from the connection's #NMSettingConnection.
+
+
+ the UUID from the connection's 'connection' setting
- the #NMConnection
+ the #NMConnection
-
- Returns the name that nm_device_disambiguate_names() would
+
+ Returns the name that nm_device_disambiguate_names() would
return for the virtual device that would be created for @connection.
Eg, "VLAN (eth1.1)".
-
+
- the name of @connection's device,
+ the name of @connection's device,
or %NULL if @connection is not a virtual connection type
- an #NMConnection for a virtual device type
+ an #NMConnection for a virtual device type
- A convenience function to check if the given @connection is a particular
+ A convenience function to check if the given @connection is a particular
type (ie wired, Wi-Fi, ppp, etc). Checks the #NMSettingConnection:type
property of the connection and matches that against @type.
-
+
- %TRUE if the connection is of the given @type, %FALSE if not
+ %TRUE if the connection is of the given @type, %FALSE if not
- the #NMConnection
+ the #NMConnection
- a setting name to check the connection's type against (like
+ a setting name to check the connection's type against (like
%NM_SETTING_WIRELESS_SETTING_NAME or %NM_SETTING_WIRED_SETTING_NAME)
- Checks if @connection refers to a virtual device (and thus can potentially be
+ Checks if @connection refers to a virtual device (and thus can potentially be
activated even if the device it refers to doesn't exist).
-
+
- whether @connection refers to a virtual device
+ whether @connection refers to a virtual device
- an #NMConnection
+ an #NMConnection
- Returns the name of the first setting object in the connection which would
+ Returns the name of the first setting object in the connection which would
need secrets to make a successful connection. The returned hints are only
intended as a guide to what secrets may be required, because in some
circumstances, there is no way to conclusively determine exactly which
secrets are needed.
-
+
- the setting name of the #NMSetting object which has
+ the setting name of the #NMSetting object which has
invalid or missing secrets
- the #NMConnection
+ the #NMConnection
-
-
+
+
the address of a pointer to a #GPtrArray, initialized to %NULL, which on
return points to an allocated #GPtrArray containing the property names of
secrets of the #NMSetting which may be required; the caller owns the array
@@ -9176,12 +5471,8 @@ secrets are needed.
-
- Does some basic normalization and fixup of well known inconsistencies
+
+ Does some basic normalization and fixup of well known inconsistencies
and deprecated fields. If the connection was modified in any way,
the output parameter @modified is set %TRUE.
@@ -9189,28 +5480,18 @@ Finally the connection will be verified and %TRUE returns if the connection
is valid. As this function only performs some specific normalization steps
it cannot repair all connections. If the connection has errors that
cannot be normalized, the connection will not be modified.
-
+
- %TRUE if the connection is valid, %FALSE if it is not
+ %TRUE if the connection is valid, %FALSE if it is not
- the #NMConnection to normalize
+ the #NMConnection to normalize
-
- a #GHashTable with
+
+ a #GHashTable with
normalization parameters to allow customization of the normalization by providing
specific arguments. Unknown arguments will be ignored and the default will be
used. The keys must be strings compared with g_str_equal() function.
@@ -9220,207 +5501,141 @@ The values are opaque and depend on the parameter name.
-
- outputs whether any settings were modified.
+
+ outputs whether any settings were modified.
-
- Removes the #NMSetting with the given #GType from the #NMConnection. This
+
+ Removes the #NMSetting with the given #GType from the #NMConnection. This
operation dereferences the #NMSetting object.
-
+
- a #NMConnection
+ a #NMConnection
- the #GType of the setting object to remove
+ the #GType of the setting object to remove
-
- Replaces @connection's settings with @new_settings (which must be
+
+ Replaces @connection's settings with @new_settings (which must be
syntactically valid, and describe a known type of connection, but does not
need to result in a connection that passes nm_connection_verify()).
-
+
- %TRUE if connection was updated, %FALSE if @new_settings could not
+ %TRUE if connection was updated, %FALSE if @new_settings could not
be deserialized (in which case @connection will be unchanged).
- a #NMConnection
+ a #NMConnection
- a #GVariant of type %NM_VARIANT_TYPE_CONNECTION, with the new settings
+ a #GVariant of type %NM_VARIANT_TYPE_CONNECTION, with the new settings
-
- Deep-copies the settings of @new_connection and replaces the settings of @connection
+
+ Deep-copies the settings of @new_connection and replaces the settings of @connection
with the copied settings.
-
+
- a #NMConnection
+ a #NMConnection
- a #NMConnection to replace the settings of @connection with
+ a #NMConnection to replace the settings of @connection with
- Sets the D-Bus path of the connection. This property is not serialized, and
+ Sets the D-Bus path of the connection. This property is not serialized, and
is only for the reference of the caller. Sets the #NMConnection:path
property.
-
+
- the #NMConnection
+ the #NMConnection
- the D-Bus path of the connection as given by the settings service
+ the D-Bus path of the connection as given by the settings service
which provides the connection
- Converts the #NMConnection into a #GVariant of type
+ Converts the #NMConnection into a #GVariant of type
%NM_VARIANT_TYPE_CONNECTION describing the connection, suitable for
marshalling over D-Bus or otherwise serializing.
-
+
- a new floating #GVariant describing the connection,
+ a new floating #GVariant describing the connection,
its settings, and each setting's properties.
- the #NMConnection
+ the #NMConnection
- serialization flags, e.g. %NM_CONNECTION_SERIALIZE_ALL
-
+ serialization flags, e.g. %NM_CONNECTION_SERIALIZE_ALL
+
-
- Update the specified setting's secrets, given a dictionary of secrets
+
+ Update the specified setting's secrets, given a dictionary of secrets
intended for that setting (deserialized from D-Bus for example). Will also
extract the given setting's secrets hash if given a connection dictionary.
If @setting_name is %NULL, expects a fully serialized #NMConnection as
returned by nm_connection_to_dbus() and will update all secrets from all
settings contained in @secrets.
-
+
- %TRUE if the secrets were successfully updated, %FALSE if the update
+ %TRUE if the secrets were successfully updated, %FALSE if the update
failed (tried to update secrets for a setting that doesn't exist, etc)
- the #NMConnection
+ the #NMConnection
- the setting object name to which the secrets apply
+ the setting object name to which the secrets apply
- a #GVariant of secrets, of type %NM_VARIANT_TYPE_CONNECTION
+ a #GVariant of secrets, of type %NM_VARIANT_TYPE_CONNECTION
or %NM_VARIANT_TYPE_SETTING
- Validates the connection and all its settings. Each setting's properties
+ Validates the connection and all its settings. Each setting's properties
have allowed values, and some values are dependent on other values. For
example, if a Wi-Fi connection is security enabled, the #NMSettingWireless
setting object's 'security' property must contain the setting name of the
@@ -9429,51 +5644,34 @@ connection for the connection to be valid. As another example, the
#NMSettingWired object's 'mac-address' property must be a validly formatted
MAC address. The returned #GError contains information about which
setting and which property failed validation, and how it failed validation.
-
+
- %TRUE if the connection is valid, %FALSE if it is not
+ %TRUE if the connection is valid, %FALSE if it is not
- the #NMConnection to verify
+ the #NMConnection to verify
-
- Verifies the secrets in the connection.
-
+
+ Verifies the secrets in the connection.
+
- %TRUE if the secrets are valid, %FALSE if they are not
+ %TRUE if the secrets are valid, %FALSE if they are not
- the #NMConnection to verify in
+ the #NMConnection to verify in
- The ::changed signal is emitted when any property (including secrets)
+ The ::changed signal is emitted when any property (including secrets)
of any setting of the connection is modified, or when settings are
added or removed.
@@ -9481,131 +5679,71 @@ added or removed.
- The ::secrets-cleared signal is emitted when the secrets of a connection
+ The ::secrets-cleared signal is emitted when the secrets of a connection
are cleared.
- The ::secrets-updated signal is emitted when the secrets of a setting
+ The ::secrets-updated signal is emitted when the secrets of a setting
have been changed.
- the setting name of the #NMSetting for which secrets were
+ the setting name of the #NMSetting for which secrets were
updated
-
- Describes errors that may result from operations involving a #NMConnection
+
+ Describes errors that may result from operations involving a #NMConnection
or its #NMSettings.
These errors may be returned directly from #NMConnection and #NMSetting
methods, or may be returned from D-Bus operations (eg on #NMClient or
#NMDevice), where they correspond to errors in the
"org.freedesktop.NetworkManager.Settings.Connection" namespace.
-
- unknown or unclassified error
-
-
- the #NMConnection object
+
+ unknown or unclassified error
+
+
+ the #NMConnection object
did not contain the specified #NMSetting object
-
- the #NMConnection did not contain the
+
+ the #NMConnection did not contain the
requested #NMSetting property
-
- an operation which requires a secret
+
+ an operation which requires a secret
was attempted on a non-secret property
-
- the #NMConnection object is missing an
+
+ the #NMConnection object is missing an
#NMSetting which is required for its configuration. The error message will
always be prefixed with "<setting-name>: ", where "<setting-name>" is the
name of the setting that is missing.
-
- the #NMConnection object contains an
+
+ the #NMConnection object contains an
invalid or inappropriate #NMSetting. The error message will always be
prefixed with "<setting-name>: ", where "<setting-name>" is the name of the
setting that is invalid.
-
- the #NMConnection object is invalid
+
+ the #NMConnection object is invalid
because it is missing a required property. The error message will always be
prefixed with "<setting-name>.<property-name>: ", where "<setting-name>" is
the name of the setting with the missing property, and "<property-name>" is
the property that is missing.
-
- the #NMConnection object is invalid
+
+ the #NMConnection object is invalid
because a property has an invalid value. The error message will always be
prefixed with "<setting-name>.<property-name>: ", where "<setting-name>" is
the name of the setting with the invalid property, and "<property-name>" is
@@ -9617,20 +5755,15 @@ methods, or may be returned from D-Bus operations (eg on #NMClient or
-
+
- the parent interface struct
+ the parent interface struct
-
+
@@ -9646,8 +5779,7 @@ methods, or may be returned from D-Bus operations (eg on #NMClient or
-
+
@@ -9660,8 +5792,7 @@ methods, or may be returned from D-Bus operations (eg on #NMClient or
-
+
@@ -9673,273 +5804,117 @@ methods, or may be returned from D-Bus operations (eg on #NMClient or
-
-
- indicates that the per-connection
+
+
+ indicates that the per-connection
setting is unspecified. In this case, it will fallback to the default
value, which is %NM_CONNECTION_MULTI_CONNECT_SINGLE.
-
- the connection profile can only
+
+ the connection profile can only
be active once at each moment. Activating a profile that is already active,
will first deactivate it.
-
- the profile can
+
+ the profile can
be manually activated multiple times on different devices. However,
regarding autoconnect, the profile will autoconnect only if it is
currently not connected otherwise.
-
- the profile can autoactivate
+
+ the profile can autoactivate
and be manually activated multiple times together.
-
- These flags determine which properties are serialized when calling
+
+ These flags determine which properties are serialized when calling
nm_connection_to_dbus().
-
- serialize all properties (including secrets)
-
-
- serialize properties that are
+
+ serialize all properties (including secrets)
+
+
+ serialize properties that are
not secrets. Since 1.32.
-
- this is a deprecated alias for
+
+ this is a deprecated alias for
@NM_CONNECTION_SERIALIZE_WITH_NON_SECRET.
-
- serialize all secrets. This flag is
+
+ serialize all secrets. This flag is
ignored if any of @NM_CONNECTION_SERIALIZE_WITH_SECRETS_AGENT_OWNED,
@NM_CONNECTION_SERIALIZE_WITH_SECRETS_SYSTEM_OWNED or
@NM_CONNECTION_SERIALIZE_WITH_SECRETS_NOT_SAVED is set. Since 1.32.
-
- a deprecated alias for
+
+ a deprecated alias for
@NM_CONNECTION_SERIALIZE_WITH_SECRETS.
-
- serialize agent-owned
+
+ serialize agent-owned
secrets. Since: 1.20.
-
- serialize system-owned
+
+ serialize system-owned
secrets. Since: 1.32.
-
- serialize secrets that
+
+ serialize secrets that
are marked as never saved. Since: 1.32.
-
-
- Network connectivity is unknown. This means the
+
+
+ Network connectivity is unknown. This means the
connectivity checks are disabled (e.g. on server installations) or has
not run yet. The graphical shell should assume the Internet connection
might be available and not present a captive portal window.
-
- The host is not connected to any network. There's
+
+ The host is not connected to any network. There's
no active connection that contains a default route to the internet and
thus it makes no sense to even attempt a connectivity check. The graphical
shell should use this state to indicate the network connection is unavailable.
-
- The Internet connection is hijacked by a captive
+
+ The Internet connection is hijacked by a captive
portal gateway. The graphical shell may open a sandboxed web browser window
(because the captive portals typically attempt a man-in-the-middle attacks
against the https connections) for the purpose of authenticating to a gateway
and retrigger the connectivity check with CheckConnectivity() when the
browser window is dismissed.
-
- The host is connected to a network, does not appear
+
+ The host is connected to a network, does not appear
to be able to reach the full Internet, but a captive portal has not been
detected.
-
- The host is connected to a network, and
+
+ The host is connected to a network, and
appears to be able to reach the full Internet.
-
- Cryptography-related errors that can be returned from some nm-utils methods,
+
+ Cryptography-related errors that can be returned from some nm-utils methods,
and some #NMSetting8021x operations.
-
- generic failure
-
-
- the certificate or key data provided
+
+ generic failure
+
+
+ the certificate or key data provided
was invalid
-
- the password was invalid
-
-
- the data uses an unknown cipher
-
-
- decryption failed
-
-
- encryption failed
+
+ the password was invalid
+
+
+ the data uses an unknown cipher
+
+
+ decryption failed
+
+
+ encryption failed
@@ -9947,470 +5922,315 @@ and some #NMSetting8021x operations.
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -10424,286 +6244,191 @@ and some #NMSetting8021x operations.
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -10711,680 +6436,436 @@ and some #NMSetting8021x operations.
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -11395,241 +6876,164 @@ and some #NMSetting8021x operations.
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -11637,31 +7041,22 @@ and some #NMSetting8021x operations.
-
-
+
+
-
-
+
+
-
-
+
+
@@ -11679,145 +7074,94 @@ and some #NMSetting8021x operations.
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
@@ -11828,679 +7172,432 @@ and some #NMSetting8021x operations.
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+