[libhandy] Clean up dosc and port them to gi-docgen



commit cc0d33568e16f0fb465a387d9a66d06617f98bea
Author: Maximiliano <msandova gnome org>
Date:   Fri Feb 4 10:43:42 2022 +0000

    Clean up dosc and port them to gi-docgen
    
    Cleanups include
    
    - Replacing "Since: 0.0.x" with "Since: 1.0" as libhandy 0.x is irrelevant here
    - Rewording docs for gi-docgen
    - Rewording @self parameters
    - Removing @self from signals
    - Get/Set -> Gets/Sets
    - Fixing a few annotations
    - Adding missing docs
    
    Fixes https://gitlab.gnome.org/GNOME/libhandy/-/issues/104
    Fixes https://gitlab.gnome.org/GNOME/libhandy/-/issues/266
    Fixes https://gitlab.gnome.org/GNOME/libhandy/-/issues/438

 .gitlab-ci.yml                     |   9 +-
 README.md                          |   2 +-
 doc/build-howto.md                 | 105 ++++
 doc/build-howto.xml                | 159 ------
 doc/handy-docs.xml                 | 164 ------
 doc/hdy-migrating-0-0-to-1.md      | 242 +++++++++
 doc/hdy-migrating-0-0-to-1.xml     | 356 -------------
 doc/libhandy.svg                   | 996 +++++++++++++++++++++++++++++++++++++
 doc/libhandy.toml.in               |  55 ++
 doc/meson.build                    | 112 ++---
 doc/urlmap.js                      |  15 +
 doc/visual-index.md                |  16 +
 doc/visual-index.xml               |  58 ---
 doc/xml/gtkdocentities.ent.in      |   9 -
 doc/xml/meson.build                |  12 -
 src/hdy-action-row.c               | 196 ++++----
 src/hdy-action-row.h               |   4 +-
 src/hdy-animation.c                |  32 +-
 src/hdy-application-window.c       |  22 +-
 src/hdy-avatar.c                   | 229 +++++----
 src/hdy-avatar.h                   |  15 +-
 src/hdy-carousel-box.c             | 122 +++--
 src/hdy-carousel-indicator-dots.c  |  46 +-
 src/hdy-carousel-indicator-lines.c |  47 +-
 src/hdy-carousel.c                 | 226 +++++----
 src/hdy-clamp.c                    |  84 ++--
 src/hdy-combo-row.c                | 173 +++----
 src/hdy-combo-row.h                |  22 +-
 src/hdy-deck.c                     | 273 +++++-----
 src/hdy-deck.h                     |   2 +-
 src/hdy-enum-value-object.c        |  51 +-
 src/hdy-expander-row.c             | 152 +++---
 src/hdy-expander-row.h             |   2 +-
 src/hdy-fading-label.c             |  10 +-
 src/hdy-flap.c                     | 368 +++++++-------
 src/hdy-header-bar.c               | 406 ++++++++-------
 src/hdy-header-bar.h               |   2 +-
 src/hdy-header-group.c             | 198 ++++----
 src/hdy-keypad-button.c            |  35 +-
 src/hdy-keypad.c                   | 143 +++---
 src/hdy-keypad.h                   |   2 +-
 src/hdy-leaflet.c                  | 437 +++++++++-------
 src/hdy-leaflet.h                  |   2 +-
 src/hdy-main.c                     |  22 +-
 src/hdy-navigation-direction.c     |  16 +-
 src/hdy-nothing.c                  |  16 +-
 src/hdy-preferences-group.c        |  81 ++-
 src/hdy-preferences-group.h        |   2 +-
 src/hdy-preferences-page.c         |  72 +--
 src/hdy-preferences-page.h         |   2 +-
 src/hdy-preferences-row.c          |  76 ++-
 src/hdy-preferences-row.h          |   2 +-
 src/hdy-preferences-window.c       |  70 +--
 src/hdy-preferences-window.h       |   2 +-
 src/hdy-search-bar.c               | 148 +++---
 src/hdy-shadow-helper.c            |  30 +-
 src/hdy-squeezer.c                 | 257 ++++++----
 src/hdy-stackable-box.c            | 202 ++++----
 src/hdy-status-page.c              |  52 +-
 src/hdy-style-manager.c            | 115 ++---
 src/hdy-swipe-group.c              |  97 ++--
 src/hdy-swipe-tracker.c            | 155 +++---
 src/hdy-swipeable.c                |  75 +--
 src/hdy-swipeable.h                |  16 +-
 src/hdy-tab-bar.c                  | 185 +++----
 src/hdy-tab-view.c                 | 625 +++++++++++------------
 src/hdy-title-bar.c                |  56 ++-
 src/hdy-value-object.c             |  96 ++--
 src/hdy-version.h.in               |  19 +-
 src/hdy-view-switcher-bar.c        | 107 ++--
 src/hdy-view-switcher-button.c     |  89 ++--
 src/hdy-view-switcher-title.c      | 167 ++++---
 src/hdy-view-switcher.c            | 117 ++---
 src/hdy-window-handle-controller.c |  16 +-
 src/hdy-window-handle.c            |  25 +-
 src/hdy-window-mixin.c             |  17 +-
 src/hdy-window.c                   |  59 ++-
 subprojects/gi-docgen.wrap         |   6 +
 78 files changed, 4839 insertions(+), 3864 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 861bd45b..51c49b5b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,17 +22,18 @@ doc:
   stage: build
   variables:
     MESON_ARGS: >-
+      -Dexamples=false
       -Dgtk_doc=true
       -Dtests=false
-      -Dintrospection=disabled
       -Dvapi=false
   before_script:
     - dnf -y update
-    - dnf -y install gcc gtk-doc gtk3-devel meson
+    - dnf -y install gcc git gobject-introspection-devel gtk3-devel meson pip
+    - pip install Jinja2 pygments toml typogrify
   script:
     - meson --prefix=/app ${MESON_ARGS} _build
-    - ninja -C _build libhandy-1-doc
-    - mv _build/doc/html/ _doc/
+    - ninja -C _build
+    - mv _build/doc/libhandy-1 _doc/
   artifacts:
     paths:
       - _doc
diff --git a/README.md b/README.md
index afcc8de7..1ed6efcf 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ For build options see [meson_options.txt](./meson_options.txt). E.g. to enable d
 
 ```sh
 meson . _build -Dgtk_doc=true
-ninja -C _build libhandy-doc
+ninja -C _build
 ```
 
 ## Usage
diff --git a/doc/build-howto.md b/doc/build-howto.md
new file mode 100644
index 00000000..3977796c
--- /dev/null
+++ b/doc/build-howto.md
@@ -0,0 +1,105 @@
+Title: Compiling with Libhandy
+Slug: build-howto
+
+# Compiling with Libhandy
+
+If you need to build Libhandy, get the source from
+[here](https://gitlab.gnome.org/GNOME/libhandy/) and see the `README.md` file.
+
+## Using pkg-config
+
+Like other GNOME libraries, Libhandy uses `pkg-config` to provide compiler
+options. The package name is `libhandy-1`.
+
+
+If you use Automake/Autoconf, in your `configure.ac` script, you might specify
+something like:
+
+```autoconf
+PKG_CHECK_MODULES(LIBHANDY, [libhandy-1])
+AC_SUBST(LIBHANDY_CFLAGS)
+AC_SUBST(LIBHANDY_LIBS)
+```
+
+Or when using the Meson build system you can declare a dependency like:
+
+```meson
+dependency('libhandy-1')
+```
+
+The `1` in the package name is the "API version" (indicating "the version of the
+Libhandy API that first appeared in version 1") and is essentially just part of
+the package name.
+
+## Bundling the library
+
+As Libhandy uses the Meson build system, bundling it as a subproject when it is
+not installed is easy. Add this to your `meson.build`:
+
+```meson
+libhandy_dep = dependency('libhandy-1', version: '>= 1', required: false)
+if not libhandy_dep.found()
+  libhandy = subproject(
+    'libhandy',
+    install: false,
+    default_options: [
+      'examples=false',
+      'package_subdir=my-project-name',
+      'tests=false',
+    ]
+  )
+  libhandy_dep = libhandy.get_variable('libhandy_dep')
+endif
+```
+
+Then add Libhandy as a git submodule:
+
+```bash
+git submodule add https://gitlab.gnome.org/GNOME/libhandy.git subprojects/libhandy
+```
+
+To bundle the library with your Flatpak application, add the following module to
+your manifest:
+
+```json
+{
+  "name" : "libhandy",
+  "buildsystem" : "meson",
+  "config-opts": [
+    "-Dexamples=false",
+    "-Dtests=false"
+  ],
+  "sources" : [
+    {
+      "type" : "git",
+      "url" : "https://gitlab.gnome.org/GNOME/libhandy.git";
+    }
+  ]
+}
+```
+
+## Building on macOS
+
+To build on macOS you need to install the build-dependencies first. This can
+e.g. be done via [brew](https://brew.sh):
+
+```bash
+brew install pkg-config gtk+3 adwaita-icon-theme meson glade gobject-introspection vala
+```
+
+After running the command above, one may now build the library:
+
+```bash
+git clone https://gitlab.gnome.org/GNOME/libhandy.git
+cd libhandy
+meson . _build
+ninja -C _build test
+ninja -C _build install
+```
+
+Working with the library on macOS is pretty much the same as on Linux. To link
+it, use `pkg-config`:
+
+```bash
+gcc $(pkg-config --cflags --libs gtk+-3.0) $(pkg-config --cflags --libs libhandy-1) main.c -o main
+```
diff --git a/doc/hdy-migrating-0-0-to-1.md b/doc/hdy-migrating-0-0-to-1.md
new file mode 100644
index 00000000..a4fb64ec
--- /dev/null
+++ b/doc/hdy-migrating-0-0-to-1.md
@@ -0,0 +1,242 @@
+Title: Migrating from Handy 0.0.x to Handy 1
+Slug: migrating-from-handy-0-to-1
+
+# Migrating from Handy 0.0.x to Handy 1
+
+Handy 1 is a major new version of Handy that breaks both API and ABI compared to
+Handy 0.0.x. Thankfully, most of the changes are not hard to adapt to and there
+are a number of steps that you can take to prepare your Handy 0.0.x application
+for the switch to Handy 1. After that, there's a number of adjustments that you
+may have to do when you actually switch your application to build against Handy
+1.
+
+## Preparation in Handy 0.0.x
+
+The steps outlined in the following sections assume that your application is
+working with Handy 0.0.13, which is the final stable release of Handy 0.0.x. It
+includes all the necessary APIs and tools to help you port your application to
+Handy 1. If you are using an older version of Handy 0.0.x, you should first get
+your application to build and work with Handy 0.0.13.
+
+### Do not use the static build option
+
+Static linking support has been removed, and so did the static build option. You
+must adapt you program to link to the library dynamically, using the
+`package_subdir` build option if needed.
+
+### Do not use deprecated symbols
+
+Over the years, a number of functions, and in some cases, entire widgets have
+been deprecated. These deprecations are clearly spelled out in the API
+reference, with hints about the recommended replacements. The API reference for
+GTK 3 also includes an
+[index](https://developer.puri.sm/projects/libhandy/unstable/deprecated-api-index.html)
+of all deprecated symbols.
+
+## Changes that need to be done at the time of the switch
+
+This section outlines porting tasks that you need to tackle when you get to the
+point that you actually build your application against Handy 1. Making it
+possible to prepare for these in Handy 0.0 would have been either impossible or
+impractical.
+
+### `hdy_init()` takes no parameters
+
+[func@init] has been modified to take no parameters. It must be called 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.
+
+It initializes the localization, the types, the themes, and the icons.
+
+### Adapt to widget constructor changes
+
+All widget constructors now return the [class@Gtk.Widget] type rather than the
+constructed widget's type, following the same convention as GTK 3.
+
+Affected widgets:
+
+* [class@ActionRow]
+* [class@ComboRow]
+* [class@ExpanderRow]
+* [class@PreferencesGroup]
+* [class@PreferencesPage]
+* [class@PreferencesRow]
+* [class@PreferencesWindow]
+* [class@Squeezer]
+* [class@TitleBar]
+* [class@ViewSwitcherBar]
+* [class@ViewSwitcher]
+
+### Adapt to derivability changes
+
+Some widgets are now final, if your code is deriving from them, use composition
+instead.
+
+Affected widgets:
+
+* [class@Squeezer]
+* [class@ViewSwitcherBar]
+* [class@ViewSwitcher]
+
+### HdyFold has been removed
+
+HdyFold has been removed. This affects the API of [class@Leaflet], see the
+[Adapt to HdyLeaflet API changes](#adapt-to-hdyleaflet-api-changes) section to know how.
+
+### Replace HdyColumn by HdyClamp
+
+HdyColumn has been renamed [class@Clamp] as it now implements
+[iface@Gtk.Orientable], so you should replace the former by the later. Its
+`maximum-width` and `linear-growth-width` properties have been renamed
+[property@Clamp:maximum-size] and [property@Clamp:tightening-threshold]
+respectively to better reflect their role. It won't set the `.narrow`, `.medium`
+and `.wide` style classes depending on its size, but the `.small`, `.medium` and
+`.large` ones instead.
+
+### Adapt to HdyPaginator API changes
+
+HdyPaginator has been renamed [class@Carousel], so you should replace the former
+by the later.
+
+The `indicator-style`, `indicator-spacing` and `center-content` properties have
+been removed, instead use [class@CarouselIndicatorDots] or
+[class@CarouselIndicatorLines] widgets.
+
+### Adapt to HdyHeaderGroup API changes
+
+The [class@HeaderGroup] object has been largely redesigned, most of its methods
+changed, see its documentation to know more.
+
+The child type is now [class@HeaderGroupChild], which can represent either a
+[class@Gtk.HeaderBar], a [class@HeaderBar], or a [class@HeaderGroup].
+
+The `focus` property has been replaced by [property@HeaderGroup:decorate-all],
+which works quite differently.
+
+### Adapt to HdyLeaflet API changes
+
+The HdyFold type has been removed in favor of using a boolean, and
+[class@Leaflet] adjusted to that as the `fold` property has been removed in
+favor of [property@Leaflet:folded]. Also, the [method@Leaflet.get_homogeneous]
+and [method@Leaflet.set_homogeneous] getters take a boolean parameter instead of
+a HdyFold.
+
+On touchscreens, swiping forward with the `over` transition and swiping back
+with the `under` transition can now only be done from the edge where the upper
+child is.
+
+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 `allow-visible` child property has been renamed `navigatable`.
+
+The `none` transition type has been removed. The default value for the
+[property@Leaflet:transition-type] property has been changed to `over`. `over`
+is the recommended transition for typical [class@Leaflet] use-cases, if this
+isn't what you want to use, be sure to adapt your code. If transitions are
+undesired, set [property@Leaflet:mode-transition-duration] and
+[property@Leaflet:child-transition-duration] properties to `0`.
+
+### Adapt to HdyViewSwitcher API changes
+
+[class@ViewSwitcher] doesn't subclass [class Gtk Box] anymore. Instead, it
+subclasses [class Gtk Bin] and contains a box.
+
+The `icon-size` property has been dropped without replacement, you must stop
+using it.
+
+### Adapt to HdyViewSwitcherBar API changes
+
+[class@ViewSwitcherBar] won't be revealed if the
+[property@ViewSwitcherBar:stack] property is `NULL` or if it has less than two
+pages, even if you set [property@ViewSwitcherBar:reveal] to `TRUE`.
+
+The `icon-size` property has been dropped without replacement, you must stop
+using it.
+
+### Adapt to CSS node name changes
+
+Widgets with a custom CSS node name got their name changed to be the class' name
+in lowercase, with no separation between words, and with no namespace prefix.
+E.g. the CSS node name of [class@ViewSwitcher] is `viewswitcher`.
+
+### Adapt to HdyActionRow API changes
+
+Action items were packed from the end toward the start of the row. It is now
+reversed, and widgets have to be packed from the start to the end.
+
+It isn't possible to add children at the bottom of a [class@ActionRow] anymore,
+instead use other widgets like [class@ExpanderRow]. Widgets added to a
+[class@ActionRow] will now be added at the end of the row, and the
+`hdy_action_row_add_action()` method and the action child type have been removed.
+
+The main horizontal box of [class@ActionRow] had the row-header CSS style class,
+it now has the header CSS style class and can hence be accessed as `box.header`
+subnode.
+
+[class@ActionRow] is now unactivatable by default, giving it an activatable
+widget will automatically make it activatable.
+
+### Adapt to HdyComboRow API changes
+
+[class@ComboRow] is now unactivatable by default, binding and unbinding a model
+will toggle its activatability.
+
+### Adapt to HdyExpanderRow API changes
+
+[class@ExpanderRow] doesn't descend from [class@ActionRow] anymore but from
+[class@PreferencesRow]. It reimplements some features from [class@ActionRow],
+like the [property@PreferencesRow:title], [property@ExpanderRow:subtitle],
+[property@PreferencesRow:use-underline] and [property@ExpanderRow:icon-name],
+but it doesn't offer the "activate" signal nor the ability to add widgets in its
+header row.
+
+Widgets you add to it will be added to its inner [class@Gtk.ListBox].
+
+### Adapt to HdyPreferencesPage API changes
+
+[class@PreferencesPage] doesn't subclass [class@Gtk.ScrolledWindow] anymore.
+Instead, it subclasses [class Gtk Bin] and contains a scrolled window.
+
+### Adapt to HdyPreferencesGroup API changes
+
+[class@PreferencesGroup] doesn't subclass [class Gtk Box] anymore. Instead, it
+subclasses [class Gtk Bin] and contains a box.
+
+### Adapt to HdyKeypad API changes
+
+[class@Keypad] doesn't subclass [class Gtk Grid] anymore. Instead, it subclasses
+[class Gtk Bin] and contains a grid.
+
+The `show-symbols` property has been replaced by
+[property@Keypad:letters-visible].
+
+The `only-digits` property has been replaced by
+[property@Keypad:symbols-visible], which has a inverse boolean meaning. This
+also affects the corresponding parameter of the constructor.
+
+The `left-action` property has been replaced by [property@Keypad:start-action],
+and the `right-action` property has been replaced by
+[property@Keypad:end-action].
+
+The `entry` property isn't a [class@Gtk.Widget] anymore but a [class@Gtk.Entry].
+
+### Stop using `hdy_list_box_separator_header()`
+
+Instead, either use CSS styling (the `list.content` style class may fit your
+need), or implement it yourself as it is trivial.
+
+### Stop acknowledging the instability
+
+When the library was young and changing a lot, we required you to acknowledge
+that your are using an unstable API. To do so, you had to define
+`HANDY_USE_UNSTABLE_API` for compilation to succeed.
+
+The API remained stable since many versions, despite this acknowledgment still
+being required. To reflect that proven stability, the acknowledgment isn't
+necessary and you can stop defining `HANDY_USE_UNSTABLE_API`, either before
+including the Libhandy; header in C-compatible languages, or with the definition
+option of your compiler.
diff --git a/doc/libhandy.svg b/doc/libhandy.svg
new file mode 100644
index 00000000..2c799f9a
--- /dev/null
+++ b/doc/libhandy.svg
@@ -0,0 +1,996 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="256"
+   height="256"
+   version="1.1"
+   id="svg182"
+   sodipodi:docname="libhandy.svg"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:svg="http://www.w3.org/2000/svg";>
+  <sodipodi:namedview
+     id="namedview184"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="1.515625"
+     inkscape:cx="-127.01031"
+     inkscape:cy="27.051546"
+     inkscape:window-width="1920"
+     inkscape:window-height="1011"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg182" />
+  <defs
+     id="defs176">
+    <linearGradient
+       id="Gradient"
+       x1="0"
+       x2="0"
+       y1="0"
+       y2="1">
+      <stop
+         offset="0%"
+         style="stop-color:#C01C28;stop-opacity:1"
+         id="stop2" />
+      <stop
+         offset="100%"
+         style="stop-color:#C01C28;stop-opacity:1"
+         id="stop4" />
+    </linearGradient>
+    <filter
+       id="alpha-to-white"
+       x="0.010770828"
+       y="0.10850615"
+       width="0.021550364"
+       height="0.030544065">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 1 0                              0 0 0 1 0                              0 0 0 1 0     
                         0 0 0 1 0"
+         id="feColorMatrix7" />
+    </filter>
+    <g
+       id="child-svg">
+      <svg
+         height="16px"
+         viewBox="0 0 16 16"
+         width="16px"
+         version="1.1"
+         id="svg173">
+        <filter
+           id="a"
+           height="1"
+           width="1"
+           x="0"
+           y="0">
+          <feColorMatrix
+             in="SourceGraphic"
+             type="matrix"
+             values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+             id="feColorMatrix10" />
+        </filter>
+        <mask
+           id="b">
+          <g
+             filter="url(#a)"
+             id="g15">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.3"
+               id="path13" />
+          </g>
+        </mask>
+        <clipPath
+           id="c">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path18" />
+        </clipPath>
+        <mask
+           id="d">
+          <g
+             filter="url(#a)"
+             id="g23">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path21" />
+          </g>
+        </mask>
+        <clipPath
+           id="e">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path26" />
+        </clipPath>
+        <mask
+           id="f">
+          <g
+             filter="url(#a)"
+             id="g31">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path29" />
+          </g>
+        </mask>
+        <clipPath
+           id="g">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path34" />
+        </clipPath>
+        <mask
+           id="h">
+          <g
+             filter="url(#a)"
+             id="g39">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path37" />
+          </g>
+        </mask>
+        <clipPath
+           id="i">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path42" />
+        </clipPath>
+        <mask
+           id="j">
+          <g
+             filter="url(#a)"
+             id="g47">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path45" />
+          </g>
+        </mask>
+        <clipPath
+           id="k">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path50" />
+        </clipPath>
+        <mask
+           id="l">
+          <g
+             filter="url(#a)"
+             id="g55">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path53" />
+          </g>
+        </mask>
+        <clipPath
+           id="m">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path58" />
+        </clipPath>
+        <mask
+           id="n">
+          <g
+             filter="url(#a)"
+             id="g63">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.05"
+               id="path61" />
+          </g>
+        </mask>
+        <clipPath
+           id="o">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path66" />
+        </clipPath>
+        <mask
+           id="p">
+          <g
+             filter="url(#a)"
+             id="g71">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.3"
+               id="path69" />
+          </g>
+        </mask>
+        <clipPath
+           id="q">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path74" />
+        </clipPath>
+        <mask
+           id="r">
+          <g
+             filter="url(#a)"
+             id="g79">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.5"
+               id="path77" />
+          </g>
+        </mask>
+        <clipPath
+           id="s">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path82" />
+        </clipPath>
+        <mask
+           id="t">
+          <g
+             filter="url(#a)"
+             id="g87">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.4"
+               id="path85" />
+          </g>
+        </mask>
+        <clipPath
+           id="u">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path90" />
+        </clipPath>
+        <mask
+           id="v">
+          <g
+             filter="url(#a)"
+             id="g95">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.4"
+               id="path93" />
+          </g>
+        </mask>
+        <clipPath
+           id="w">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path98" />
+        </clipPath>
+        <mask
+           id="x">
+          <g
+             filter="url(#a)"
+             id="g103">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.5"
+               id="path101" />
+          </g>
+        </mask>
+        <clipPath
+           id="y">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path106" />
+        </clipPath>
+        <mask
+           id="z">
+          <g
+             filter="url(#a)"
+             id="g111">
+            <path
+               d="m 0 0 h 16 v 16 h -16 z"
+               fill-opacity="0.5"
+               id="path109" />
+          </g>
+        </mask>
+        <clipPath
+           id="A">
+          <path
+             d="m 0 0 h 1024 v 800 h -1024 z"
+             id="path114" />
+        </clipPath>
+        <g
+           clip-path="url(#c)"
+           mask="url(#b)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g119">
+          <path
+             d="m 562.460938 212.058594 h 10.449218 c -1.183594 0.492187 -1.296875 2.460937 0 3 h -10.449218 
z m 0 0"
+             fill="#2e3436"
+             id="path117" />
+        </g>
+        <g
+           clip-path="url(#e)"
+           mask="url(#d)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g123">
+          <path
+             d="m 16 632 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path121" />
+        </g>
+        <g
+           clip-path="url(#g)"
+           mask="url(#f)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g127">
+          <path
+             d="m 17 631 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path125" />
+        </g>
+        <g
+           clip-path="url(#i)"
+           mask="url(#h)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g131">
+          <path
+             d="m 18 634 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path129" />
+        </g>
+        <g
+           clip-path="url(#k)"
+           mask="url(#j)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g135">
+          <path
+             d="m 16 634 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path133" />
+        </g>
+        <g
+           clip-path="url(#m)"
+           mask="url(#l)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g139">
+          <path
+             d="m 17 635 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path137" />
+        </g>
+        <g
+           clip-path="url(#o)"
+           mask="url(#n)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g143">
+          <path
+             d="m 19 635 h 1 v 1 h -1 z m 0 0"
+             fill="#2e3436"
+             fill-rule="evenodd"
+             id="path141" />
+        </g>
+        <g
+           clip-path="url(#q)"
+           mask="url(#p)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g147">
+          <path
+             d="m 136 660 v 7 h 7 v -7 z m 0 0"
+             fill="#2e3436"
+             id="path145" />
+        </g>
+        <g
+           clip-path="url(#s)"
+           mask="url(#r)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g151">
+          <path
+             d="m 199 642 h 3 v 12 h -3 z m 0 0"
+             fill="#2e3436"
+             id="path149" />
+        </g>
+        <path
+           d="m 6.957031 3.015625 c -0.101562 0.003906 -0.199219 0.023437 -0.292969 0.054687 c -0.0625 
0.023438 -0.125 0.054688 -0.179687 0.085938 c -0.03125 0.019531 -0.058594 0.039062 -0.082031 0.058594 c 
-0.082032 0.058594 -0.152344 0.132812 -0.210938 0.210937 c -0.082031 0.109375 -0.136718 0.234375 -0.164062 
0.363281 c -0.007813 0.03125 -0.015625 0.066407 -0.019532 0.097657 c -0.003906 0.039062 -0.007812 0.074219 
-0.007812 0.113281 v 8.382812 l -2.550781 -1.277343 c -0.464844 -0.234375 -1.03125 -0.074219 -1.300781 
0.367187 c -0.273438 0.441406 -0.164063 1.019532 0.253906 1.328125 l 3.976562 2.980469 l 0.019532 0.019531 c 
0.011718 0.007813 0.019531 0.011719 0.03125 0.019531 c 0.015624 0.011719 0.03125 0.019532 0.046874 0.03125 c 
0.011719 0.007813 0.023438 0.011719 0.035157 0.019532 c 0.015625 0.007812 0.03125 0.015625 0.042969 0.023437 
c 0.019531 0.007813 0.039062 0.015625 0.054687 0.023438 c 0.015625 0.007812 0.027344 0.011719 0.039063 
0.015625 c 0.019531 0.007812 0.042968 0.015
 625 0.0625 0.023437 c 0.007812 0.003907 0.019531 0.003907 0.03125 0.007813 c 0.015624 0.003906 0.03125 
0.007812 0.050781 0.011718 c 0.015625 0.003907 0.035156 0.007813 0.054687 0.011719 c 0.011719 0 0.019532 
0.003907 0.027344 0.003907 c 0.027344 0.003906 0.054688 0.003906 0.082031 0.007812 h 0.042969 h 5 s 0.457031 
0.015625 0.949219 -0.230469 c 0.488281 -0.246093 1.050781 -0.9375 1.050781 -1.769531 v -4 c 0 -0.460938 
-0.3125 -0.859375 -0.757812 -0.96875 l -4 -1 c -0.078126 -0.023438 -0.160157 -0.03125 -0.242188 -0.03125 h -1 
v -4 c 0 -0.101562 -0.019531 -0.199219 -0.050781 -0.292969 c -0.027344 -0.097656 -0.074219 -0.1875 -0.132813 
-0.269531 c -0.019531 -0.027344 -0.039062 -0.054688 -0.0625 -0.078125 c -0.0625 -0.074219 -0.140625 -0.140625 
-0.226562 -0.195313 c -0.027344 -0.015624 -0.054688 -0.03125 -0.085938 -0.046874 c -0.03125 -0.015626 
-0.058594 -0.027344 -0.09375 -0.039063 c -0.03125 -0.011719 -0.0625 -0.023437 -0.09375 -0.03125 s -0.066406 
-0.015625 -0.097656 -0.023437 c -0.06
 6406 -0.007813 -0.132812 -0.011719 -0.199219 -0.007813 z m 0 0"
+           fill="#2e3436"
+           fill-rule="evenodd"
+           id="path153" />
+        <path
+           d="m 7 0 c -2.199219 0 -4 1.800781 -4 4 c 0 1.464844 0.8125 2.742188 2 3.4375 v -3.4375 c 0 
-1.089844 0.910156 -2 2 -2 s 2 0.910156 2 2 v 3 c 0.082031 0 0.164062 0.007812 0.242188 0.03125 l 0.253906 
0.0625 c 0.910156 -0.734375 1.503906 -1.84375 1.503906 -3.09375 c 0 -2.199219 -1.804688 -4 -4 -4 z m 0 0"
+           fill="#2e3436"
+           fill-opacity="0.35"
+           id="path155" />
+        <g
+           clip-path="url(#u)"
+           mask="url(#t)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g159">
+          <path
+             d="m 209.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 
s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"
+             fill="#2e3436"
+             id="path157" />
+        </g>
+        <g
+           clip-path="url(#w)"
+           mask="url(#v)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g163">
+          <path
+             d="m 206.5 144.160156 c 0.277344 0 0.5 0.222656 0.5 0.5 v 1 c 0 0.277344 -0.222656 0.5 -0.5 0.5 
s -0.5 -0.222656 -0.5 -0.5 v -1 c 0 -0.277344 0.222656 -0.5 0.5 -0.5 z m 0 0"
+             fill="#2e3436"
+             id="path161" />
+        </g>
+        <g
+           clip-path="url(#y)"
+           mask="url(#x)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g167">
+          <path
+             d="m 229.5 143.160156 c -0.546875 0 -1 0.457032 -1 1 c 0 0.546875 0.453125 1 1 1 s 1 -0.453125 
1 -1 c 0 -0.542968 -0.453125 -1 -1 -1 z m 0 0"
+             fill="#2e3436"
+             id="path165" />
+        </g>
+        <g
+           clip-path="url(#A)"
+           mask="url(#z)"
+           transform="matrix(1 0 0 1 -20 -200)"
+           id="g171">
+          <path
+             d="m 226.453125 143.160156 c -0.519531 0 -0.953125 0.433594 -0.953125 0.953125 v 0.09375 c 0 
0.519531 0.433594 0.953125 0.953125 0.953125 h 0.09375 c 0.519531 0 0.953125 -0.433594 0.953125 -0.953125 v 
-0.09375 c 0 -0.519531 -0.433594 -0.953125 -0.953125 -0.953125 z m 0 0"
+             fill="#2e3436"
+             id="path169" />
+        </g>
+      </svg>
+    </g>
+    <clipPath
+       id="A-3">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path690" />
+    </clipPath>
+    <mask
+       id="z-7">
+      <g
+         filter="url(#a)"
+         id="g687"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.5"
+           id="path685" />
+      </g>
+    </mask>
+    <filter
+       id="a-5"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix586" />
+    </filter>
+    <clipPath
+       id="y-9">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path682" />
+    </clipPath>
+    <mask
+       id="x-2">
+      <g
+         filter="url(#a)"
+         id="g679"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.5"
+           id="path677" />
+      </g>
+    </mask>
+    <filter
+       id="filter775"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix773" />
+    </filter>
+    <clipPath
+       id="w-2">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path674" />
+    </clipPath>
+    <mask
+       id="v-8">
+      <g
+         filter="url(#a)"
+         id="g671"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.4"
+           id="path669" />
+      </g>
+    </mask>
+    <filter
+       id="filter784"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix782" />
+    </filter>
+    <clipPath
+       id="u-9">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path666" />
+    </clipPath>
+    <mask
+       id="t-7">
+      <g
+         filter="url(#a)"
+         id="g663"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.4"
+           id="path661" />
+      </g>
+    </mask>
+    <filter
+       id="filter793"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix791" />
+    </filter>
+    <clipPath
+       id="s-3">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path658" />
+    </clipPath>
+    <mask
+       id="r-6">
+      <g
+         filter="url(#a)"
+         id="g655"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.5"
+           id="path653" />
+      </g>
+    </mask>
+    <filter
+       id="filter802"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix800" />
+    </filter>
+    <clipPath
+       id="q-1">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path650" />
+    </clipPath>
+    <mask
+       id="p-2">
+      <g
+         filter="url(#a)"
+         id="g647"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.3"
+           id="path645" />
+      </g>
+    </mask>
+    <filter
+       id="filter811"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix809" />
+    </filter>
+    <clipPath
+       id="o-9">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path642" />
+    </clipPath>
+    <mask
+       id="n-3">
+      <g
+         filter="url(#a)"
+         id="g639"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path637" />
+      </g>
+    </mask>
+    <filter
+       id="filter820"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix818" />
+    </filter>
+    <clipPath
+       id="m-1">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path634" />
+    </clipPath>
+    <mask
+       id="l-9">
+      <g
+         filter="url(#a)"
+         id="g631"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path629" />
+      </g>
+    </mask>
+    <filter
+       id="filter829"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix827" />
+    </filter>
+    <clipPath
+       id="k-4">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path626" />
+    </clipPath>
+    <mask
+       id="j-7">
+      <g
+         filter="url(#a)"
+         id="g623"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path621" />
+      </g>
+    </mask>
+    <filter
+       id="filter838"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix836" />
+    </filter>
+    <clipPath
+       id="i-8">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path618" />
+    </clipPath>
+    <mask
+       id="h-4">
+      <g
+         filter="url(#a)"
+         id="g615"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path613" />
+      </g>
+    </mask>
+    <filter
+       id="filter847"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix845" />
+    </filter>
+    <clipPath
+       id="g-5">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path610" />
+    </clipPath>
+    <mask
+       id="f-0">
+      <g
+         filter="url(#a)"
+         id="g607"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path605" />
+      </g>
+    </mask>
+    <filter
+       id="filter856"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix854" />
+    </filter>
+    <clipPath
+       id="e-3">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path602" />
+    </clipPath>
+    <mask
+       id="d-6">
+      <g
+         filter="url(#a)"
+         id="g599"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.05"
+           id="path597" />
+      </g>
+    </mask>
+    <filter
+       id="filter865"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix863" />
+    </filter>
+    <clipPath
+       id="c-1">
+      <path
+         d="M 0,0 H 1024 V 800 H 0 Z"
+         id="path594" />
+    </clipPath>
+    <mask
+       id="b-0">
+      <g
+         filter="url(#a)"
+         id="g591"
+         style="filter:url(#a-5)">
+        <path
+           d="M 0,0 H 16 V 16 H 0 Z"
+           fill-opacity="0.3"
+           id="path589" />
+      </g>
+    </mask>
+    <filter
+       id="filter874"
+       height="1"
+       width="1"
+       x="0"
+       y="0">
+      <feColorMatrix
+         in="SourceGraphic"
+         type="matrix"
+         values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"
+         id="feColorMatrix872" />
+    </filter>
+  </defs>
+  <rect
+     width="256"
+     height="256"
+     fill="url(#Gradient)"
+     ry="128"
+     x="0"
+     y="0"
+     id="rect178" />
+  <g
+     clip-path="url(#c-1)"
+     mask="url(#b-0)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g695">
+    <path
+       d="m 562.46094,212.05859 h 10.44922 c -1.1836,0.49219 -1.29688,2.46094 0,3 h -10.44922 z m 0,0"
+       fill="#2e3436"
+       id="path693" />
+  </g>
+  <g
+     clip-path="url(#e-3)"
+     mask="url(#d-6)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g699">
+    <path
+       d="m 16,632 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path697" />
+  </g>
+  <g
+     clip-path="url(#g-5)"
+     mask="url(#f-0)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g703">
+    <path
+       d="m 17,631 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path701" />
+  </g>
+  <g
+     clip-path="url(#i-8)"
+     mask="url(#h-4)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g707">
+    <path
+       d="m 18,634 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path705" />
+  </g>
+  <g
+     clip-path="url(#k-4)"
+     mask="url(#j-7)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g711">
+    <path
+       d="m 16,634 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path709" />
+  </g>
+  <g
+     clip-path="url(#m-1)"
+     mask="url(#l-9)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g715">
+    <path
+       d="m 17,635 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path713" />
+  </g>
+  <g
+     clip-path="url(#o-9)"
+     mask="url(#n-3)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g719">
+    <path
+       d="m 19,635 h 1 v 1 h -1 z m 0,0"
+       fill="#2e3436"
+       fill-rule="evenodd"
+       id="path717" />
+  </g>
+  <g
+     clip-path="url(#q-1)"
+     mask="url(#p-2)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g723">
+    <path
+       d="m 136,660 v 7 h 7 v -7 z m 0,0"
+       fill="#2e3436"
+       id="path721" />
+  </g>
+  <g
+     clip-path="url(#s-3)"
+     mask="url(#r-6)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g727">
+    <path
+       d="m 199,642 h 3 v 12 h -3 z m 0,0"
+       fill="#2e3436"
+       id="path725" />
+  </g>
+  <path
+     d="m 119.65811,88.123304 c -0.81237,0.03115 -1.59355,0.187489 -2.34344,0.437455 -0.49993,0.1875 
-0.99988,0.437466 -1.43725,0.687431 -0.24957,0.156222 -0.46874,0.312443 -0.65591,0.468665 -0.65592,0.46865 
-1.21855,1.062338 -1.68721,1.687266 -0.65591,0.874878 -1.09361,1.874738 -1.31239,2.905853 -0.064,0.249555 
-0.12478,0.531128 -0.15597,0.78149 -0.032,0.312757 -0.064,0.593524 -0.064,0.906117 V 163.05099 L 
91.598428,152.83364 c -3.71821,-1.87478 -8.24887,-0.59351 -10.40482,2.93711 -2.18723,3.53074 -1.3123,8.15515 
2.03093,10.62353 l 31.808232,23.84053 0.15599,0.15598 c 0.0936,0.064 0.15598,0.0936 0.24955,0.15599 
0.12479,0.0936 0.24958,0.15597 0.37516,0.24955 0.0936,0.064 0.18717,0.0936 0.28156,0.15599 0.12477,0.0639 
0.24956,0.1247 0.34396,0.18717 0.15598,0.0639 0.31275,0.12485 0.43754,0.18717 0.12478,0.064 0.21836,0.0936 
0.31275,0.12486 0.15598,0.0639 0.34395,0.12485 0.49994,0.18717 0.0639,0.032 0.15598,0.032 0.24956,0.064 
0.12478,0.032 0.24957,0.064 0.40634,0.0936 0.12478,0.032 0.2
 8157,0.064 0.43754,0.0936 0.0936,0 0.15598,0.032 0.21838,0.032 0.21836,0.032 0.43754,0.032 0.65591,0.0639 h 
0.34395 39.99459 c 0,0 3.65574,0.12484 7.59273,-1.84349 3.90571,-1.9683 8.40511,-7.49883 8.40511,-14.15418 v 
-31.99565 c 0,-3.68703 -2.49966,-6.87403 -6.06167,-7.74897 l -31.99567,-7.99891 c -0.62471,-0.18716 
-1.2811,-0.24954 -1.93725,-0.24954 h -7.99887 V 95.999343 c 0,-0.812374 -0.15597,-1.593549 -0.40634,-2.343431 
C 127.37516,92.874736 127,92.15612 126.5312,91.499955 c -0.15599,-0.218687 -0.31278,-0.437454 
-0.49995,-0.624955 -0.49993,-0.593675 -1.12488,-1.124844 -1.81232,-1.562283 -0.21837,-0.124983 
-0.43754,-0.249966 -0.6871,-0.374921 -0.24956,-0.124984 -0.46873,-0.218685 -0.74949,-0.312429 
-0.24957,-0.09371 -0.49993,-0.187502 -0.74951,-0.249966 -0.24956,-0.06242 -0.53112,-0.124981 
-0.78149,-0.187501 -0.53112,-0.06242 -1.06234,-0.0937 -1.59354,-0.06242 z m 0,0"
+     fill="#2e3436"
+     fill-rule="evenodd"
+     id="path729"
+     style="stroke-width:7.99891;fill:#ffffff" />
+  <path
+     d="m 120.77586,63.53508 c -17.93171,0 -32.614682,14.682981 -32.614682,32.614721 0,11.943829 
6.62486,22.358839 16.307342,28.028249 V 96.149801 c 0,-8.886262 7.42115,-16.307374 16.30734,-16.307374 
8.88621,0 16.30736,7.421112 16.30736,16.307374 v 24.461019 c 0.66859,0 1.33769,0.0652 1.97473,0.25438 l 
2.07022,0.50961 c 7.42115,-5.98789 12.26239,-15.03333 12.26239,-25.225426 0,-17.931727 -14.71485,-32.614712 
-32.6147,-32.614712 z m 0,0"
+     fill="#2e3436"
+     fill-opacity="0.35"
+     id="path731"
+     style="stroke-width:8.15367;fill:#f66151;fill-opacity:1" />
+  <g
+     clip-path="url(#u-9)"
+     mask="url(#t-7)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g735">
+    <path
+       d="m 209.5,144.16016 c 0.27734,0 0.5,0.22265 0.5,0.5 v 1 c 0,0.27734 -0.22266,0.5 -0.5,0.5 -0.27734,0 
-0.5,-0.22266 -0.5,-0.5 v -1 c 0,-0.27735 0.22266,-0.5 0.5,-0.5 z m 0,0"
+       fill="#2e3436"
+       id="path733" />
+  </g>
+  <g
+     clip-path="url(#w-2)"
+     mask="url(#v-8)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g739">
+    <path
+       d="m 206.5,144.16016 c 0.27734,0 0.5,0.22265 0.5,0.5 v 1 c 0,0.27734 -0.22266,0.5 -0.5,0.5 -0.27734,0 
-0.5,-0.22266 -0.5,-0.5 v -1 c 0,-0.27735 0.22266,-0.5 0.5,-0.5 z m 0,0"
+       fill="#2e3436"
+       id="path737" />
+  </g>
+  <g
+     clip-path="url(#y-9)"
+     mask="url(#x-2)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g743">
+    <path
+       d="m 229.5,143.16016 c -0.54688,0 -1,0.45703 -1,1 0,0.54687 0.45312,1 1,1 0.54687,0 1,-0.45313 1,-1 
0,-0.54297 -0.45313,-1 -1,-1 z m 0,0"
+       fill="#2e3436"
+       id="path741" />
+  </g>
+  <g
+     clip-path="url(#A-3)"
+     mask="url(#z-7)"
+     transform="matrix(8.1536729,0,0,8.1536729,-0.00926173,-1597.7044)"
+     id="g747">
+    <path
+       d="m 226.45312,143.16016 c -0.51953,0 -0.95312,0.43359 -0.95312,0.95312 v 0.0937 c 0,0.51953 
0.43359,0.95313 0.95312,0.95313 h 0.0937 c 0.51954,0 0.95313,-0.4336 0.95313,-0.95313 v -0.0937 c 0,-0.51953 
-0.43359,-0.95312 -0.95313,-0.95312 z m 0,0"
+       fill="#2e3436"
+       id="path745" />
+  </g>
+</svg>
diff --git a/doc/libhandy.toml.in b/doc/libhandy.toml.in
new file mode 100644
index 00000000..59cdb66b
--- /dev/null
+++ b/doc/libhandy.toml.in
@@ -0,0 +1,55 @@
+[library]
+version = "@VERSION@"
+description = "Building blocks for modern adaptive GNOME apps"
+authors = "Purism SPC"
+license = "GPL-2.1-or-later"
+browse_url = "https://gitlab.gnome.org/GNOME/libhandy/";
+repository_url = "https://gitlab.gnome.org/GNOME/libhandy.git";
+website_url = "https://gnome.pages.gitlab.gnome.org/libhandy";
+logo_url = "libhandy.svg"
+dependencies = [
+  "GObject-2.0",
+  "Gtk-3.0",
+]
+devhelp = true
+search_index = true
+
+[dependencies."GObject-2.0"]
+name = "GObject"
+description = "The base type system library"
+docs_url = "https://developer.gnome.org/gobject/stable";
+
+[dependencies."Gtk-3.0"]
+name = "GTK"
+description = "The GTK toolkit"
+docs_url = "https://docs.gtk.org/gtk3/";
+
+[theme]
+name = "basic"
+show_index_summary = true
+show_class_hierarchy = true
+
+[source-location]
+# The base URL for the web UI
+base_url = "https://gitlab.gnome.org/GNOME/libhandy/-/blob/main/";
+# The format for links, using "filename" and "line" for the format
+file_format = "{filename}#L{line}"
+
+[extra]
+urlmap_file = "urlmap.js"
+content_files = [
+  "build-howto.md",
+  'hdy-migrating-0-0-to-1.md',
+  "visual-index.md",
+]
+content_images = [
+  "images/avatar.png",
+  "images/header-bar.png",
+  "images/keypad.png",
+  "images/list.png",
+  "images/preferences-window.png",
+  "images/search.png",
+  "images/view-switcher.png",
+  "images/view-switcher-bar.png",
+  "libhandy.svg",
+]
diff --git a/doc/meson.build b/doc/meson.build
index 6a15b230..9e679c4b 100644
--- a/doc/meson.build
+++ b/doc/meson.build
@@ -1,83 +1,47 @@
 if get_option('gtk_doc')
 
-subdir('xml')
-
-private_headers = [
-    'config.h',
-    'gtkprogresstrackerprivate.h',
-    'gtk-window-private.h',
-    'hdy-animation-private.h',
-    'hdy-avatar-icon-private.h',
-    'hdy-bidi-private.h',
-    'hdy-carousel-box-private.h',
-    'hdy-css-private.h',
-    'hdy-enums.h',
-    'hdy-enums-private.h',
-    'hdy-fading-label-private.h',
-    'hdy-main-private.h',
-    'hdy-nothing-private.h',
-    'hdy-keypad-button-private.h',
-    'hdy-preferences-group-private.h',
-    'hdy-preferences-page-private.h',
-    'hdy-settings-private.h',
-    'hdy-shadow-helper-private.h',
-    'hdy-stackable-box-private.h',
-    'hdy-swipe-tracker-private.h',
-    'hdy-tab-private.h',
-    'hdy-tab-bar-private.h',
-    'hdy-tab-box-private.h',
-    'hdy-tab-view-private.h',
-    'hdy-types.h',
-    'hdy-view-switcher-button-private.h',
-    'hdy-window-handle-controller-private.h',
-    'hdy-window-mixin-private.h',
+expand_content_md_files = [
+  'build-howto.md',
+  'hdy-migrating-0-0-to-1.md',
+  'visual-index.md',
 ]
 
-images = [
-  'images/avatar.png',
-  'images/header-bar.png',
-  'images/keypad.png',
-  'images/list.png',
-  'images/preferences-window.png',
-  'images/search.png',
-  'images/view-switcher.png',
-  'images/view-switcher-bar.png',
-]
+toml_data = configuration_data()
+toml_data.set('VERSION', meson.project_version())
 
-content_files = [
-  'build-howto.xml',
-  'hdy-migrating-0-0-to-1.xml',
-  'visual-index.xml',
-]
+libhandy_toml = configure_file(
+  input: 'libhandy.toml.in',
+  output: 'libhandy.toml',
+  configuration: toml_data
+)
+
+dependency('gi-docgen', version: '>= 2021.1',
+           fallback: ['gi-docgen', 'dummy_dep'],
+           native: true,
+           required: get_option('gtk_doc'))
+
+gidocgen = find_program('gi-docgen')
 
-glib_prefix  = dependency('glib-2.0').get_pkgconfig_variable('prefix')
-glib_docpath = glib_prefix / 'share' / 'gtk-doc' / 'html'
-docpath      = get_option('datadir') / 'gtk-doc' / 'html'
+docs_dir = datadir / 'doc'
 
-gnome.gtkdoc('libhandy',
-     module_version: apiversion,
-           main_xml: 'handy-docs.xml',
-            src_dir: [
-                       meson.source_root() / 'src',
-                       meson.build_root()  / 'src',
-                     ],
-       dependencies: libhandy_dep,
-  gobject_typesfile: 'libhandy.types',
-          scan_args: [
-                       '--rebuild-types',
-                       '--ignore-headers=' + ' '.join(private_headers),
-                     ],
-       fixxref_args: [
-                       '--html-dir=@0@'.format(docpath),
-                       '--extra-dir=@0@'.format(glib_docpath / 'glib'),
-                       '--extra-dir=@0@'.format(glib_docpath / 'gobject'),
-                       '--extra-dir=@0@'.format(glib_docpath / 'gio'),
-                       '--extra-dir=@0@'.format(glib_docpath / 'gi'),
-                       '--extra-dir=@0@'.format(glib_docpath / 'gtk3'),
-                       '--extra-dir=@0@'.format(glib_docpath / 'gdk-pixbuf'),
-                     ],
-      content_files: content_files,
-        html_assets: images,
-            install: true)
+custom_target('libhandy-doc',
+  input: [ libhandy_toml, libhandy_gir[0] ],
+  output: 'libhandy-@0@'.format(apiversion),
+  command: [
+    gidocgen,
+    'generate',
+    '--quiet',
+    '--add-include-path=@0@'.format(meson.current_build_dir() / '../../src'),
+    '--config=@INPUT0@',
+    '--output-dir=@OUTPUT@',
+    '--no-namespace-dir',
+    '--content-dir=@0@'.format(meson.current_source_dir()),
+    '@INPUT1@',
+  ],
+  depend_files: [ expand_content_md_files ],
+  build_by_default: true,
+  install: true,
+  install_dir: docs_dir,
+)
 
 endif
diff --git a/doc/urlmap.js b/doc/urlmap.js
new file mode 100644
index 00000000..2f4ada98
--- /dev/null
+++ b/doc/urlmap.js
@@ -0,0 +1,15 @@
+// SPDX-FileCopyrightText: 2021 GNOME Foundation
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+// Copied from GTK
+
+// A map between namespaces and base URLs for their online documentation
+baseURLs = [
+  ["GLib", "https://docs.gtk.org/glib/";],
+  ["Gio", "https://docs.gtk.org/gio/";],
+  ["GObject", "https://docs.gtk.org/gobject/";],
+  ["Gdk", "https://docs.gtk.org/gdk3/";],
+  ["GdkPixbuf", "https://docs.gtk.org/gdk-pixbuf/";],
+  ["Gtk", "https://docs.gtk.org/gtk3/";],
+  ["Pango", "https://docs.gtk.org/Pango/";]
+];
diff --git a/doc/visual-index.md b/doc/visual-index.md
new file mode 100644
index 00000000..f23f4c90
--- /dev/null
+++ b/doc/visual-index.md
@@ -0,0 +1,16 @@
+Title: Visual Index
+Slug: visual-index
+
+# Visual Index
+
+Widgets in libhandy — Widget overview.
+
+##  Widgets
+
+[![avatar](avatar.png)](class.Avatar.html)
+[![header-bar](header-bar.png)](class.HeaderBar.html)
+[![keypad](keypad.png)](class.Keypad.html)
+[![list](list.png)](class.ActionRow.html)
+[![preferences-window](preferences-window.png)](class.PreferencesWindow.html)
+[![view-switcher](view-switcher.png)](class.ViewSwitcher.html)
+[![view-switcher-bar](view-switcher-bar.png)](class.ViewSwitcherBar.html)
diff --git a/src/hdy-action-row.c b/src/hdy-action-row.c
index 296c712f..16f0b260 100644
--- a/src/hdy-action-row.c
+++ b/src/hdy-action-row.c
@@ -10,38 +10,39 @@
 #include <glib/gi18n-lib.h>
 
 /**
- * SECTION:hdy-action-row
- * @short_description: A #GtkListBox row used to present actions.
- * @Title: HdyActionRow
+ * HdyActionRow:
  *
- * The #HdyActionRow widget can have a title, a subtitle and an icon. The row
+ * 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
+ * `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
+ * ## HdyActionRow as GtkBuildable
  *
- * The GtkWindow implementation of the GtkBuildable interface supports setting a
- * child at its end by omitting the “type” attribute of a &lt;child&gt; element.
+ * 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 setting a child as a prefix widget by specifying “prefix” as
- * the “type” attribute of a &lt;child&gt; element.
+ * It also supports adding a child as a prefix widget by specifying “prefix” as
+ * the “type” attribute of a <child> element.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyActionRow has a main CSS node with name row.
+ * `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 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.
+ * It contains subnodes `label.title` and `label.subtitle` representing
+ * respectively the title label and subtitle label.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 
 typedef struct
@@ -359,11 +360,11 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
   klass->activate = hdy_action_row_activate_real;
 
   /**
-   * HdyActionRow:icon-name:
+   * HdyActionRow:icon-name: (attributes org.gtk.Property.get=hdy_action_row_get_icon_name 
org.gtk.Property.set=hdy_action_row_set_icon_name)
    *
    * The icon name for this row.
    *
-   * Since: 0.0.6
+   * Since: 1.0
    */
   props[PROP_ICON_NAME] =
     g_param_spec_string ("icon-name",
@@ -373,11 +374,18 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyActionRow:activatable-widget:
+   * HdyActionRow:activatable-widget: (attributes org.gtk.Property.get=hdy_action_row_get_activatable_widget 
org.gtk.Property.set=hdy_action_row_set_activatable_widget)
    *
    * The activatable widget for this row.
    *
-   * Since: 0.0.7
+   * 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.
+   *
+   * Since: 1.0
    */
   props[PROP_ACTIVATABLE_WIDGET] =
       g_param_spec_object ("activatable-widget",
@@ -387,11 +395,11 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
                            G_PARAM_READWRITE);
 
   /**
-   * HdyActionRow:subtitle:
+   * HdyActionRow:subtitle: (attributes org.gtk.Property.get=hdy_action_row_get_subtitle 
org.gtk.Property.set=hdy_action_row_set_subtitle)
    *
    * The subtitle for this row.
    *
-   * Since: 0.0.6
+   * Since: 1.0
    */
   props[PROP_SUBTITLE] =
     g_param_spec_string ("subtitle",
@@ -401,12 +409,14 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyActionRow:use-underline:
+   * HdyActionRow:use-underline: (attributes org.gtk.Property.get=hdy_action_row_get_use_underline 
org.gtk.Property.set=hdy_action_row_set_use_underline)
+   *
+   * Whether embedded underlines in the title or subtitle indicates a mnemonic.
    *
-   * Whether an embedded underline in the text of the title and subtitle labels
-   * 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.
    *
-   * Since: 0.0.6
+   * Since: 1.0
    */
   props[PROP_USE_UNDERLINE] =
     g_param_spec_boolean ("use-underline",
@@ -416,10 +426,11 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyActionRow:title-lines:
+   * HdyActionRow:title-lines: (attributes org.gtk.Property.get=hdy_action_row_get_title_lines 
org.gtk.Property.set=hdy_action_row_set_title_lines)
    *
    * The number of lines at the end of which the title label will be ellipsized.
-   * Set this property to 0 if you don't want to limit the number of lines.
+   *
+   * If the value is 0, the number of lines won't be limited.
    *
    * Since: 1.2
    */
@@ -432,11 +443,12 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
                       G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyActionRow:subtitle-lines:
+   * HdyActionRow:subtitle-lines: (attributes org.gtk.Property.get=hdy_action_row_get_subtitle_lines 
org.gtk.Property.set=hdy_action_row_set_subtitle_lines)
    *
    * The number of lines at the end of which the subtitle label will be
    * ellipsized.
-   * Set this property to 0 if you don't want to limit the number of lines.
+   *
+   * If the value is 0, the number of lines won't be limited.
    *
    * Since: 1.2
    */
@@ -452,7 +464,6 @@ hdy_action_row_class_init (HdyActionRowClass *klass)
 
   /**
    * HdyActionRow::activated:
-   * @self: The #HdyActionRow instance
    *
    * This signal is emitted after the row has been activated.
    *
@@ -537,11 +548,11 @@ hdy_action_row_buildable_init (GtkBuildableIface *iface)
 /**
  * hdy_action_row_new:
  *
- * Creates a new #HdyActionRow.
+ * Creates a new `HdyActionRow`.
  *
- * Returns: a new #HdyActionRow
+ * Returns: the newly created `HdyActionRow`
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 GtkWidget *
 hdy_action_row_new (void)
@@ -550,14 +561,14 @@ hdy_action_row_new (void)
 }
 
 /**
- * hdy_action_row_get_subtitle:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_subtitle: (attributes org.gtk.Method.get_property=subtitle)
+ * @self: an action row
  *
  * Gets the subtitle for @self.
  *
- * Returns: (transfer none) (nullable): the subtitle for @self, or %NULL.
+ * Returns: (transfer none) (nullable): the subtitle for @self
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 const gchar *
 hdy_action_row_get_subtitle (HdyActionRow *self)
@@ -572,13 +583,13 @@ hdy_action_row_get_subtitle (HdyActionRow *self)
 }
 
 /**
- * hdy_action_row_set_subtitle:
- * @self: a #HdyActionRow
+ * hdy_action_row_set_subtitle: (attributes org.gtk.Method.set_property=subtitle)
+ * @self: an action row
  * @subtitle: (nullable): the subtitle
  *
  * Sets the subtitle for @self.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_action_row_set_subtitle (HdyActionRow *self,
@@ -601,15 +612,14 @@ hdy_action_row_set_subtitle (HdyActionRow *self,
 }
 
 /**
- * hdy_action_row_get_icon_name:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_icon_name: (attributes org.gtk.Method.get_property=icon-name)
+ * @self: an action row
  *
  * Gets the icon name for @self.
  *
- * Returns: (transfer none): the icon name for @self.
- * The returned string is owned by the #HdyActionRow and should not be freed.
+ * Returns: (transfer none): the icon name for @self
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 const gchar *
 hdy_action_row_get_icon_name (HdyActionRow *self)
@@ -627,13 +637,13 @@ hdy_action_row_get_icon_name (HdyActionRow *self)
 }
 
 /**
- * hdy_action_row_set_icon_name:
- * @self: a #HdyActionRow
+ * hdy_action_row_set_icon_name: (attributes org.gtk.Method.set_property=icon-name)
+ * @self: an action row
  * @icon_name: the icon name
  *
  * Sets the icon name for @self.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_action_row_set_icon_name (HdyActionRow *self,
@@ -658,15 +668,14 @@ hdy_action_row_set_icon_name (HdyActionRow *self,
 }
 
 /**
- * hdy_action_row_get_activatable_widget:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_activatable_widget: (attributes org.gtk.Method.get_property=activatable-widget)
+ * @self: an action row
  *
  * Gets the widget activated when @self is activated.
  *
- * Returns: (nullable) (transfer none): the widget activated when @self is
- *          activated, or %NULL if none has been set.
+ * Returns: (nullable) (transfer none): the activatable widget for @self
  *
- * Since: 0.0.7
+ * Since: 1.0
  */
 GtkWidget *
 hdy_action_row_get_activatable_widget (HdyActionRow *self)
@@ -693,18 +702,13 @@ activatable_widget_weak_notify (gpointer  data,
 }
 
 /**
- * hdy_action_row_set_activatable_widget:
- * @self: a #HdyActionRow
- * @widget: (nullable): the target #GtkWidget, or %NULL to unset
+ * hdy_action_row_set_activatable_widget: (attributes org.gtk.Method.set_property=activatable-widget)
+ * @self: an action row
+ * @widget: (nullable): the target widget
  *
- * Sets the widget to activate when @self is activated, either by clicking
- * on it, by calling hdy_action_row_activate(), or via mnemonics in the title or
- * the subtitle. See the “use_underline” property to enable mnemonics.
+ * Sets the widget to activate when @self is activated.
  *
- * The target widget will be activated by emitting the
- * GtkWidget::mnemonic-activate signal on it.
- *
- * Since: 0.0.7
+ * Since: 1.0
  */
 void
 hdy_action_row_set_activatable_widget (HdyActionRow *self,
@@ -738,16 +742,16 @@ hdy_action_row_set_activatable_widget (HdyActionRow *self,
 }
 
 /**
- * hdy_action_row_get_use_underline:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_use_underline: (attributes org.gtk.Method.get_property=use-underline)
+ * @self: an action row
  *
- * Gets whether an embedded underline in the text of the title and subtitle
- * labels indicates a mnemonic. See hdy_action_row_set_use_underline().
+ * Gets whether an embedded underline in the title or subtitle indicates a
+ * mnemonic.
  *
- * Returns: %TRUE if an embedded underline in the title and subtitle labels
- *          indicates the mnemonic accelerator keys.
+ * Returns: whether an embedded underline in the title or subtitle indicates a
+ *   mnemonic
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_action_row_get_use_underline (HdyActionRow *self)
@@ -762,14 +766,14 @@ hdy_action_row_get_use_underline (HdyActionRow *self)
 }
 
 /**
- * hdy_action_row_set_use_underline:
- * @self: a #HdyActionRow
- * @use_underline: %TRUE if underlines in the text indicate mnemonics
+ * hdy_action_row_set_use_underline: (attributes org.gtk.Method.set_property=use-underline)
+ * @self: an action row
+ * @use_underline: `TRUE` if underlines in the text indicate mnemonics
  *
- * If true, an underline in the text of the title and subtitle labels indicates
- * the next character should be used for the mnemonic accelerator key.
+ * Sets whether an embedded underline in the title or subtitle indicates a
+ * mnemonic.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_action_row_set_use_underline (HdyActionRow *self,
@@ -797,15 +801,16 @@ hdy_action_row_set_use_underline (HdyActionRow *self,
 }
 
 /**
- * hdy_action_row_get_title_lines:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_title_lines: (attributes org.gtk.Method.get_property=title-lines)
+ * @self: 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.
  *
  * Returns: the number of lines at the end of which the title label will be
- *          ellipsized.
+ *   ellipsized
  *
  * Since: 1.2
  */
@@ -822,12 +827,13 @@ hdy_action_row_get_title_lines (HdyActionRow *self)
 }
 
 /**
- * hdy_action_row_set_title_lines:
- * @self: a #HdyActionRow
+ * hdy_action_row_set_title_lines: (attributes org.gtk.Method.set_property=title-lines)
+ * @self: an action row
  * @title_lines: the number of lines at the end of which the title 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.
  *
  * Since: 1.2
@@ -855,15 +861,16 @@ hdy_action_row_set_title_lines (HdyActionRow *self,
 }
 
 /**
- * hdy_action_row_get_subtitle_lines:
- * @self: a #HdyActionRow
+ * hdy_action_row_get_subtitle_lines: (attributes org.gtk.Method.get_property=subtitle-lines)
+ * @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.
  *
  * Returns: the number of lines at the end of which the subtitle label will be
- *          ellipsized.
+ *   ellipsized
  *
  * Since: 1.2
  */
@@ -880,12 +887,13 @@ hdy_action_row_get_subtitle_lines (HdyActionRow *self)
 }
 
 /**
- * hdy_action_row_set_subtitle_lines:
- * @self: a #HdyActionRow
+ * hdy_action_row_set_subtitle_lines: (attributes org.gtk.Method.set_property=subtitle-lines)
+ * @self: an action row
  * @subtitle_lines: 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 subtitle label will be
  * ellipsized.
+ *
  * If the value is 0, the number of lines won't be limited.
  *
  * Since: 1.2
@@ -914,12 +922,12 @@ hdy_action_row_set_subtitle_lines (HdyActionRow *self,
 
 /**
  * hdy_action_row_add_prefix:
- * @self: a #HdyActionRow
+ * @self: an action row
  * @widget: the prefix widget
  *
  * Adds a prefix widget to @self.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_action_row_add_prefix (HdyActionRow *self,
@@ -936,6 +944,14 @@ hdy_action_row_add_prefix (HdyActionRow *self,
   gtk_widget_show (GTK_WIDGET (priv->prefixes));
 }
 
+/**
+ * hdy_action_row_activate:
+ * @self: an action row
+ *
+ * Activates @self.
+ *
+ * Since: 1.0
+ */
 void
 hdy_action_row_activate (HdyActionRow *self)
 {
diff --git a/src/hdy-action-row.h b/src/hdy-action-row.h
index 425d2c7b..2534e0ea 100644
--- a/src/hdy-action-row.h
+++ b/src/hdy-action-row.h
@@ -23,8 +23,8 @@ G_DECLARE_DERIVABLE_TYPE (HdyActionRow, hdy_action_row, HDY, ACTION_ROW, HdyPref
 
 /**
  * HdyActionRowClass
- * @parent_class: The parent class
- * @activate: Activates the row to trigger its main action.
+ * @parent_class: the parent class
+ * @activate: activates the row to trigger its main action
  */
 struct _HdyActionRowClass
 {
diff --git a/src/hdy-animation.c b/src/hdy-animation.c
index 5766a52b..e28488e5 100644
--- a/src/hdy-animation.c
+++ b/src/hdy-animation.c
@@ -8,16 +8,6 @@
 
 #include "hdy-animation-private.h"
 
-/**
- * SECTION:hdy-animation
- * @short_description: Animation helpers
- * @title: Animation Helpers
- *
- * Animation helpers.
- *
- * Since: 0.0.11
- */
-
 G_DEFINE_BOXED_TYPE (HdyAnimation, hdy_animation, hdy_animation_ref, hdy_animation_unref)
 
 struct _HdyAnimation
@@ -207,14 +197,16 @@ hdy_animation_get_value (HdyAnimation *self)
 
 /**
  * hdy_get_enable_animations:
- * @widget: a #GtkWidget
+ * @widget: a widget
+ *
+ * Checks whether animations are enabled for @widget.
  *
- * Returns whether animations are enabled for that widget. This should be used
- * when implementing an animated widget to know whether to animate it or not.
+ * This should be used when implementing an animated widget to know whether to
+ * animate it or not.
  *
- * Returns: %TRUE if animations are enabled for @widget.
+ * Returns: whether animations are enabled for @widget
  *
- * Since: 0.0.11
+ * Since: 1.0
  */
 gboolean
 hdy_get_enable_animations (GtkWidget *widget)
@@ -238,9 +230,9 @@ hdy_get_enable_animations (GtkWidget *widget)
  *
  * Computes the linear interpolation between @a and @b for @t.
  *
- * Returns: the linear interpolation between @a and @b for @t.
+ * Returns: the linear interpolation between @a and @b for @t
  *
- * Since: 0.0.11
+ * Since: 1.0
  */
 gdouble
 hdy_lerp (gdouble a, gdouble b, gdouble t)
@@ -256,11 +248,11 @@ hdy_lerp (gdouble a, gdouble b, gdouble t)
  * hdy_ease_out_cubic:
  * @t: the term
  *
- * Computes the ease out for @t.
+ * Computes the ease out for a value.
  *
- * Returns: the ease out for @t.
+ * Returns: the ease out for @t
  *
- * Since: 0.0.11
+ * Since: 1.0
  */
 gdouble
 hdy_ease_out_cubic (gdouble t)
diff --git a/src/hdy-application-window.c b/src/hdy-application-window.c
index 74b751ab..be4cd31e 100644
--- a/src/hdy-application-window.c
+++ b/src/hdy-application-window.c
@@ -10,18 +10,18 @@
 #include "hdy-window-mixin-private.h"
 
 /**
- * SECTION:hdy-application-window
- * @short_description: A freeform application window.
- * @title: HdyApplicationWindow
- * @See_also: #HdyHeaderBar, #HdyWindow, #HdyWindowHandle
+ * HdyApplicationWindow:
  *
- * HdyApplicationWindow is a #GtkApplicationWindow subclass providing the same
- * features as #HdyWindow.
+ * A freeform application window.
  *
- * See #HdyWindow for details.
+ * `HdyApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
+ * the same features as [class@Window].
  *
- * Using gtk_application_set_app_menu() and gtk_application_set_menubar() is
- * not supported and may result in visual glitches.
+ * 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.
  *
  * Since: 1.0
  */
@@ -136,9 +136,9 @@ hdy_application_window_buildable_init (GtkBuildableIface *iface)
 /**
  * hdy_application_window_new:
  *
- * Creates a new #HdyApplicationWindow.
+ * Creates a new `HdyApplicationWindow`.
  *
- * Returns: (transfer full): a newly created #HdyApplicationWindow
+ * Returns: the newly created `HdyApplicationWindow`
  *
  * Since: 1.0
  */
diff --git a/src/hdy-avatar.c b/src/hdy-avatar.c
index a62313e4..7ca4ff48 100644
--- a/src/hdy-avatar.c
+++ b/src/hdy-avatar.c
@@ -21,24 +21,29 @@
 #define NUMBER_OF_COLORS 14
 #define LOAD_BUFFER_SIZE 65536
 /**
- * SECTION:hdy-avatar
- * @short_description: A widget displaying an image, with a generated fallback.
- * @Title: HdyAvatar
+ * HdyAvatar:
+ *
+ * A widget displaying an image, with a generated fallback.
+ *
+ * `HdyAvatar` is a widget to display a round avatar.
  *
- * #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 #HdyAvatar:text
- * on top of a colord background.
- * The color is picked based on the hash of the #HdyAvatar:text.
- * If #HdyAvatar:show-initials is set to %FALSE, `avatar-default-symbolic` is
- * shown in place of the initials.
- * Use hdy_avatar_set_loadable_icon() or #HdyAvatar:loadable-icon to set a
- * custom image.
+ * 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
+ * ## CSS nodes
  *
- * #HdyAvatar has a single CSS node with name avatar.
+ * `HdyAvatar` has a single CSS node with name `avatar`.
  *
+ * Since: 1.0
  */
 
 struct _HdyAvatar
@@ -861,9 +866,11 @@ hdy_avatar_class_init (HdyAvatarClass *klass)
   widget_class->size_allocate = hdy_avatar_size_allocate;
 
   /**
-   * HdyAvatar:size:
+   * HdyAvatar:size: (attributes org.gtk.Property.get=hdy_avatar_get_size 
org.gtk.Property.set=hdy_avatar_set_size)
    *
    * The avatar size of the avatar.
+   *
+   * Since: 1.0
    */
   props[PROP_SIZE] =
     g_param_spec_int ("size",
@@ -873,14 +880,14 @@ hdy_avatar_class_init (HdyAvatarClass *klass)
                       G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyAvatar:icon-name:
+   * HdyAvatar:icon-name: (attributes org.gtk.Property.get=hdy_avatar_get_icon_name 
org.gtk.Property.set=hdy_avatar_set_icon_name)
    *
-   * The name of the icon in the icon theme to use when the icon should be
-   * displayed.
-   * 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.
+   * 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.
    *
    * Since: 1.0
    */
@@ -892,10 +899,14 @@ hdy_avatar_class_init (HdyAvatarClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyAvatar:text:
+   * HdyAvatar:text: (attributes org.gtk.Property.get=hdy_avatar_get_text 
org.gtk.Property.set=hdy_avatar_set_text)
+   *
+   * Sets the text used to generate the fallback initials and color.
    *
-   * The text used for the initials and for generating the color.
-   * If #HdyAvatar:show-initials is %FALSE it's only used to generate the color.
+   * It's only used to generate the color if [property@Avatar:show-initials] is
+   * `FALSE`.
+   *
+   * Since: 1.0
    */
   props[PROP_TEXT] =
     g_param_spec_string ("text",
@@ -905,9 +916,11 @@ hdy_avatar_class_init (HdyAvatarClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyAvatar:show_initials:
+   * HdyAvatar:show-initials: (attributes org.gtk.Property.get=hdy_avatar_get_show_initials 
org.gtk.Property.set=hdy_avatar_set_show_initials)
    *
    * Whether to show the initials or the fallback icon on the generated avatar.
+   *
+   * Since: 1.0
    */
   props[PROP_SHOW_INITIALS] =
     g_param_spec_boolean ("show-initials",
@@ -917,9 +930,9 @@ hdy_avatar_class_init (HdyAvatarClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyAvatar:loadable-icon:
+   * HdyAvatar:loadable-icon: (attributes org.gtk.Property.get=hdy_avatar_get_loadable_icon 
org.gtk.Property.set=hdy_avatar_set_loadable_icon)
    *
-   * A #GLoadableIcon used to load the avatar.
+   * A [iface@Gio.LoadableIcon] used to load the avatar.
    *
    * Since: 1.2
    */
@@ -944,15 +957,15 @@ hdy_avatar_init (HdyAvatar *self)
 
 /**
  * hdy_avatar_new:
- * @size: The size of the avatar
- * @text: (nullable): The text used to generate the color and initials if
- * @show_initials is %TRUE. The color is selected at random if @text is empty.
- * @show_initials: whether to show the initials or the fallback icon on
- * top of the color generated based on @text.
+ * @size: the size of the avatar
+ * @text: (nullable): the text used to get the initials and color
+ * @show_initials: whether to use initials instead of an icon as fallback
  *
- * Creates a new #HdyAvatar.
+ * Creates a new `HdyAvatar`.
  *
- * Returns: the newly created #HdyAvatar
+ * Returns: the newly created `HdyAvatar`
+ *
+ * Since: 1.0
  */
 GtkWidget *
 hdy_avatar_new (gint         size,
@@ -967,13 +980,12 @@ hdy_avatar_new (gint         size,
 }
 
 /**
- * hdy_avatar_get_icon_name:
- * @self: a #HdyAvatar
+ * hdy_avatar_get_icon_name: (attributes org.gtk.Method.get_property=icon-name)
+ * @self: an avatar
  *
- * Gets the name of the icon in the icon theme to use when the icon should be
- * displayed.
+ * Gets the name of an icon to use as a fallback.
  *
- * Returns: (nullable) (transfer none): the name of the icon from the icon theme.
+ * Returns: (nullable): the icon name
  *
  * Since: 1.0
  */
@@ -986,16 +998,13 @@ hdy_avatar_get_icon_name (HdyAvatar *self)
 }
 
 /**
- * hdy_avatar_set_icon_name:
- * @self: a #HdyAvatar
+ * hdy_avatar_set_icon_name: (attributes org.gtk.Method.set_property=icon-name)
+ * @self: an avatar
  * @icon_name: (nullable): the name of the icon from the icon theme
  *
- * Sets the name of the icon in the icon theme to use when the icon should be
- * displayed.
- * 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.
+ * Sets the name of an icon to use as a fallback.
+ *
+ * If no name is set, `avatar-default-symbolic` will be used.
  *
  * Since: 1.0
  */
@@ -1019,14 +1028,15 @@ hdy_avatar_set_icon_name (HdyAvatar   *self,
 }
 
 /**
- * hdy_avatar_get_text:
- * @self: a #HdyAvatar
+ * hdy_avatar_get_text: (attributes org.gtk.Method.get_property=text)
+ * @self: an avatar
+ *
+ * Gets the text used to generate the fallback initials and color.
  *
- * Get the text used to generate the fallback initials and color
+ * Returns: (nullable): the text used to generate the fallback initials and
+ *   color
  *
- * Returns: (nullable) (transfer none): returns the text used to generate
- * the fallback initials. This is the internal string used by
- * the #HdyAvatar, and must not be modified.
+ * Since: 1.0
  */
 const gchar *
 hdy_avatar_get_text (HdyAvatar *self)
@@ -1037,11 +1047,13 @@ hdy_avatar_get_text (HdyAvatar *self)
 }
 
 /**
- * hdy_avatar_set_text:
- * @self: a #HdyAvatar
+ * hdy_avatar_set_text: (attributes org.gtk.Method.set_property=text)
+ * @self: an avatar
  * @text: (nullable): the text used to get the initials and color
  *
- * Set the text used to generate the fallback initials color
+ * Set the text used to generate the fallback initials color.
+ *
+ * Since: 1.0
  */
 void
 hdy_avatar_set_text (HdyAvatar   *self,
@@ -1063,12 +1075,14 @@ hdy_avatar_set_text (HdyAvatar   *self,
 }
 
 /**
- * hdy_avatar_get_show_initials:
- * @self: a #HdyAvatar
+ * hdy_avatar_get_show_initials: (attributes org.gtk.Method.get_property=show-initials)
+ * @self: an avatar
  *
- * Returns whether initials are used for the fallback or the icon.
+ * Gets whether initials are used instead of an icon on the fallback avatar.
  *
- * Returns: %TRUE if the initials are used for the fallback.
+ * Returns: whether initials are used instead of an icon as fallback
+ *
+ * Since: 1.0
  */
 gboolean
 hdy_avatar_get_show_initials (HdyAvatar *self)
@@ -1079,12 +1093,13 @@ hdy_avatar_get_show_initials (HdyAvatar *self)
 }
 
 /**
- * hdy_avatar_set_show_initials:
- * @self: a #HdyAvatar
- * @show_initials: whether the initials should be shown on the fallback avatar
- * or the icon.
+ * hdy_avatar_set_show_initials: (attributes org.gtk.Method.set_property=show-initials)
+ * @self: an avatar
+ * @show_initials: whether to use initials instead of an icon as fallback
  *
- * Sets whether the initials should be shown on the fallback avatar or the icon.
+ * Sets whether to use initials instead of an icon on the fallback avatar.
+ *
+ * Since: 1.0
  */
 void
 hdy_avatar_set_show_initials (HdyAvatar *self,
@@ -1103,15 +1118,19 @@ hdy_avatar_set_show_initials (HdyAvatar *self,
 
 /**
  * hdy_avatar_set_image_load_func:
- * @self: a #HdyAvatar
+ * @self: an avatar
  * @load_image: (closure user_data) (nullable): callback to set a custom image
  * @user_data: (nullable): user data passed to @load_image
  * @destroy: (nullable): destroy notifier for @user_data
  *
- * A callback which is called when the custom image need to be reloaded for some
- * reason (e.g. scale-factor changes).
+ * 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.
+ *
+ * Since: 1.0
  *
- * Deprecated: 1.2: use hdy_avatar_set_loadable_icon() instead.
+ * Deprecated: 1.2: use [method@Avatar.set_loadable_icon] instead.
  */
 void
 hdy_avatar_set_image_load_func (HdyAvatar              *self,
@@ -1156,12 +1175,14 @@ hdy_avatar_set_image_load_func (HdyAvatar              *self,
 }
 
 /**
- * hdy_avatar_get_size:
- * @self: a #HdyAvatar
+ * hdy_avatar_get_size: (attributes org.gtk.Method.get_property=size)
+ * @self: an avatar
+ *
+ * Gets the size of the avatar.
  *
- * Returns the size of the avatar.
+ * Returns: the size of the avatar
  *
- * Returns: the size of the avatar.
+ * Since: 1.0
  */
 gint
 hdy_avatar_get_size (HdyAvatar *self)
@@ -1172,11 +1193,13 @@ hdy_avatar_get_size (HdyAvatar *self)
 }
 
 /**
- * hdy_avatar_set_size:
- * @self: a #HdyAvatar
- * @size: The size to be used for the avatar
+ * hdy_avatar_set_size: (attributes org.gtk.Method.set_property=size)
+ * @self: an avatar
+ * @size: the size to be used for the avatar
  *
  * Sets the size of the avatar.
+ *
+ * Since: 1.0
  */
 void
 hdy_avatar_set_size (HdyAvatar *self,
@@ -1196,13 +1219,15 @@ hdy_avatar_set_size (HdyAvatar *self,
 
 /**
  * hdy_avatar_draw_to_pixbuf:
- * @self: a #HdyAvatar
- * @size: The size of the pixbuf
- * @scale_factor: The scale factor
+ * @self: an avatar
+ * @size: the size of the pixbuf
+ * @scale_factor: the scale factor
  *
- * Renders @self into a pixbuf at @size and @scale_factor. This can be used to export the fallback avatar.
+ * Renders @self into a [class@GdkPixbuf.Pixbuf] at @size and @scale_factor.
  *
- * Returns: (transfer full): the pixbuf.
+ * This can be used to export the fallback avatar.
+ *
+ * Returns: (transfer full): the pixbuf
  *
  * Since: 1.2
  */
@@ -1256,14 +1281,16 @@ hdy_avatar_draw_to_pixbuf (HdyAvatar *self,
 
 /**
  * hdy_avatar_draw_to_pixbuf_async:
- * @self: a #HdyAvatar
- * @size: The size of the pixbuf
- * @scale_factor: The scale factor
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call when the avatar is generated
+ * @self: an avatar
+ * @size: the size of the pixbuf
+ * @scale_factor: the scale factor
+ * @cancellable: (nullable): a cancellable
+ * @callback: (scope async): a [callback@Gio.AsyncReadyCallback] to call when
+ *   the avatar is generated
  * @user_data: (closure): the data to pass to callback function
 
  * Renders asynchronously @self into a pixbuf at @size and @scale_factor.
+ *
  * This can be used to export the fallback avatar.
  *
  * Since: 1.2
@@ -1307,12 +1334,12 @@ hdy_avatar_draw_to_pixbuf_async (HdyAvatar           *self,
 
 /**
  * hdy_avatar_draw_to_pixbuf_finish:
- * @self: a #HdyAvatar
- * @async_result: a #GAsyncResult
+ * @self: an avatar
+ * @async_result: a [iface@Gio.AsyncResult]
  *
  * Finishes an asynchronous draw of an avatar to a pixbuf.
  *
- * Returns: (transfer full): a #GdkPixbuf
+ * Returns: (transfer full): the resulting pixbuf
  *
  * Since: 1.2
  */
@@ -1360,12 +1387,12 @@ hdy_avatar_draw_to_pixbuf_finish (HdyAvatar    *self,
 }
 
 /**
- * hdy_avatar_get_loadable_icon:
- * @self: a #HdyAvatar
+ * hdy_avatar_get_loadable_icon: (attributes org.gtk.Method.get_property=loadable-icon)
+ * @self: an avatar
  *
- * Gets the #GLoadableIcon set via hdy_avatar_set_loadable_icon().
+ * Gets the [iface@Gio.LoadableIcon] set via [method@Avatar.set_loadable_icon].
  *
- * Returns: (nullable) (transfer none): the #GLoadableIcon
+ * Returns: (nullable) (transfer none): the [iface@Gio.LoadableIcon]
  *
  * Since: 1.2
  */
@@ -1378,15 +1405,17 @@ hdy_avatar_get_loadable_icon (HdyAvatar *self)
 }
 
 /**
- * hdy_avatar_set_loadable_icon:
- * @self: a #HdyAvatar
- * @icon: (nullable): a #GLoadableIcon
+ * hdy_avatar_set_loadable_icon: (attributes org.gtk.Method.set_property=loadable-icon)
+ * @self: an avatar
+ * @icon: (nullable): a [iface@Gio.LoadableIcon]
+ *
+ * Sets the [iface@Gio.LoadableIcon] to use as an avatar.
  *
- * Sets the #GLoadableIcon 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 previous avatar is displayed till the new avatar is loaded, to
+ * immediately remove the custom avatar set the loadable-icon to `NULL`.
  *
- * The #GLoadableIcon set via this function is prefered over a set #HdyAvatarImageLoadFunc.
+ * The [iface@Gio.LoadableIcon] set via this function is preferred over a set
+ * [callback@AvatarImageLoadFunc].
  *
  * Since: 1.2
  */
diff --git a/src/hdy-avatar.h b/src/hdy-avatar.h
index 424d45a6..cb543cbf 100644
--- a/src/hdy-avatar.h
+++ b/src/hdy-avatar.h
@@ -27,13 +27,18 @@ G_DECLARE_FINAL_TYPE (HdyAvatar, hdy_avatar, HDY, AVATAR, GtkDrawingArea)
  * @size: the required size of the avatar
  * @user_data: (closure): user data
  *
- * The returned #GdkPixbuf is expected to be square with width and height set
- * to @size. The image is cropped to a circle without any scaling or transformation.
+ * Callback for loading an [class@Avatar]'s image.
  *
- * Returns: (nullable) (transfer full): the #GdkPixbuf to use as a custom avatar
- * or %NULL to fallback to the generated avatar.
+ * 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.
  *
- * Deprecated: 1.2: use hdy_avatar_set_loadable_icon() instead.
+ * Returns: (nullable) (transfer full): the pixbuf to use as a custom avatar or
+ *   `NULL` to fallback to the generated avatar
+ *
+ * Since: 1.0
+ *
+ * Deprecated: 1.2: use [method@Avatar.set_loadable_icon] instead.
  */
 HDY_DEPRECATED_TYPE_IN_1_2_FOR (hdy_avatar_set_loadable_icon)
 typedef GdkPixbuf *(*HdyAvatarImageLoadFunc) (gint     size,
diff --git a/src/hdy-carousel-box.c b/src/hdy-carousel-box.c
index ad66028f..a31f2040 100644
--- a/src/hdy-carousel-box.c
+++ b/src/hdy-carousel-box.c
@@ -14,14 +14,12 @@
 #include <math.h>
 
 /**
- * PRIVATE:hdy-carousel-box
- * @short_description: Scrolling box used in #HdyCarousel
- * @title: HdyCarouselBox
- * @See_also: #HdyCarousel
- * @stability: Private
+ * HdyCarouselBox:
  *
- * The #HdyCarouselBox object is meant to be used exclusively as part of the
- * #HdyCarousel implementation.
+ * Scrolling box used in [class@Carousel]
+ *
+ * The [class@CarouselBox] object is meant to be used exclusively as part of the
+ * [class@Carousel] implementation.
  *
  * Since: 1.0
  */
@@ -1082,9 +1080,9 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
   container_class->forall = hdy_carousel_box_forall;
 
   /**
-   * HdyCarouselBox:n-pages:
+   * HdyCarouselBox:n-pages: (attributes org.gtk.Property.get=hdy_carousel_box_get_n_pages)
    *
-   * The number of pages in a #HdyCarouselBox
+   * The number of pages in a [class@CarouselBox].
    *
    * Since: 1.0
    */
@@ -1098,7 +1096,7 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
                        G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarouselBox:position:
+   * HdyCarouselBox:position: (attributes org.gtk.Property.get=hdy_carousel_box_get_position 
org.gtk.Property.set=hdy_carousel_box_set_position)
    *
    * Current scrolling position, unitless. 1 matches 1 page.
    *
@@ -1114,7 +1112,7 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarouselBox:spacing:
+   * HdyCarouselBox:spacing: (attributes org.gtk.Property.get=hdy_carousel_box_get_spacing 
org.gtk.Property.set=hdy_carousel_box_set_spacing)
    *
    * Spacing between pages in pixels.
    *
@@ -1130,7 +1128,7 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarouselBox:reveal-duration:
+   * HdyCarouselBox:reveal-duration: (attributes org.gtk.Property.get=hdy_carousel_box_get_reveal_duration 
org.gtk.Property.set=hdy_carousel_box_set_reveal_duration)
    *
    * Duration of the animation used when adding or removing pages, in
    * milliseconds.
@@ -1154,7 +1152,6 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
 
   /**
    * HdyCarouselBox::animation-stopped:
-   * @self: The #HdyCarouselBox instance
    *
    * This signal is emitted after an animation has been stopped. If animations
    * are disabled, the signal is emitted as well.
@@ -1172,8 +1169,7 @@ hdy_carousel_box_class_init (HdyCarouselBoxClass *klass)
 
   /**
    * HdyCarouselBox::position-shifted:
-   * @self: The #HdyCarouselBox instance
-   * @delta: The amount to shift the position by
+   * @delta: the amount to shift the position by
    *
    * This signal is emitted when position has been programmatically shifted.
    *
@@ -1204,9 +1200,9 @@ hdy_carousel_box_init (HdyCarouselBox *self)
 /**
  * hdy_carousel_box_new:
  *
- * Create a new #HdyCarouselBox widget.
+ * Creates a new `HdyCarouselBox`.
  *
- * Returns: The newly created #HdyCarouselBox widget
+ * Returns: the newly created `HdyCarouselBox`
  *
  * Since: 1.0
  */
@@ -1218,9 +1214,9 @@ hdy_carousel_box_new (void)
 
 /**
  * hdy_carousel_box_insert:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @widget: a widget to add
- * @position: the position to insert @widget in.
+ * @position: the position to insert @widget in
  *
  * Inserts @widget into @self at position @position.
  *
@@ -1268,9 +1264,9 @@ hdy_carousel_box_insert (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_reorder:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @widget: a widget to add
- * @position: the position to move @widget to.
+ * @position: the position to move @widget to
  *
  * Moves @widget into position @position.
  *
@@ -1326,11 +1322,11 @@ hdy_carousel_box_reorder (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_is_animating:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Get whether @self is animating position.
  *
- * Returns: %TRUE if an animation is running
+ * Returns: `TRUE` if an animation is running
  *
  * Since: 1.0
  */
@@ -1344,7 +1340,7 @@ hdy_carousel_box_is_animating (HdyCarouselBox *self)
 
 /**
  * hdy_carousel_box_stop_animation:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Stops a running animation. If there's no animation running, does nothing.
  *
@@ -1366,17 +1362,16 @@ hdy_carousel_box_stop_animation (HdyCarouselBox *self)
 
 /**
  * hdy_carousel_box_scroll_to:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @widget: a child of @self
- * @duration: animation duration in milliseconds
+ * @duration: animation duration, in milliseconds
  *
  * Scrolls to @widget position over the next @duration milliseconds using
  * easeOutCubic interpolator.
  *
  * If an animation was already running, it will be cancelled automatically.
  *
- * @duration can be 0, in that case the position will be
- * changed immediately.
+ * @duration can be 0, in that case the position will be changed immediately.
  *
  * Since: 1.0
  */
@@ -1429,11 +1424,11 @@ hdy_carousel_box_scroll_to (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_n_pages:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Gets the number of pages in @self.
  *
- * Returns: The number of pages in @self
+ * Returns: the number of pages in @self
  *
  * Since: 1.0
  */
@@ -1458,11 +1453,11 @@ hdy_carousel_box_get_n_pages (HdyCarouselBox *self)
 
 /**
  * hdy_carousel_box_get_distance:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Gets swiping distance between two adjacent children in pixels.
  *
- * Returns: The swiping distance in pixels
+ * Returns: the swiping distance in pixels
  *
  * Since: 1.0
  */
@@ -1475,12 +1470,12 @@ hdy_carousel_box_get_distance (HdyCarouselBox *self)
 }
 
 /**
- * hdy_carousel_box_get_position:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_get_position: (attributes org.gtk.Method.get_property=position)
+ * @self: a carousel box
  *
  * Gets current scroll position in @self. It's unitless, 1 matches 1 page.
  *
- * Returns: The scroll position
+ * Returns: the scroll position
  *
  * Since: 1.0
  */
@@ -1493,8 +1488,8 @@ hdy_carousel_box_get_position (HdyCarouselBox *self)
 }
 
 /**
- * hdy_carousel_box_set_position:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_set_position: (attributes org.gtk.Method.set_property=position)
+ * @self: a carousel box
  * @position: the new position value
  *
  * Sets current scroll position in @self, unitless, 1 matches 1 page.
@@ -1520,12 +1515,12 @@ hdy_carousel_box_set_position (HdyCarouselBox *self,
 }
 
 /**
- * hdy_carousel_box_get_spacing:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_get_spacing: (attributes org.gtk.Method.get_property=spacing)
+ * @self: a carousel box
  *
  * Gets spacing between pages in pixels.
  *
- * Returns: Spacing between pages
+ * Returns: spacing between pages
  *
  * Since: 1.0
  */
@@ -1538,8 +1533,8 @@ hdy_carousel_box_get_spacing (HdyCarouselBox *self)
 }
 
 /**
- * hdy_carousel_box_set_spacing:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_set_spacing: (attributes org.gtk.Method.set_property=spacing)
+ * @self: a carousel box
  * @spacing: the new spacing value
  *
  * Sets spacing between pages in pixels.
@@ -1561,13 +1556,13 @@ hdy_carousel_box_set_spacing (HdyCarouselBox *self,
 }
 
 /**
- * hdy_carousel_box_get_reveal_duration:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_get_reveal_duration: (attributes org.gtk.Method.get_property=reveal-duration)
+ * @self: a carousel box
  *
  * Gets duration of the animation used when adding or removing pages in
  * milliseconds.
  *
- * Returns: Page reveal duration
+ * Returns: page reveal duration
  *
  * Since: 1.0
  */
@@ -1580,8 +1575,8 @@ hdy_carousel_box_get_reveal_duration (HdyCarouselBox *self)
 }
 
 /**
- * hdy_carousel_box_set_reveal_duration:
- * @self: a #HdyCarouselBox
+ * hdy_carousel_box_set_reveal_duration: (attributes org.gtk.Method.set_property=reveal-duration)
+ * @self: a carousel box
  * @reveal_duration: the new reveal duration value
  *
  * Sets duration of the animation used when adding or removing pages in
@@ -1605,12 +1600,12 @@ hdy_carousel_box_set_reveal_duration (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_nth_child:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @n: the child index
  *
  * Retrieves @n-th child widget of @self.
  *
- * Returns: The @n-th child widget
+ * Returns: the @n-th child widget
  *
  * Since: 1.0
  */
@@ -1630,7 +1625,7 @@ hdy_carousel_box_get_nth_child (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_snap_points:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @n_snap_points: (out)
  *
  * Gets the snap points of @self, representing the points between each page,
@@ -1669,10 +1664,11 @@ hdy_carousel_box_get_snap_points (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_range:
- * @self: a #HdyCarouselBox
- * @lower: (out) (optional): location to store the lowest possible position, or %NULL
- * @upper: (out) (optional): location to store the maximum possible position, or %NULL
- *
+ * @self: a carousel box
+ * @lower: (out) (optional): location to store the lowest possible position, or
+ *   `NULL`
+ * @upper: (out) (optional): location to store the maximum possible position, or
+ *   `NULL`
  * Gets the range of possible positions.
  *
  * Since: 1.0
@@ -1699,11 +1695,11 @@ hdy_carousel_box_get_range (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_closest_snap_point:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Gets the snap point closest to the current position.
  *
- * Returns: the closest snap point.
+ * Returns: the closest snap point
  *
  * Since: 1.0
  */
@@ -1722,14 +1718,14 @@ hdy_carousel_box_get_closest_snap_point (HdyCarouselBox *self)
 
 /**
  * hdy_carousel_box_get_page_at_position:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  * @position: a scroll position
  *
- * Gets the page closest to @position. For example, if @position matches
- * the current position, the returned widget will match the currently
- * displayed page.
+ * Gets the page closest to @position. For example, if @position matches the
+ * current position, the returned widget will match the currently displayed
+ * page.
  *
- * Returns: (nullable): the closest page.
+ * Returns: (nullable): the closest page
  *
  * Since: 1.0
  */
@@ -1759,11 +1755,11 @@ hdy_carousel_box_get_page_at_position (HdyCarouselBox *self,
 
 /**
  * hdy_carousel_box_get_current_page_index:
- * @self: a #HdyCarouselBox
+ * @self: a carousel box
  *
  * Gets the index of the currently displayed page.
  *
- * Returns: the index of the current page.
+ * Returns: the index of the current page
  *
  * Since: 1.0
  */
diff --git a/src/hdy-carousel-indicator-dots.c b/src/hdy-carousel-indicator-dots.c
index 3d1c3775..b83714d2 100644
--- a/src/hdy-carousel-indicator-dots.c
+++ b/src/hdy-carousel-indicator-dots.c
@@ -22,19 +22,21 @@
 #define DOTS_MARGIN 6
 
 /**
- * SECTION:hdy-carousel-indicator-dots
- * @short_description: A dots indicator for #HdyCarousel
- * @title: HdyCarouselIndicatorDots
- * @See_also: #HdyCarousel, #HdyCarouselIndicatorLines
+ * HdyCarouselIndicatorDots:
  *
- * The #HdyCarouselIndicatorDots widget can be used to show a set of dots for each
- * page of a given #HdyCarousel. The dot representing the carousel's active page
- * is larger and more opaque than the others, the transition to the active and
+ * 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.
  *
- * # CSS nodes
+ * See also [class@CarouselIndicatorLines].
+ *
+ * ## CSS nodes
  *
- * #HdyCarouselIndicatorDots has a single CSS node with name carouselindicatordots.
+ * `HdyCarouselIndicatorDots` has a single CSS node with name
+ * `carouselindicatordots`.
  *
  * Since: 1.0
  */
@@ -381,9 +383,9 @@ hdy_carousel_indicator_dots_class_init (HdyCarouselIndicatorDotsClass *klass)
   widget_class->draw = hdy_carousel_indicator_dots_draw;
 
   /**
-   * HdyCarouselIndicatorDots:carousel:
+   * HdyCarouselIndicatorDots:carousel: (attributes 
org.gtk.Property.get=hdy_carousel_indicator_dots_get_carousel 
org.gtk.Property.set=hdy_carousel_indicator_dots_set_carousel)
    *
-   * The #HdyCarousel the indicator uses.
+   * The [class@Carousel] the indicator uses.
    *
    * Since: 1.0
    */
@@ -411,9 +413,9 @@ hdy_carousel_indicator_dots_init (HdyCarouselIndicatorDots *self)
 /**
  * hdy_carousel_indicator_dots_new:
  *
- * Create a new #HdyCarouselIndicatorDots widget.
+ * Creates a new `HdyCarouselIndicatorDots`.
  *
- * Returns: (transfer full): The newly created #HdyCarouselIndicatorDots widget
+ * Returns: The newly created `HdyCarouselIndicatorDots`
  *
  * Since: 1.0
  */
@@ -424,14 +426,12 @@ hdy_carousel_indicator_dots_new (void)
 }
 
 /**
- * hdy_carousel_indicator_dots_get_carousel:
- * @self: a #HdyCarouselIndicatorDots
- *
- * Get the #HdyCarousel the indicator uses.
+ * hdy_carousel_indicator_dots_get_carousel: (attributes org.gtk.Method.get_property=carousel)
+ * @self: an indicator
  *
- * See: hdy_carousel_indicator_dots_set_carousel()
+ * Get the [class@Carousel] the indicator uses.
  *
- * Returns: (nullable) (transfer none): the #HdyCarousel, or %NULL if none has been set
+ * Returns: (nullable) (transfer none): the [class@Carousel]
  *
  * Since: 1.0
  */
@@ -445,11 +445,11 @@ hdy_carousel_indicator_dots_get_carousel (HdyCarouselIndicatorDots *self)
 }
 
 /**
- * hdy_carousel_indicator_dots_set_carousel:
- * @self: a #HdyCarouselIndicatorDots
- * @carousel: (nullable): a #HdyCarousel
+ * hdy_carousel_indicator_dots_set_carousel: (attributes org.gtk.Method.set_property=carousel)
+ * @self: an indicator
+ * @carousel: (nullable): a carousel
  *
- * Sets the #HdyCarousel to use.
+ * Sets the [class@Carousel] to use.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-carousel-indicator-lines.c b/src/hdy-carousel-indicator-lines.c
index 9d2b43ad..aebf76af 100644
--- a/src/hdy-carousel-indicator-lines.c
+++ b/src/hdy-carousel-indicator-lines.c
@@ -22,19 +22,20 @@
 #define LINE_MARGIN 2
 
 /**
- * SECTION:hdy-carousel-indicator-lines
- * @short_description: A lines indicator for #HdyCarousel
- * @title: HdyCarouselIndicatorLines
- * @See_also: #HdyCarousel, #HdyCarouselIndicatorDots
+ * HdyCarouselIndicatorLines:
  *
- * The #HdyCarouselIndicatorLines widget can be used to show a set of thin and long
- * rectangles for each page of a given #HdyCarousel. The carousel's active page
- * is shown with another rectangle that moves between them to match the
- * carousel's position.
+ * A lines indicator for [class@Carousel].
  *
- * # CSS nodes
+ * 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.
  *
- * #HdyCarouselIndicatorLines has a single CSS node with name carouselindicatorlines.
+ * See also [class@CarouselIndicatorDots].
+ *
+ * ## CSS nodes
+ *
+ * `HdyCarouselIndicatorLines` has a single CSS node with name
+ * `carouselindicatorlines`.
  *
  * Since: 1.0
  */
@@ -380,9 +381,9 @@ hdy_carousel_indicator_lines_class_init (HdyCarouselIndicatorLinesClass *klass)
   widget_class->draw = hdy_carousel_indicator_lines_draw;
 
   /**
-   * HdyCarouselIndicatorLines:carousel:
+   * HdyCarouselIndicatorLines:carousel: (attributes 
org.gtk.Property.get=hdy_carousel_indicator_lines_get_carousel 
org.gtk.Property.set=hdy_carousel_indicator_lines_set_carousel)
    *
-   * The #HdyCarousel the indicator uses.
+   * The displayed carousel.
    *
    * Since: 1.0
    */
@@ -410,9 +411,9 @@ hdy_carousel_indicator_lines_init (HdyCarouselIndicatorLines *self)
 /**
  * hdy_carousel_indicator_lines_new:
  *
- * Create a new #HdyCarouselIndicatorLines widget.
+ * Creates a new `HdyCarouselIndicatorLines`.
  *
- * Returns: (transfer full): The newly created #HdyCarouselIndicatorLines widget
+ * Returns: the newly created `HdyCarouselIndicatorLines`
  *
  * Since: 1.0
  */
@@ -423,14 +424,12 @@ hdy_carousel_indicator_lines_new (void)
 }
 
 /**
- * hdy_carousel_indicator_lines_get_carousel:
- * @self: a #HdyCarouselIndicatorLines
- *
- * Get the #HdyCarousel the indicator uses.
+ * hdy_carousel_indicator_lines_get_carousel: (attributes org.gtk.Method.get_property=carousel)
+ * @self: an indicator
  *
- * See: hdy_carousel_indicator_lines_set_carousel()
+ * Gets the displayed carousel.
  *
- * Returns: (nullable) (transfer none): the #HdyCarousel, or %NULL if none has been set
+ * Returns: (nullable) (transfer none): the displayed carousel
  *
  * Since: 1.0
  */
@@ -444,11 +443,11 @@ hdy_carousel_indicator_lines_get_carousel (HdyCarouselIndicatorLines *self)
 }
 
 /**
- * hdy_carousel_indicator_lines_set_carousel:
- * @self: a #HdyCarouselIndicatorLines
- * @carousel: (nullable): a #HdyCarousel
+ * hdy_carousel_indicator_lines_set_carousel: (attributes org.gtk.Method.set_property=carousel)
+ * @self: an indicator
+ * @carousel: (nullable): a carousel
  *
- * Sets the #HdyCarousel to use.
+ * Sets the [class@Carousel] to use.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-carousel.c b/src/hdy-carousel.c
index fab0715f..91fb8eb8 100644
--- a/src/hdy-carousel.c
+++ b/src/hdy-carousel.c
@@ -20,17 +20,19 @@
 #define DEFAULT_DURATION 250
 
 /**
- * SECTION:hdy-carousel
- * @short_description: A paginated scrolling widget.
- * @title: HdyCarousel
- * @See_also: #HdyCarouselIndicatorDots, #HdyCarouselIndicatorLines
+ * HdyCarousel:
  *
- * The #HdyCarousel widget can be used to display a set of pages with
+ * A paginated scrolling widget.
+ *
+ * The `HdyCarousel` widget can be used to display a set of pages with
  * swipe-based navigation between them.
  *
- * # CSS nodes
+ * [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.
+ * `HdyCarousel` has a single CSS node with name `carousel`.
  *
  * Since: 1.0
  */
@@ -588,9 +590,9 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
   container_class->forall = hdy_carousel_forall;
 
   /**
-   * HdyCarousel:n-pages:
+   * HdyCarousel:n-pages: (attributes org.gtk.Property.get=hdy_carousel_get_n_pages)
    *
-   * The number of pages in a #HdyCarousel
+   * The number of pages in a [class@Carousel].
    *
    * Since: 1.0
    */
@@ -604,10 +606,11 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                        G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:position:
+   * HdyCarousel:position: (attributes org.gtk.Property.get=hdy_carousel_get_position)
+   *
+   * Current scrolling position, unitless.
    *
-   * Current scrolling position, unitless. 1 matches 1 page. Use
-   * hdy_carousel_scroll_to() for changing it.
+   * 1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
    *
    * Since: 1.0
    */
@@ -621,10 +624,12 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                          G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:interactive:
+   * HdyCarousel:interactive: (attributes org.gtk.Property.get=hdy_carousel_get_interactive 
org.gtk.Property.set=hdy_carousel_set_interactive)
    *
-   * Whether the carousel can be navigated. This can be used to temporarily
-   * disable a #HdyCarousel to only allow navigating it in a certain state.
+   * Whether the carousel can be navigated.
+   *
+   * This can be used to temporarily disable a `HdyCarousel` to only allow
+   * navigating it in a certain state.
    *
    * Since: 1.0
    */
@@ -636,7 +641,7 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:spacing:
+   * HdyCarousel:spacing: (attributes org.gtk.Property.get=hdy_carousel_get_spacing 
org.gtk.Property.set=hdy_carousel_set_spacing)
    *
    * Spacing between pages in pixels.
    *
@@ -652,9 +657,9 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:animation-duration:
+   * HdyCarousel:animation-duration: (attributes org.gtk.Property.get=hdy_carousel_get_animation_duration 
org.gtk.Property.set=hdy_carousel_set_animation_duration)
    *
-   * Animation duration in milliseconds, used by hdy_carousel_scroll_to().
+   * Animation duration used by [method@Carousel.scroll_to], in milliseconds.
    *
    * Since: 1.0
    */
@@ -666,10 +671,11 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:allow-mouse-drag:
+   * HdyCarousel:allow-mouse-drag: (attributes org.gtk.Property.get=hdy_carousel_get_allow_mouse_drag 
org.gtk.Property.set=hdy_carousel_set_allow_mouse_drag)
+   *
+   * Sets whether the [class@Carousel] can be dragged with mouse pointer.
    *
-   * Sets whether the #HdyCarousel can be dragged with mouse pointer. If the
-   * value is %FALSE, dragging is only available on touch.
+   * If the value is `FALSE`, dragging is only available on touch.
    *
    * Since: 1.0
    */
@@ -681,10 +687,11 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:allow-scroll-wheel:
+   * HdyCarousel:allow-scroll-wheel: (attributes org.gtk.Property.get=hdy_carousel_get_allow_scroll_wheel 
org.gtk.Property.set=hdy_carousel_set_allow_scroll_wheel)
+   *
+   * Whether the widget will respond to scroll wheel events.
    *
-   * Whether the widget will respond to scroll wheel events. If the value is
-   * %FALSE, wheel events will be ignored.
+   * If the value is `FALSE`, wheel events will be ignored.
    *
    * Since: 1.4
    */
@@ -696,10 +703,11 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:allow-long-swipes:
+   * HdyCarousel:allow-long-swipes: (attributes org.gtk.Property.get=hdy_carousel_get_allow_long_swipes 
org.gtk.Property.set=hdy_carousel_set_allow_long_swipes)
    *
-   * 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.
+   * 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.
    *
    * Since: 1.2
    */
@@ -711,9 +719,9 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyCarousel:reveal-duration:
+   * HdyCarousel:reveal-duration: (attributes org.gtk.Property.get=hdy_carousel_get_reveal_duration 
org.gtk.Property.set=hdy_carousel_set_reveal_duration)
    *
-   * Page reveal duration in milliseconds.
+   * Page reveal duration, in milliseconds.
    *
    * Since: 1.0
    */
@@ -734,12 +742,13 @@ hdy_carousel_class_init (HdyCarouselClass *klass)
 
   /**
    * HdyCarousel::page-changed:
-   * @self: The #HdyCarousel instance
-   * @index: Current page
+   * @self: a carousel
+   * @index: the current page
+   *
+   * This signal is emitted after a page has been changed.
    *
-   * This signal is emitted after a page has been changed. This can be used to
-   * implement "infinite scrolling" by connecting to this signal and amending
-   * the pages.
+   * It can be used to implement "infinite scrolling" by amending the pages
+   * after every scroll.
    *
    * Since: 1.0
    */
@@ -791,9 +800,9 @@ hdy_carousel_init (HdyCarousel *self)
 /**
  * hdy_carousel_new:
  *
- * Create a new #HdyCarousel widget.
+ * Creates a new `HdyCarousel`.
  *
- * Returns: The newly created #HdyCarousel widget
+ * Returns: the newly created `HdyCarousel`
  *
  * Since: 1.0
  */
@@ -805,10 +814,10 @@ hdy_carousel_new (void)
 
 /**
  * hdy_carousel_prepend:
- * @self: a #HdyCarousel
+ * @self: a carousel
  * @child: a widget to add
  *
- * Prepends @child to @self
+ * Prepends @child to @self.
  *
  * Since: 1.0
  */
@@ -823,14 +832,14 @@ hdy_carousel_prepend (HdyCarousel *self,
 
 /**
  * hdy_carousel_insert:
- * @self: a #HdyCarousel
+ * @self: a carousel
  * @child: a widget to add
- * @position: the position to insert @child in.
+ * @position: the position to insert @child in
  *
  * 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.
+ * If position is -1, or larger than the number of pages, @child will be
+ * appended to the end.
  *
  * Since: 1.0
  */
@@ -845,9 +854,9 @@ hdy_carousel_insert (HdyCarousel *self,
 }
 /**
  * hdy_carousel_reorder:
- * @self: a #HdyCarousel
+ * @self: a carousel
  * @child: a widget to add
- * @position: the position to move @child to.
+ * @position: the position to move @child to
  *
  * Moves @child into position @position.
  *
@@ -869,12 +878,13 @@ hdy_carousel_reorder (HdyCarousel *self,
 
 /**
  * hdy_carousel_scroll_to:
- * @self: a #HdyCarousel
+ * @self: a carousel
  * @widget: a child of @self
  *
  * Scrolls to @widget position with an animation.
- * #HdyCarousel:animation-duration property can be used for controlling the
- * duration.
+ *
+ * [property@Carousel:animation-duration] property can be used for controlling
+ * the duration.
  *
  * Since: 1.0
  */
@@ -889,9 +899,9 @@ hdy_carousel_scroll_to (HdyCarousel *self,
 
 /**
  * hdy_carousel_scroll_to_full:
- * @self: a #HdyCarousel
+ * @self: a carousel
  * @widget: a child of @self
- * @duration: animation duration in milliseconds
+ * @duration: animation duration, in milliseconds
  *
  * Scrolls to @widget position with an animation.
  *
@@ -917,12 +927,12 @@ hdy_carousel_scroll_to_full (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_n_pages:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_n_pages: (attributes org.gtk.Method.get_property=n-pages)
+ * @self: a carousel
  *
  * Gets the number of pages in @self.
  *
- * Returns: The number of pages in @self
+ * Returns: the number of pages in @self
  *
  * Since: 1.0
  */
@@ -935,12 +945,12 @@ hdy_carousel_get_n_pages (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_get_position:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_position: (attributes org.gtk.Method.get_property=position)
+ * @self: a carousel
  *
  * Gets current scroll position in @self. It's unitless, 1 matches 1 page.
  *
- * Returns: The scroll position
+ * Returns: the scroll position
  *
  * Since: 1.0
  */
@@ -953,12 +963,12 @@ hdy_carousel_get_position (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_get_interactive
- * @self: a #HdyCarousel
+ * hdy_carousel_get_interactive: (attributes org.gtk.Method.get_property=interactive)
+ * @self: a carousel
  *
  * Gets whether @self can be navigated.
  *
- * Returns: %TRUE if @self can be swiped
+ * Returns: `TRUE` if @self can be swiped
  *
  * Since: 1.0
  */
@@ -971,12 +981,14 @@ hdy_carousel_get_interactive (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_interactive
- * @self: a #HdyCarousel
- * @interactive: whether @self can be swiped.
+ * hdy_carousel_set_interactive: (attributes org.gtk.Method.set_property=interactive)
+ * @self: a carousel
+ * @interactive: whether @self can be swiped
  *
- * Sets whether @self can be navigated. This can be used to temporarily disable
- * a #HdyCarousel to only allow swiping in a certain state.
+ * Sets whether @self can be navigated.
+ *
+ * This can be used to temporarily disable a [class@Carousel] to only allow
+ * swiping in a certain state.
  *
  * Since: 1.0
  */
@@ -997,12 +1009,12 @@ hdy_carousel_set_interactive (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_spacing:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_spacing: (attributes org.gtk.Method.get_property=spacing)
+ * @self: a carousel
  *
  * Gets spacing between pages in pixels.
  *
- * Returns: Spacing between pages
+ * Returns: spacing between pages
  *
  * Since: 1.0
  */
@@ -1015,8 +1027,8 @@ hdy_carousel_get_spacing (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_spacing:
- * @self: a #HdyCarousel
+ * hdy_carousel_set_spacing: (attributes org.gtk.Method.set_property=spacing)
+ * @self: a carousel
  * @spacing: the new spacing value
  *
  * Sets spacing between pages in pixels.
@@ -1033,12 +1045,12 @@ hdy_carousel_set_spacing (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_animation_duration:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_animation_duration: (attributes org.gtk.Method.get_property=animation-duration)
+ * @self: a carousel
  *
- * Gets animation duration used by hdy_carousel_scroll_to().
+ * Gets animation duration used by [method@Carousel.scroll_to].
  *
- * Returns: Animation duration in milliseconds
+ * Returns: animation duration, in milliseconds
  *
  * Since: 1.0
  */
@@ -1051,11 +1063,11 @@ hdy_carousel_get_animation_duration (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_animation_duration:
- * @self: a #HdyCarousel
- * @duration: animation duration in milliseconds
+ * hdy_carousel_set_animation_duration: (attributes org.gtk.Method.set_property=animation-duration)
+ * @self: a carousel
+ * @duration: animation duration, in milliseconds
  *
- * Sets animation duration used by hdy_carousel_scroll_to().
+ * Sets animation duration used by [method@Carousel.scroll_to].
  *
  * Since: 1.0
  */
@@ -1074,12 +1086,12 @@ hdy_carousel_set_animation_duration (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_allow_mouse_drag:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_allow_mouse_drag: (attributes org.gtk.Method.get_property=allow-mouse-drag)
+ * @self: a carousel
  *
- * Sets whether @self can be dragged with mouse pointer
+ * Sets whether @self can be dragged with mouse pointer.
  *
- * Returns: %TRUE if @self can be dragged with mouse
+ * Returns: `TRUE` if @self can be dragged with mouse
  *
  * Since: 1.0
  */
@@ -1092,12 +1104,13 @@ hdy_carousel_get_allow_mouse_drag (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_allow_mouse_drag:
- * @self: a #HdyCarousel
+ * hdy_carousel_set_allow_mouse_drag: (attributes org.gtk.Method.set_property=allow-mouse-drag)
+ * @self: a carousel
  * @allow_mouse_drag: whether @self can be dragged with mouse pointer
  *
- * Sets whether @self can be dragged with mouse pointer. If @allow_mouse_drag
- * is %FALSE, dragging is only available on touch.
+ * Sets whether @self can be dragged with mouse pointer.
+ *
+ * If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
  *
  * Since: 1.0
  */
@@ -1118,12 +1131,12 @@ hdy_carousel_set_allow_mouse_drag (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_allow_scroll_wheel:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_allow_scroll_wheel: (attributes org.gtk.Method.get_property=allow-scroll-wheel)
+ * @self: a carousel
  *
  * Gets whether @self will respond to scroll wheel events.
  *
- * Returns: %TRUE if @self will respond to scroll wheel events
+ * Returns: `TRUE` if @self will respond to scroll wheel events
  *
  * Since: 1.4
  */
@@ -1136,12 +1149,11 @@ hdy_carousel_get_allow_scroll_wheel (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_allow_scroll_wheel:
- * @self: a #HdyCarousel
- * @allow_scroll_wheel: whether @self will respond to scroll wheel events.
+ * hdy_carousel_set_allow_scroll_wheel: (attributes org.gtk.Method.set_property=allow-scroll-wheel)
+ * @self: a carousel
+ * @allow_scroll_wheel: whether @self will respond to scroll wheel events
  *
- * Sets whether @self will respond to scroll wheel events. If the value is
- * %FALSE, wheel events will be ignored.
+ * Sets whether @self will respond to scroll wheel events.
  *
  * Since: 1.4
  */
@@ -1162,13 +1174,12 @@ hdy_carousel_set_allow_scroll_wheel (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_allow_long_swipes:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_allow_long_swipes: (attributes org.gtk.Method.get_property=allow-long-swipes)
+ * @self: a carousel
  *
- * 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.
+ * Gets whether to allow swiping for more than one page at a time.
  *
- * Returns: %TRUE if long swipes are allowed, %FALSE otherwise
+ * Returns: `TRUE` if long swipes are allowed
  *
  * Since: 1.2
  */
@@ -1181,12 +1192,11 @@ hdy_carousel_get_allow_long_swipes (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_allow_long_swipes:
- * @self: a #HdyCarousel
+ * hdy_carousel_set_allow_long_swipes: (attributes org.gtk.Method.set_property=allow-long-swipes)
+ * @self: a carousel
  * @allow_long_swipes: whether to allow long swipes
  *
- * Sets 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 to allow swiping for more than one page at a time.
  *
  * Since: 1.2
  */
@@ -1207,13 +1217,13 @@ hdy_carousel_set_allow_long_swipes (HdyCarousel *self,
 }
 
 /**
- * hdy_carousel_get_reveal_duration:
- * @self: a #HdyCarousel
+ * hdy_carousel_get_reveal_duration: (attributes org.gtk.Method.get_property=reveal-duration)
+ * @self: a carousel
  *
- * Gets duration of the animation used when adding or removing pages in
+ * Gets duration of the animation used when adding or removing pages, in
  * milliseconds.
  *
- * Returns: Page reveal duration
+ * Returns: the duration
  *
  * Since: 1.0
  */
@@ -1226,11 +1236,11 @@ hdy_carousel_get_reveal_duration (HdyCarousel *self)
 }
 
 /**
- * hdy_carousel_set_reveal_duration:
- * @self: a #HdyCarousel
+ * hdy_carousel_set_reveal_duration: (attributes org.gtk.Method.set_property=reveal-duration)
+ * @self: a carousel
  * @reveal_duration: the new reveal duration value
  *
- * Sets duration of the animation used when adding or removing pages in
+ * Sets duration of the animation used when adding or removing pages, in
  * milliseconds.
  *
  * Since: 1.0
diff --git a/src/hdy-clamp.c b/src/hdy-clamp.c
index f37d0c98..85255a06 100644
--- a/src/hdy-clamp.c
+++ b/src/hdy-clamp.c
@@ -14,11 +14,11 @@
 #include "hdy-css-private.h"
 
 /**
- * SECTION:hdy-clamp
- * @short_description: A container constraining its child to a given size.
- * @Title: HdyClamp
+ * HdyClamp:
  *
- * The #HdyClamp widget constraints the size of the widget it contains to a
+ * 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.
@@ -26,12 +26,13 @@
  * If the child requires more than the requested maximum size, it will be
  * allocated the minimum size it can fit in instead.
  *
- * # CSS nodes
+ * ## CSS nodes
+ *
+ * `HdyClamp` has a single CSS node with name `clamp`.
  *
- * #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.
+ * 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.
  *
  * Since: 1.0
  */
@@ -421,10 +422,12 @@ hdy_clamp_class_init (HdyClampClass *klass)
                                     "orientation");
 
   /**
-   * HdyClamp:maximum-size:
+   * HdyClamp:maximum-size: (attributes org.gtk.Property.get=hdy_clamp_get_maximum_size 
org.gtk.Property.set=hdy_clamp_set_maximum_size)
    *
-   * The maximum size to allocate to the child. It is the width if the clamp is
-   * horizontal, or the height if it is vertical.
+   * The maximum size to allocate the children.
+   *
+   * It is the width if the clamp is horizontal, or the height if it is
+   * vertical.
    *
    * Since: 1.0
    */
@@ -436,19 +439,21 @@ hdy_clamp_class_init (HdyClampClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyClamp:tightening-threshold:
+   * HdyClamp:tightening-threshold: (attributes org.gtk.Property.get=hdy_clamp_get_tightening_threshold 
org.gtk.Property.set=hdy_clamp_set_tightening_threshold)
+   *
+   * The size above which the child is clamped.
    *
-   * The size starting from which the clamp will tighten its grip on the child,
+   * 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 width, the child
-   * will be allocated all the available size.
+   * 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 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.
+   * 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 the child before it reaches its maximum
+   * Effectively, tightening the grip on a child before it reaches its maximum
    * size makes transitions to and from the maximum size smoother when resizing.
    *
    * Since: 1.0
@@ -475,9 +480,9 @@ hdy_clamp_init (HdyClamp *self)
 /**
  * hdy_clamp_new:
  *
- * Creates a new #HdyClamp.
+ * Creates a new `HdyClamp`.
  *
- * Returns: a new #HdyClamp
+ * Returns: the newly created `HdyClamp`
  *
  * Since: 1.0
  */
@@ -488,13 +493,12 @@ hdy_clamp_new (void)
 }
 
 /**
- * hdy_clamp_get_maximum_size:
- * @self: a #HdyClamp
+ * hdy_clamp_get_maximum_size: (attributes org.gtk.Method.get_property=maximum-size)
+ * @self: a clamp
  *
- * Gets the maximum size to allocate to the contained child. It is the width if
- * @self is horizontal, or the height if it is vertical.
+ * Gets the maximum size allocated to the children.
  *
- * Returns: the maximum size to allocate to the contained child.
+ * Returns: the maximum size to allocate to the children
  *
  * Since: 1.0
  */
@@ -507,12 +511,11 @@ hdy_clamp_get_maximum_size (HdyClamp *self)
 }
 
 /**
- * hdy_clamp_set_maximum_size:
- * @self: a #HdyClamp
+ * hdy_clamp_set_maximum_size: (attributes org.gtk.Method.set_property=maximum-size)
+ * @self: a clamp
  * @maximum_size: the maximum size
  *
- * Sets the maximum size to allocate to the contained child. It is the width if
- * @self is horizontal, or the height if it is vertical.
+ * Sets the maximum size allocated to the children.
  *
  * Since: 1.0
  */
@@ -533,14 +536,12 @@ hdy_clamp_set_maximum_size (HdyClamp *self,
 }
 
 /**
- * hdy_clamp_get_tightening_threshold:
- * @self: a #HdyClamp
+ * hdy_clamp_get_tightening_threshold: (attributes org.gtk.Method.get_property=tightening-threshold)
+ * @self: a clamp
  *
- * Gets the size starting from which the clamp will tighten its grip on the
- * child.
+ * Gets the size above which the children are clamped.
  *
- * Returns: the size starting from which the clamp will tighten its grip on the
- * child.
+ * Returns: the size above which the children are clamped
  *
  * Since: 1.0
  */
@@ -553,12 +554,11 @@ hdy_clamp_get_tightening_threshold (HdyClamp *self)
 }
 
 /**
- * hdy_clamp_set_tightening_threshold:
- * @self: a #HdyClamp
+ * hdy_clamp_set_tightening_threshold: (attributes org.gtk.Method.set_property=tightening-threshold)
+ * @self: a clamp
  * @tightening_threshold: the tightening threshold
  *
- * Sets the size starting from which the clamp will tighten its grip on the
- * child.
+ * Sets the size above which the children are clamped.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-combo-row.c b/src/hdy-combo-row.c
index 517ef4c7..e546f77d 100644
--- a/src/hdy-combo-row.c
+++ b/src/hdy-combo-row.c
@@ -10,32 +10,33 @@
 #include <glib/gi18n-lib.h>
 
 /**
- * SECTION:hdy-combo-row
- * @short_description: A #GtkListBox row used to choose from a list of items.
- * @Title: HdyComboRow
+ * HdyComboRow:
  *
- * The #HdyComboRow widget allows the user to choose from a list of valid
+ * 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 #HdyComboRow uses the model-view pattern; the list of valid choices
- * is specified in the form of a #GListModel, and the display of the choices can
- * be adapted to the data in the model via widget creation functions.
+ * 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 #GtkListBoxRow:activatable if a model is set.
+ * `HdyComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyComboRow has a main CSS node with name row.
+ * `HdyComboRow` has a main CSS node with name `row`.
  *
- * Its popover has the node name popover with the .combo style class, it
- * contains a #GtkScrolledWindow, which in turn contains a #GtkListBox, both are
- * accessible via their regular nodes.
+ * 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
+ * A checkmark of node and style class `image.checkmark` in the popover denotes
  * the current item.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 
 /*
@@ -408,11 +409,11 @@ hdy_combo_row_class_init (HdyComboRowClass *klass)
   row_class->activate = hdy_combo_row_activate;
 
   /**
-   * HdyComboRow:selected-index:
+   * HdyComboRow:selected-index: (attributes org.gtk.Property.get=hdy_combo_row_get_selected_index 
org.gtk.Property.set=hdy_combo_row_set_selected_index)
    *
-   * The index of the selected item in its #GListModel.
+   * The index of the selected item in its [iface@Gio.ListModel].
    *
-   * Since: 0.0.7
+   * Since: 1.0
    */
   props[PROP_SELECTED_INDEX] =
       g_param_spec_int ("selected-index",
@@ -422,16 +423,16 @@ hdy_combo_row_class_init (HdyComboRowClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyComboRow:use-subtitle:
+   * HdyComboRow:use-subtitle: (attributes org.gtk.Property.get=hdy_combo_row_get_use_subtitle 
org.gtk.Property.set=hdy_combo_row_set_use_subtitle)
    *
-   * %TRUE to set the current value as the subtitle.
+   * 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 hdy_combo_row_set_get_name_func().
+   * a name conversion closure with [method@ComboRow.set_get_name_func].
    *
-   * If %TRUE, you should not access HdyActionRow:subtitle.
+   * If `TRUE`, you should not access [property@ActionRow:subtitle].
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_USE_SUBTITLE] =
     g_param_spec_boolean ("use-subtitle",
@@ -470,11 +471,11 @@ hdy_combo_row_init (HdyComboRow *self)
 /**
  * hdy_combo_row_new:
  *
- * Creates a new #HdyComboRow.
+ * Creates a new `HdyComboRow`.
  *
- * Returns: a new #HdyComboRow
+ * Returns: the newly created `HdyComboRow`
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 GtkWidget *
 hdy_combo_row_new (void)
@@ -484,13 +485,13 @@ hdy_combo_row_new (void)
 
 /**
  * hdy_combo_row_get_model:
- * @self: a #HdyComboRow
+ * @self: a combo row
  *
- * Gets the model bound to @self, or %NULL if none is bound.
+ * Gets the model bound to @self.
  *
- * Returns: (transfer none) (nullable): the #GListModel bound to @self or %NULL
+ * Returns: (transfer none) (nullable): the [iface@Gio.ListModel] bound to @self
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 GListModel *
 hdy_combo_row_get_model (HdyComboRow *self)
@@ -506,14 +507,14 @@ hdy_combo_row_get_model (HdyComboRow *self)
 
 /**
  * hdy_combo_row_bind_model:
- * @self: a #HdyComboRow
- * @model: (nullable): the #GListModel to be bound to @self
+ * @self: a combo row
+ * @model: (nullable): the [iface@Gio.ListModel] to be bound to @self
  * @create_list_widget_func: (nullable) (scope call): a function that creates
- *   widgets for items to display in the list, or %NULL in case you also passed
- *   %NULL as @model
+ *   widgets for items to display in the list, or `NULL` in case you also passed
+ *   `NULL` as @model
  * @create_current_widget_func: (nullable) (scope call): a function that creates
- *   widgets for items to display as the selected item, or %NULL in case you
- *   also passed %NULL as @model
+ *   widgets for items to display as the selected item, or `NULL` in case you
+ *   also passed `NULL` as @model
  * @user_data: user data passed to @create_list_widget_func and
  *   @create_current_widget_func
  * @user_data_free_func: function for freeing @user_data
@@ -524,9 +525,9 @@ hdy_combo_row_get_model (HdyComboRow *self)
  *
  * 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.
+ * `NULL`, @self is left empty.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_combo_row_bind_model (HdyComboRow                *self,
@@ -578,10 +579,10 @@ hdy_combo_row_bind_model (HdyComboRow                *self,
 
 /**
  * hdy_combo_row_bind_name_model:
- * @self: a #HdyComboRow
- * @model: (nullable): the #GListModel to be bound to @self
- * @get_name_func: (nullable): a function that creates names for items, or %NULL
- *   in case you also passed %NULL as @model
+ * @self: a combo row
+ * @model: (nullable): the [iface@Gio.ListModel] to be bound to @self
+ * @get_name_func: (nullable): a function that creates names for items, or
+ *   `NULL` in case you also passed `NULL` as @model
  * @user_data: user data passed to @get_name_func
  * @user_data_free_func: function for freeing @user_data
  *
@@ -591,12 +592,12 @@ hdy_combo_row_bind_model (HdyComboRow                *self,
  *
  * 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.
+ * `NULL`, @self is left empty.
  *
- * This is more convenient to use than hdy_combo_row_bind_model() if you want to
- * represent items of the model with names.
+ * This is more convenient to use than [method@ComboRow.bind_model] if you want
+ * to represent items of the model with names.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_combo_row_bind_name_model (HdyComboRow            *self,
@@ -621,28 +622,29 @@ hdy_combo_row_bind_name_model (HdyComboRow            *self,
 
 /**
  * hdy_combo_row_set_for_enum:
- * @self: a #HdyComboRow
- * @enum_type: the enumeration #GType to be bound to @self
- * @get_name_func: (nullable): a function that creates names for items, or %NULL
- *   in case you also passed %NULL as @model
+ * @self: a combo row
+ * @enum_type: the enumeration [alias GLib Type] to be bound to @self
+ * @get_name_func: (nullable): a function that creates names for items, or
+ *   `NULL` in case you also passed `NULL` as @model
  * @user_data: user data passed to @get_name_func
  * @user_data_free_func: function for freeing @user_data
  *
- * Creates a model for @enum_type and binds it to @self. The items of the model
- * will be #HdyEnumValueObject objects.
+ * 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.
+ * `NULL`, @self is left empty.
  *
- * This is more convenient to use than hdy_combo_row_bind_name_model() if you
+ * This is more convenient to use than [method@ComboRow.bind_name_model] if you
  * want to represent values of an enumeration with names.
  *
- * See hdy_enum_value_row_name().
+ * See [func@enum_value_row_name].
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_combo_row_set_for_enum (HdyComboRow                     *self,
@@ -671,14 +673,14 @@ hdy_combo_row_set_for_enum (HdyComboRow                     *self,
 }
 
 /**
- * hdy_combo_row_get_selected_index:
- * @self: a #GtkListBoxRow
+ * hdy_combo_row_get_selected_index: (attributes org.gtk.Method.get_property=selected-index)
+ * @self: a combo row
  *
- * Gets the index of the selected item in its #GListModel.
+ * Gets the index of the selected item in its [iface@Gio.ListModel].
  *
  * Returns: the index of the selected item, or -1 if no item is selected
  *
- * Since: 0.0.7
+ * Since: 1.0
  */
 gint
 hdy_combo_row_get_selected_index (HdyComboRow *self)
@@ -693,13 +695,13 @@ hdy_combo_row_get_selected_index (HdyComboRow *self)
 }
 
 /**
- * hdy_combo_row_set_selected_index:
- * @self: a #HdyComboRow
+ * hdy_combo_row_set_selected_index: (attributes org.gtk.Method.set_property=selected-index)
+ * @self: a combo row
  * @selected_index: the index of the selected item
  *
- * Sets the index of the selected item in its #GListModel.
+ * Sets the index of the selected item in its [iface@Gio.ListModel].
  *
- * Since: 0.0.7
+ * Since: 1.0
  */
 void
 hdy_combo_row_set_selected_index (HdyComboRow *self,
@@ -725,14 +727,15 @@ hdy_combo_row_set_selected_index (HdyComboRow *self,
 }
 
 /**
- * hdy_combo_row_get_use_subtitle:
- * @self: a #GtkListBoxRow
+ * hdy_combo_row_get_use_subtitle: (attributes org.gtk.Method.get_property=use-subtitle)
+ * @self: a combo row
  *
  * Gets whether the current value of @self should be displayed as its subtitle.
  *
- * Returns: whether the current value of @self should be displayed as its subtitle
+ * Returns: whether the current value of @self should be displayed as its
+ *   subtitle
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_combo_row_get_use_subtitle (HdyComboRow *self)
@@ -747,15 +750,15 @@ hdy_combo_row_get_use_subtitle (HdyComboRow *self)
 }
 
 /**
- * hdy_combo_row_set_use_subtitle:
- * @self: a #HdyComboRow
- * @use_subtitle: %TRUE to set the current value as the subtitle
+ * hdy_combo_row_set_use_subtitle: (attributes org.gtk.Method.set_property=use-subtitle)
+ * @self: a combo row
+ * @use_subtitle: `TRUE` to set the current value as the subtitle
  *
  * Sets whether the current value of @self should be displayed as its subtitle.
  *
- * If %TRUE, you should not access HdyActionRow:subtitle.
+ * If `TRUE`, you should not access [property@ActionRow:subtitle].
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_combo_row_set_use_subtitle (HdyComboRow *self,
@@ -782,15 +785,17 @@ hdy_combo_row_set_use_subtitle (HdyComboRow *self,
 
 /**
  * hdy_combo_row_set_get_name_func:
- * @self: a #HdyComboRow
- * @get_name_func: (nullable): a function that creates names for items, or %NULL
- *   in case you also passed %NULL as @model
+ * @self: a combo row
+ * @get_name_func: (nullable): a function that creates names for items, or
+ *   `NULL` in case you also passed `NULL` as @model
  * @user_data: user data passed to @get_name_func
  * @user_data_free_func: function for freeing @user_data
  *
- * Sets a closure to convert items into names. See HdyComboRow:use-subtitle.
+ * Sets a closure to convert items into names.
  *
- * Since: 0.0.10
+ * See [property@ComboRow:use-subtitle].
+ *
+ * Since: 1.0
  */
 void
 hdy_combo_row_set_get_name_func (HdyComboRow            *self,
@@ -816,13 +821,15 @@ hdy_combo_row_set_get_name_func (HdyComboRow            *self,
  * @value: the value from the enum from which to get a name
  * @user_data: (closure): unused user data
  *
- * This is a default implementation of #HdyComboRowGetEnumValueNameFunc to be
- * used with hdy_combo_row_set_for_enum(). If the enumeration has a nickname, it
- * will return it, otherwise it will return its name.
+ * 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.
  *
- * Returns: (transfer full): a newly allocated displayable name that represents @value
+ * Returns: (transfer full): a displayable name that represents @value
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gchar *
 hdy_enum_value_row_name (HdyEnumValueObject *value,
diff --git a/src/hdy-combo-row.h b/src/hdy-combo-row.h
index 6a01b9ea..0da08286 100644
--- a/src/hdy-combo-row.h
+++ b/src/hdy-combo-row.h
@@ -28,10 +28,14 @@ G_DECLARE_DERIVABLE_TYPE (HdyComboRow, hdy_combo_row, HDY, COMBO_ROW, HdyActionR
  * @item: (type GObject): the item from the model from which to get a name
  * @user_data: (closure): user data
  *
- * Called for combo rows that are bound to a #GListModel with
- * hdy_combo_row_bind_name_model() for each item that gets added to the model.
+ * Callback for getting the name of a row.
  *
- * Returns: (transfer full): a newly allocated displayable name that represents @item
+ * 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.
+ *
+ * Returns: (transfer full): a displayable name that represents @item
+ *
+ * Since: 1.0
  */
 typedef gchar * (*HdyComboRowGetNameFunc) (gpointer item,
                                            gpointer user_data);
@@ -41,17 +45,23 @@ typedef gchar * (*HdyComboRowGetNameFunc) (gpointer item,
  * @value: the value from the enum from which to get a name
  * @user_data: (closure): user data
  *
+ * Callback for getting the name of a row from an enum.
+ *
  * Called for combo rows that are bound to an enumeration with
- * hdy_combo_row_set_for_enum() for each value from that enumeration.
+ * [method@ComboRow.set_for_enum] for each value from that enumeration.
+ *
+ * See also: [func@enum_value_row_name].
+ *
+ * Returns: (transfer full): a displayable name that represents @value
  *
- * Returns: (transfer full): a newly allocated displayable name that represents @value
+ * Since: 1.0
  */
 typedef gchar * (*HdyComboRowGetEnumValueNameFunc) (HdyEnumValueObject *value,
                                                     gpointer            user_data);
 
 /**
  * HdyComboRowClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyComboRowClass
 {
diff --git a/src/hdy-deck.c b/src/hdy-deck.c
index 6d1a334b..c896f5c8 100644
--- a/src/hdy-deck.c
+++ b/src/hdy-deck.c
@@ -13,13 +13,13 @@
 #include "hdy-swipeable.h"
 
 /**
- * SECTION:hdy-deck
- * @short_description: A swipeable widget showing one of the visible children at a time.
- * @Title: HdyDeck
+ * HdyDeck:
  *
- * The #HdyDeck widget displays one of the visible children, similar to a
- * #GtkStack. The children are strictly ordered and can be navigated using
- * swipe gestures.
+ * 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
@@ -30,24 +30,34 @@
  * 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 #HdyWindow or #HdyApplicationWindow as they will crop anything drawn
- * beyond the rounded corners.
+ * 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 `HdyDeck` children to
+ * determine whether they can be navigated to when folded. If `FALSE`, the child
+ * will be ignored by [method@Deck.get_adjacent_child], [method@Deck.navigate],
+ * and swipe gestures. This can be used used to prevent switching to widgets
+ * like separators.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyDeck has a single CSS node with name deck.
+ * `HdyDeck` has a single CSS node with name `deck`.
  *
  * Since: 1.0
  */
 
 /**
  * HdyDeckTransitionType:
- * @HDY_DECK_TRANSITION_TYPE_OVER: Cover the old page or uncover the new page, sliding from or towards the 
end according to orientation, text direction and children order
- * @HDY_DECK_TRANSITION_TYPE_UNDER: Uncover the new page or cover the old page, sliding from or towards the 
start according to orientation, text direction and children order
- * @HDY_DECK_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down according to the orientation, text 
direction and the children order
+ * @HDY_DECK_TRANSITION_TYPE_OVER: Cover the old page or uncover the new page,
+ *   sliding from or towards the end according to orientation, text direction
+ *   and children order
+ * @HDY_DECK_TRANSITION_TYPE_UNDER: Uncover the new page or cover the old page,
+ *   sliding from or towards the start according to orientation, text direction
+ *   and children order
+ * @HDY_DECK_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down according
+ *   to the orientation, text direction and the children order
  *
- * This enumeration value describes the possible transitions between children
- * in a #HdyDeck widget.
+ * Describes the possible transitions in a [class@Deck] widget.
  *
  * New values may be added to this enumeration over time.
  *
@@ -97,15 +107,14 @@ G_DEFINE_TYPE_WITH_CODE (HdyDeck, hdy_deck, GTK_TYPE_CONTAINER,
 
 /**
  * hdy_deck_set_homogeneous:
- * @self: a #HdyDeck
+ * @self: a deck
  * @orientation: the orientation
- * @homogeneous: %TRUE to make @self homogeneous
+ * @homogeneous: `TRUE` to make @self homogeneous
+ *
+ * Sets whether @self is homogeneous for a given orientation.
  *
- * Sets the #HdyDeck to be homogeneous or not for the given orientation.
- * If it is homogeneous, the #HdyDeck will request the same
- * width or height for all its children depending on the orientation.
- * If it isn't, the deck may change width or height when a different child
- * becomes visible.
+ * If set to `FALSE`, different children can have different size along the
+ * opposite orientation.
  *
  * Since: 1.0
  */
@@ -121,13 +130,12 @@ hdy_deck_set_homogeneous (HdyDeck        *self,
 
 /**
  * hdy_deck_get_homogeneous:
- * @self: a #HdyDeck
+ * @self: a deck
  * @orientation: the orientation
  *
  * Gets whether @self is homogeneous for the given orientation.
- * See hdy_deck_set_homogeneous().
  *
- * Returns: whether @self is homogeneous for the given orientation.
+ * Returns: whether @self is homogeneous for the given orientation
  *
  * Since: 1.0
  */
@@ -141,11 +149,10 @@ hdy_deck_get_homogeneous (HdyDeck        *self,
 }
 
 /**
- * hdy_deck_get_transition_type:
- * @self: a #HdyDeck
+ * hdy_deck_get_transition_type: (attributes org.gtk.Method.get_property=transition-type)
+ * @self: a deck
  *
- * Gets the type of animation that will be used
- * for transitions between children in @self.
+ * Gets the type of animation used for transitions between children.
  *
  * Returns: the current transition type of @self
  *
@@ -176,12 +183,11 @@ hdy_deck_get_transition_type (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_transition_type:
- * @self: a #HdyDeck
+ * hdy_deck_set_transition_type: (attributes org.gtk.Method.set_property=transition-type)
+ * @self: a deck
  * @transition: the new transition type
  *
- * Sets the type of animation that will be used for transitions between children
- * in @self.
+ * 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
@@ -219,13 +225,12 @@ hdy_deck_set_transition_type (HdyDeck               *self,
 }
 
 /**
- * hdy_deck_get_transition_duration:
- * @self: a #HdyDeck
+ * hdy_deck_get_transition_duration: (attributes org.gtk.Method.get_property=transition-duration)
+ * @self: a deck
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between children in @self will take.
+ * Gets the mode transition animation duration for @self.
  *
- * Returns: the child transition duration
+ * Returns: the mode transition duration, in milliseconds.
  *
  * Since: 1.0
  */
@@ -238,12 +243,11 @@ hdy_deck_get_transition_duration (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_transition_duration:
- * @self: a #HdyDeck
+ * hdy_deck_set_transition_duration: (attributes org.gtk.Method.set_property=transition-duration)
+ * @self: a deck
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between children in @self
- * will take.
+ * Sets the mode transition animation duration for @self.
  *
  * Since: 1.0
  */
@@ -257,8 +261,8 @@ hdy_deck_set_transition_duration (HdyDeck *self,
 }
 
 /**
- * hdy_deck_get_visible_child:
- * @self: a #HdyDeck
+ * hdy_deck_get_visible_child: (attributes org.gtk.Method.get_property=visible-child)
+ * @self: a deck
  *
  * Gets the visible child widget.
  *
@@ -275,14 +279,11 @@ hdy_deck_get_visible_child (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_visible_child:
- * @self: a #HdyDeck
+ * hdy_deck_set_visible_child: (attributes org.gtk.Method.set_property=visible-child)
+ * @self: a deck
  * @visible_child: the new child
  *
- * Makes @visible_child visible using a transition determined by
- * HdyDeck:transition-type and HdyDeck:transition-duration. The transition can
- * be cancelled by the user, in which case visible child will change back to
- * the previously visible child.
+ * Sets the currently visible widget.
  *
  * Since: 1.0
  */
@@ -296,8 +297,8 @@ hdy_deck_set_visible_child (HdyDeck   *self,
 }
 
 /**
- * hdy_deck_get_visible_child_name:
- * @self: a #HdyDeck
+ * hdy_deck_get_visible_child_name: (attributes org.gtk.Method.get_property=visible-child-name)
+ * @self: a deck
  *
  * Gets the name of the currently visible child widget.
  *
@@ -314,13 +315,13 @@ hdy_deck_get_visible_child_name (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_visible_child_name:
- * @self: a #HdyDeck
+ * hdy_deck_set_visible_child_name: (attributes org.gtk.Method.set_property=visible-child-name)
+ * @self: a deck
  * @name: the name of a child
  *
  * Makes the child with the name @name visible.
  *
- * See hdy_deck_set_visible_child() for more details.
+ * See [method@Deck.set_visible_child] for more details.
  *
  * Since: 1.0
  */
@@ -334,13 +335,12 @@ hdy_deck_set_visible_child_name (HdyDeck     *self,
 }
 
 /**
- * hdy_deck_get_transition_running:
- * @self: a #HdyDeck
+ * hdy_deck_get_transition_running: (attributes org.gtk.Method.get_property=transition-running)
+ * @self: a deck
  *
- * Returns whether @self is currently in a transition from one page to
- * another.
+ * Gets whether a transition is currently running for @self.
  *
- * Returns: %TRUE if the transition is currently running, %FALSE otherwise.
+ * Returns: whether a transition is currently running
  *
  * Since: 1.0
  */
@@ -353,15 +353,15 @@ hdy_deck_get_transition_running (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_interpolate_size:
- * @self: a #HdyDeck
+ * hdy_deck_set_interpolate_size: (attributes org.gtk.Method.set_property=interpolate-size)
+ * @self: a deck
  * @interpolate_size: the new value
  *
- * Sets whether or not @self will interpolate its size when
- * changing the visible child. If the #HdyDeck: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.
+ * 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.
  *
  * Since: 1.0
  */
@@ -375,13 +375,12 @@ hdy_deck_set_interpolate_size (HdyDeck  *self,
 }
 
 /**
- * hdy_deck_get_interpolate_size:
- * @self: a #HdyDeck
+ * hdy_deck_get_interpolate_size: (attributes org.gtk.Method.get_property=interpolate-size)
+ * @self: a deck
  *
- * Returns whether the #HdyDeck is set up to interpolate between
- * the sizes of children on page switch.
+ * Gets whether @self will interpolate its size when changing the visible child.
  *
- * Returns: %TRUE if child sizes are interpolated
+ * Returns: whether child sizes are interpolated
  *
  * Since: 1.0
  */
@@ -394,12 +393,11 @@ hdy_deck_get_interpolate_size (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_can_swipe_back:
- * @self: a #HdyDeck
+ * hdy_deck_set_can_swipe_back: (attributes org.gtk.Method.set_property=can-swipe-back)
+ * @self: a deck
  * @can_swipe_back: the new value
  *
- * Sets whether or not @self allows switching to the previous child via a swipe
- * gesture.
+ * Sets whether swipe gestures for navigating backward are enabled.
  *
  * Since: 1.0
  */
@@ -413,12 +411,12 @@ hdy_deck_set_can_swipe_back (HdyDeck  *self,
 }
 
 /**
- * hdy_deck_get_can_swipe_back
- * @self: a #HdyDeck
+ * hdy_deck_get_can_swipe_back: (attributes org.gtk.Method.get_property=can-swipe-back)
+ * @self: a deck
  *
- * Returns whether the #HdyDeck allows swiping to the previous child.
+ * Gets whether swipe gestures for navigating backward are enabled.
  *
- * Returns: %TRUE if back swipe is enabled.
+ * Returns: Whether swipe gestures are enabled.
  *
  * Since: 1.0
  */
@@ -431,12 +429,11 @@ hdy_deck_get_can_swipe_back (HdyDeck *self)
 }
 
 /**
- * hdy_deck_set_can_swipe_forward:
- * @self: a #HdyDeck
+ * hdy_deck_set_can_swipe_forward: (attributes org.gtk.Method.set_property=can-swipe-forward)
+ * @self: a deck
  * @can_swipe_forward: the new value
  *
- * Sets whether or not @self allows switching to the next child via a swipe
- * gesture.
+ * Sets whether swipe gestures for navigating forward are enabled.
  *
  * Since: 1.0
  */
@@ -450,12 +447,12 @@ hdy_deck_set_can_swipe_forward (HdyDeck  *self,
 }
 
 /**
- * hdy_deck_get_can_swipe_forward
- * @self: a #HdyDeck
+ * hdy_deck_get_can_swipe_forward: (attributes org.gtk.Method.get_property=can-swipe-forward)
+ * @self: a deck
  *
- * Returns whether the #HdyDeck allows swiping to the next child.
+ * Gets whether swipe gestures for navigating forward enabled.
  *
- * Returns: %TRUE if forward swipe is enabled.
+ * Returns: Whether swipe gestures are enabled.
  *
  * Since: 1.0
  */
@@ -468,15 +465,18 @@ hdy_deck_get_can_swipe_forward (HdyDeck *self)
 }
 
 /**
- * hdy_deck_get_adjacent_child
- * @self: a #HdyDeck
+ * hdy_deck_get_adjacent_child:
+ * @self: a deck
  * @direction: the direction
  *
- * Gets the previous or next child, or %NULL if it doesn't exist. This will be
- * the same widget hdy_deck_navigate() will navigate to.
+ * 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.
  *
- * Returns: (nullable) (transfer none): the previous or next child, or
- *   %NULL if it doesn't exist.
+ * If there's no child to navigate to, `NULL` will be returned instead.
+ *
+ * Returns: (nullable) (transfer none): the previous or next child
  *
  * Since: 1.0
  */
@@ -490,14 +490,15 @@ hdy_deck_get_adjacent_child (HdyDeck                *self,
 }
 
 /**
- * hdy_deck_navigate
- * @self: a #HdyDeck
+ * hdy_deck_navigate:
+ * @self: a deck
  * @direction: the direction
  *
- * Switches to the previous or next child, similar to performing a swipe
- * gesture to go in @direction.
+ * Navigates to the previous or next child.
+ *
+ * The switch is similar to performing a swipe gesture to go in @direction.
  *
- * Returns: %TRUE if visible child was changed, %FALSE otherwise.
+ * Returns: whether the visible child was changed
  *
  * Since: 1.0
  */
@@ -512,11 +513,12 @@ hdy_deck_navigate (HdyDeck                *self,
 
 /**
  * hdy_deck_get_child_by_name:
- * @self: a #HdyDeck
+ * @self: a deck
  * @name: the name of the child to find
  *
- * Finds the child of @self with the name given as the argument. Returns %NULL
- * if there is no child with this name.
+ * Finds the child of @self with @name.
+ *
+ * Returns `NULL` if there is no child with this name.
  *
  * Returns: (transfer none) (nullable): the requested child of @self
  *
@@ -533,8 +535,8 @@ hdy_deck_get_child_by_name (HdyDeck     *self,
 
 /**
  * hdy_deck_prepend:
- * @self: a #HdyDeck
- * @child: the #GtkWidget to prepend
+ * @self: a deck
+ * @child: the widget to prepend
  *
  * Inserts @child at the first position in @self.
  *
@@ -553,12 +555,13 @@ hdy_deck_prepend (HdyDeck   *self,
 
 /**
  * hdy_deck_insert_child_after:
- * @self: a #HdyDeck
- * @child: the #GtkWidget to insert
+ * @self: a deck
+ * @child: the widget to insert
  * @sibling: (nullable): the sibling after which to insert @child
  *
  * Inserts @child in the position after @sibling in the list of children.
- * If @sibling is %NULL, insert @child at the first position.
+ *
+ * If @sibling is `NULL`, inserts @child at the first position.
  *
  * Since: 1.2
  */
@@ -579,12 +582,13 @@ hdy_deck_insert_child_after (HdyDeck   *self,
 
 /**
  * hdy_deck_reorder_child_after:
- * @self: a #HdyDeck
- * @child: the #GtkWidget to move, must be a child of @self
- * @sibling: (nullable): the sibling to move @child after, or %NULL
+ * @self: a deck
+ * @child: the widget to move, must be a child of @self
+ * @sibling: (nullable): the sibling to move @child after
  *
  * Moves @child to the position after @sibling in the list of children.
- * If @sibling is %NULL, move @child to the first position.
+ *
+ * If @sibling is `NULL`, move @child to the first position.
  *
  * Since: 1.2
  */
@@ -938,7 +942,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                                     "orientation");
 
   /**
-   * HdyDeck:hhomogeneous:
+   * HdyDeck:hhomogeneous: (attributes org.gtk.Property.get=hdy_deck_get_homogeneous 
org.gtk.Property.set=hdy_deck_set_homogeneous)
    *
    * Horizontally homogeneous sizing.
    *
@@ -952,7 +956,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:vhomogeneous:
+   * HdyDeck:vhomogeneous: (attributes org.gtk.Property.get=hdy_deck_get_homogeneous 
org.gtk.Property.set=hdy_deck_set_homogeneous)
    *
    * Vertically homogeneous sizing.
    *
@@ -966,10 +970,15 @@ hdy_deck_class_init (HdyDeckClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:visible-child:
+   * HdyDeck:visible-child: (attributes org.gtk.Property.get=hdy_deck_get_visible_child 
org.gtk.Property.set=hdy_deck_set_visible_child)
    *
    * 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.
+   *
    * Since: 1.0
    */
   props[PROP_VISIBLE_CHILD] =
@@ -980,7 +989,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:visible-child-name:
+   * HdyDeck:visible-child-name: (attributes org.gtk.Property.get=hdy_deck_get_visible_child_name 
org.gtk.Property.set=hdy_deck_set_visible_child_name)
    *
    * The name of the widget currently visible.
    *
@@ -994,14 +1003,13 @@ hdy_deck_class_init (HdyDeckClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:transition-type:
+   * HdyDeck:transition-type: (attributes org.gtk.Property.get=hdy_deck_get_transition_type 
org.gtk.Property.set=hdy_deck_set_transition_type)
    *
-   * The type of animation that will be used for transitions between
-   * children.
+   * 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.
+   * possible to change the animation based on the child that is about to become
+   * current.
    *
    * Since: 1.0
    */
@@ -1013,7 +1021,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:transition-duration:
+   * HdyDeck:transition-duration: (attributes org.gtk.Property.get=hdy_deck_get_transition_duration 
org.gtk.Property.set=hdy_deck_set_transition_duration)
    *
    * The transition animation duration, in milliseconds.
    *
@@ -1027,7 +1035,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:transition-running:
+   * HdyDeck:transition-running: (attributes org.gtk.Property.get=hdy_deck_get_transition_running)
    *
    * Whether or not the transition is currently running.
    *
@@ -1041,7 +1049,7 @@ hdy_deck_class_init (HdyDeckClass *klass)
                             G_PARAM_READABLE);
 
   /**
-   * HdyDeck:interpolate-size:
+   * HdyDeck:interpolate-size: (attributes org.gtk.Property.get=hdy_deck_get_interpolate_size 
org.gtk.Property.set=hdy_deck_set_interpolate_size)
    *
    * Whether or not the size should smoothly change when changing between
    * differently sized children.
@@ -1056,10 +1064,9 @@ hdy_deck_class_init (HdyDeckClass *klass)
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:can-swipe-back:
+   * HdyDeck:can-swipe-back: (attributes org.gtk.Property.get=hdy_deck_get_can_swipe_back 
org.gtk.Property.set=hdy_deck_set_can_swipe_back)
    *
-   * Whether or not the deck allows switching to the previous child via a swipe
-   * gesture.
+   * Whether swipe gestures allow switching to the previous child.
    *
    * Since: 1.0
    */
@@ -1071,10 +1078,9 @@ hdy_deck_class_init (HdyDeckClass *klass)
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyDeck:can-swipe-forward:
+   * HdyDeck:can-swipe-forward: (attributes org.gtk.Property.get=hdy_deck_get_can_swipe_forward 
org.gtk.Property.set=hdy_deck_set_can_swipe_forward)
    *
-   * Whether or not the deck allows switching to the next child via a swipe
-   * gesture.
+   * Whether swipe gestures allow switching to the next child.
    *
    * Since: 1.0
    */
@@ -1100,6 +1106,15 @@ hdy_deck_class_init (HdyDeckClass *klass)
   gtk_widget_class_set_css_name (widget_class, "deck");
 }
 
+/**
+ * hdy_deck_new:
+ *
+ * Creates a new `HdyDeck`.
+ *
+ * Returns: the newly created `HdyDeck`
+ *
+ * Since: 1.0
+ */
 GtkWidget *
 hdy_deck_new (void)
 {
diff --git a/src/hdy-deck.h b/src/hdy-deck.h
index e981c98f..4a7e5919 100644
--- a/src/hdy-deck.h
+++ b/src/hdy-deck.h
@@ -30,7 +30,7 @@ typedef enum {
 
 /**
  * HdyDeckClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyDeckClass
 {
diff --git a/src/hdy-enum-value-object.c b/src/hdy-enum-value-object.c
index 0147aa45..6cef878a 100644
--- a/src/hdy-enum-value-object.c
+++ b/src/hdy-enum-value-object.c
@@ -9,14 +9,14 @@
 #include "hdy-enum-value-object.h"
 
 /**
- * SECTION:hdy-enum-value-object
- * @short_description: An object representing a #GEnumValue.
- * @Title: HdyEnumValueObject
+ * HdyEnumValueObject:
  *
- * The #HdyEnumValueObject object represents a #GEnumValue, allowing it to be
- * used with #GListModel.
+ * An object representing an [struct@GObject.EnumValue].
  *
- * Since: 0.0.6
+ * The `HdyEnumValueObject` object represents a [struct@GObject.EnumValue],
+ * allowing it to be used with [iface@Gio.ListModel].
+ *
+ * Since: 1.0
  */
 
 struct _HdyEnumValueObject
@@ -28,6 +28,15 @@ struct _HdyEnumValueObject
 
 G_DEFINE_TYPE (HdyEnumValueObject, hdy_enum_value_object, G_TYPE_OBJECT)
 
+/**
+ * hdy_enum_value_object_new:
+ *
+ * Creates a new `HdyEnumValueObject`.
+ *
+ * Returns: the newly created `HdyEnumValueObject`
+ *
+ * Since: 1.0
+ */
 HdyEnumValueObject *
 hdy_enum_value_object_new (GEnumValue *enum_value)
 {
@@ -48,6 +57,16 @@ hdy_enum_value_object_init (HdyEnumValueObject *self)
 {
 }
 
+/**
+ * hdy_enum_value_object_get_value:
+ * @self: an enum value object
+ *
+ * Gets the value of @self.
+ *
+ * Returns: the value of @self
+ *
+ * Since: 1.0
+ */
 gint
 hdy_enum_value_object_get_value (HdyEnumValueObject *self)
 {
@@ -56,6 +75,16 @@ hdy_enum_value_object_get_value (HdyEnumValueObject *self)
   return self->enum_value.value;
 }
 
+/**
+ * hdy_enum_value_object_get_name:
+ * @self: an enum value object
+ *
+ * Gets the name of @self.
+ *
+ * Returns: the name of @self
+ *
+ * Since: 1.0
+ */
 const gchar *
 hdy_enum_value_object_get_name (HdyEnumValueObject *self)
 {
@@ -64,6 +93,16 @@ hdy_enum_value_object_get_name (HdyEnumValueObject *self)
   return self->enum_value.value_name;
 }
 
+/**
+ * hdy_enum_value_object_get_nick:
+ * @self: an enum value object
+ *
+ * Gets the nick of @self.
+ *
+ * Returns: the nick of @self
+ *
+ * Since: 1.0
+ */
 const gchar *
 hdy_enum_value_object_get_nick (HdyEnumValueObject *self)
 {
diff --git a/src/hdy-expander-row.c b/src/hdy-expander-row.c
index 9914edd9..92c8dd00 100644
--- a/src/hdy-expander-row.c
+++ b/src/hdy-expander-row.c
@@ -11,32 +11,37 @@
 #include "hdy-action-row.h"
 
 /**
- * SECTION:hdy-expander-row
- * @short_description: A #GtkListBox row used to reveal widgets.
- * @Title: HdyExpanderRow
+ * HdyExpanderRow:
  *
- * The #HdyExpanderRow 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.
+ * A [class@Gtk.ListBoxRow] used to reveal widgets.
  *
- * It also supports adding a child as an action widget by specifying “action” as
- * the “type” attribute of a &lt;child&gt; element. It also supports setting a
- * child as a prefix widget by specifying “prefix” as the “type” attribute of a
- * &lt;child&gt; element.
+ * 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.
  *
- * # CSS nodes
+ * ## HdyExpanderRow as GtkBuildable
  *
- * #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.
+ * 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 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.
+ * It also supports adding it as a prefix widget by specifying “prefix” as the
+ * “type” attribute of a <child> element.
  *
- * When expanded, #HdyExpanderRow will add the
- * .checked-expander-row-previous-sibling style class to its previous sibling,
+ * ## 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.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 
 typedef struct
@@ -274,7 +279,7 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
   container_class->forall = hdy_expander_row_forall;
 
   /**
-   * HdyExpanderRow:subtitle:
+   * HdyExpanderRow:subtitle: (attributes org.gtk.Property.get=hdy_expander_row_get_subtitle 
org.gtk.Property.set=hdy_expander_row_set_subtitle)
    *
    * The subtitle for this row.
    *
@@ -288,10 +293,10 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyExpanderRow:use-underline:
+   * HdyExpanderRow:use-underline: (attributes org.gtk.Property.get=hdy_expander_row_get_use_underline 
org.gtk.Property.set=hdy_expander_row_set_use_underline)
    *
-   * Whether an embedded underline in the text of the title and subtitle labels
-   * indicates a mnemonic.
+   * Whether an embedded underline in the title or subtitle labels indicates a
+   * mnemonic.
    *
    * Since: 1.0
    */
@@ -303,7 +308,7 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
                           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyExpanderRow:icon-name:
+   * HdyExpanderRow:icon-name: (attributes org.gtk.Property.get=hdy_expander_row_get_icon_name 
org.gtk.Property.set=hdy_expander_row_set_icon_name)
    *
    * The icon name for this row.
    *
@@ -317,9 +322,11 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyExpanderRow:expanded:
+   * HdyExpanderRow:expanded: (attributes org.gtk.Property.get=hdy_expander_row_get_expanded 
org.gtk.Property.set=hdy_expander_row_set_expanded)
    *
-   * %TRUE if the row is expanded.
+   * Whether the row is expanded.
+   *
+   * Since: 1.0
    */
   props[PROP_EXPANDED] =
     g_param_spec_boolean ("expanded",
@@ -329,9 +336,11 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyExpanderRow:enable-expansion:
+   * HdyExpanderRow:enable-expansion: (attributes org.gtk.Property.get=hdy_expander_row_get_enable_expansion 
org.gtk.Property.set=hdy_expander_row_set_enable_expansion)
    *
-   * %TRUE if the expansion is enabled.
+   * Whether expansion is enabled.
+   *
+   * Since: 1.0
    */
   props[PROP_ENABLE_EXPANSION] =
     g_param_spec_boolean ("enable-expansion",
@@ -341,9 +350,11 @@ hdy_expander_row_class_init (HdyExpanderRowClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyExpanderRow:show-enable-switch:
+   * HdyExpanderRow:show-enable-switch: (attributes 
org.gtk.Property.get=hdy_expander_row_get_show_enable_switch 
org.gtk.Property.set=hdy_expander_row_set_show_enable_switch)
    *
-   * %TRUE if the switch enabling the expansion is visible.
+   * Whether the switch enabling the expansion is visible.
+   *
+   * Since: 1.0
    */
   props[PROP_SHOW_ENABLE_SWITCH] =
     g_param_spec_boolean ("show-enable-switch",
@@ -422,11 +433,11 @@ hdy_expander_row_buildable_init (GtkBuildableIface *iface)
 /**
  * hdy_expander_row_new:
  *
- * Creates a new #HdyExpanderRow.
+ * Creates a new `HdyExpanderRow`.
  *
- * Returns: a new #HdyExpanderRow
+ * Returns: the newly created `HdyExpanderRow`
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 GtkWidget *
 hdy_expander_row_new (void)
@@ -435,12 +446,12 @@ hdy_expander_row_new (void)
 }
 
 /**
- * hdy_expander_row_get_subtitle:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_get_subtitle: (attributes org.gtk.Method.get_property=subtitle)
+ * @self: a expander row
  *
  * Gets the subtitle for @self.
  *
- * Returns: (transfer none) (nullable): the subtitle for @self, or %NULL.
+ * Returns: (transfer none) (nullable): the subtitle for @self
  *
  * Since: 1.0
  */
@@ -457,8 +468,8 @@ hdy_expander_row_get_subtitle (HdyExpanderRow *self)
 }
 
 /**
- * hdy_expander_row_set_subtitle:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_set_subtitle: (attributes org.gtk.Method.set_property=subtitle)
+ * @self: a expander row
  * @subtitle: (nullable): the subtitle
  *
  * Sets the subtitle for @self.
@@ -479,14 +490,13 @@ hdy_expander_row_set_subtitle (HdyExpanderRow *self,
 }
 
 /**
- * hdy_expander_row_get_use_underline:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_get_use_underline: (attributes org.gtk.Method.get_property=use-underline)
+ * @self: a expander row
  *
- * Gets whether an embedded underline in the text of the title and subtitle
- * labels indicates a mnemonic. See hdy_expander_row_set_use_underline().
+ * Gets whether an embedded underline in the title or subtitle labels indicates
+ * a mnemonic.
  *
- * Returns: %TRUE if an embedded underline in the title and subtitle labels
- *          indicates the mnemonic accelerator keys.
+ * Returns: whether an embedded underlines indicates a mnemonic
  *
  * Since: 1.0
  */
@@ -503,12 +513,12 @@ hdy_expander_row_get_use_underline (HdyExpanderRow *self)
 }
 
 /**
- * hdy_expander_row_set_use_underline:
- * @self: a #HdyExpanderRow
- * @use_underline: %TRUE if underlines in the text indicate mnemonics
+ * hdy_expander_row_set_use_underline: (attributes org.gtk.Method.set_property=use-underline)
+ * @self: a expander row
+ * @use_underline: `TRUE` if underlines in the text indicate mnemonics
  *
- * If true, an underline in the text of the title and subtitle labels indicates
- * the next character should be used for the mnemonic accelerator key.
+ * Sets whether an embedded underline in the title or subtitle labels indicates
+ * a mnemonic.
  *
  * Since: 1.0
  */
@@ -526,12 +536,12 @@ hdy_expander_row_set_use_underline (HdyExpanderRow *self,
 }
 
 /**
- * hdy_expander_row_get_icon_name:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_get_icon_name: (attributes org.gtk.Method.get_property=icon-name)
+ * @self: a expander row
  *
  * Gets the icon name for @self.
  *
- * Returns: the icon name for @self.
+ * Returns: the icon name for @self
  *
  * Since: 1.0
  */
@@ -548,8 +558,8 @@ hdy_expander_row_get_icon_name (HdyExpanderRow *self)
 }
 
 /**
- * hdy_expander_row_set_icon_name:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_set_icon_name: (attributes org.gtk.Method.set_property=icon-name)
+ * @self: a expander row
  * @icon_name: the icon name
  *
  * Sets the icon name for @self.
@@ -604,14 +614,14 @@ hdy_expander_row_set_expanded (HdyExpanderRow *self,
 }
 
 /**
- * hdy_expander_row_get_enable_expansion:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_get_enable_expansion: (attributes org.gtk.Method.get_property=enable-expansion)
+ * @self: a expander row
  *
  * Gets whether the expansion of @self is enabled.
  *
- * Returns: whether the expansion of @self is enabled.
+ * Returns: whether the expansion of @self is enabled
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_expander_row_get_enable_expansion (HdyExpanderRow *self)
@@ -626,13 +636,13 @@ hdy_expander_row_get_enable_expansion (HdyExpanderRow *self)
 }
 
 /**
- * hdy_expander_row_set_enable_expansion:
- * @self: a #HdyExpanderRow
- * @enable_expansion: %TRUE to enable the expansion
+ * hdy_expander_row_set_enable_expansion: (attributes org.gtk.Method.set_property=enable-expansion)
+ * @self: a expander row
+ * @enable_expansion: `TRUE` to enable the expansion
  *
  * Sets whether the expansion of @self is enabled.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_expander_row_set_enable_expansion (HdyExpanderRow *self,
@@ -657,14 +667,14 @@ hdy_expander_row_set_enable_expansion (HdyExpanderRow *self,
 }
 
 /**
- * hdy_expander_row_get_show_enable_switch:
- * @self: a #HdyExpanderRow
+ * hdy_expander_row_get_show_enable_switch: (attributes org.gtk.Method.get_property=show-enable-switch)
+ * @self: a expander row
  *
  * Gets whether the switch enabling the expansion of @self is visible.
  *
- * Returns: whether the switch enabling the expansion of @self is visible.
+ * Returns: whether the switch enabling the expansion of @self is visible
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_expander_row_get_show_enable_switch (HdyExpanderRow *self)
@@ -679,13 +689,13 @@ hdy_expander_row_get_show_enable_switch (HdyExpanderRow *self)
 }
 
 /**
- * hdy_expander_row_set_show_enable_switch:
- * @self: a #HdyExpanderRow
- * @show_enable_switch: %TRUE to show the switch enabling the expansion
+ * hdy_expander_row_set_show_enable_switch: (attributes org.gtk.Method.set_property=show-enable-switch)
+ * @self: a expander row
+ * @show_enable_switch: `TRUE` to show the switch enabling the expansion
  *
  * Sets whether the switch enabling the expansion of @self is visible.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_expander_row_set_show_enable_switch (HdyExpanderRow *self,
@@ -709,7 +719,7 @@ hdy_expander_row_set_show_enable_switch (HdyExpanderRow *self,
 
 /**
  * hdy_expander_row_add_action:
- * @self: a #HdyExpanderRow
+ * @self: a expander row
  * @widget: the action widget
  *
  * Adds an action widget to @self.
@@ -733,7 +743,7 @@ hdy_expander_row_add_action (HdyExpanderRow *self,
 
 /**
  * hdy_expander_row_add_prefix:
- * @self: a #HdyExpanderRow
+ * @self: a expander row
  * @widget: the prefix widget
  *
  * Adds a prefix widget to @self.
diff --git a/src/hdy-expander-row.h b/src/hdy-expander-row.h
index 80b546b1..14912bcb 100644
--- a/src/hdy-expander-row.h
+++ b/src/hdy-expander-row.h
@@ -24,7 +24,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyExpanderRow, hdy_expander_row, HDY, EXPANDER_ROW, H
 
 /**
  * HdyExpanderRowClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyExpanderRowClass
 {
diff --git a/src/hdy-fading-label.c b/src/hdy-fading-label.c
index 42eae737..c648df32 100644
--- a/src/hdy-fading-label.c
+++ b/src/hdy-fading-label.c
@@ -13,12 +13,12 @@
 #include "hdy-bidi-private.h"
 
 /**
- * PRIVATE:hdy-fading-label
- * @short_description: A helper object for #HdyTab
- * @title: HdyFadingLabel
- * @stability: Private
+ * HdyFadingLabel:
  *
- * The HdyFadingLabel widget allows to ellipsize a label with a fading effect.
+ * A helper object for [class@Tab]
+ *
+ * The [class@FadingLabel] widget allows to ellipsize a label with a fading
+ * effect.
  *
  * Since: 1.2
  */
diff --git a/src/hdy-flap.c b/src/hdy-flap.c
index c4afc966..ad874081 100644
--- a/src/hdy-flap.c
+++ b/src/hdy-flap.c
@@ -17,51 +17,55 @@
 #include "hdy-swipe-tracker-private.h"
 
 /**
- * SECTION:hdy-flap
- * @short_description: An adaptive container acting like a box or an overlay.
- * @Title: HdyFlap
+ * HdyFlap:
  *
- * The #HdyFlap widget can display its children like a #GtkBox does or like a
- * #GtkOverlay does, according to the #HdyFlap:fold-policy value.
+ * An adaptive container acting like a box or an overlay.
  *
- * #HdyFlap has at most three children: #HdyFlap:content, #HdyFlap:flap and
- * #HdyFlap: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 #HdyFlap:reveal-flap value, as well as via swipe gestures if
- * #HdyFlap:swipe-to-open and/or #HdyFlap:swipe-to-close are set to %TRUE.
+ * 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.
  *
- * 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.
+ * `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`.
  *
- * #HdyFlap:flap is transparent by default; add the .background style class to
- * it if this is unwanted.
+ * 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.
  *
- * If #HdyFlap:modal is set to %TRUE, content becomes completely inaccessible
- * when the flap is revealed when folded.
+ * [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  #HdyFlap:flap-position value.
+ * 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
- * #HdyFlap:locked property can be used to override it.
+ * [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
+ * ## HdyFlap as GtkBuildable
  *
- * The #HdyFlap implementation of the #GtkBuildable interface supports setting
- * the flap child by specifying “flap” as the “type” attribute of a
- * &lt;child&gt; element, and separator by specifying “separator”. Specifying
+ * 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
+ * ## 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.
+ * `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.
  *
  * Since: 1.2
  */
@@ -74,8 +78,7 @@
  * @HDY_FLAP_FOLD_POLICY_AUTO: Fold and unfold the flap based on available
  *   space.
  *
- * These enumeration values describe the possible folding behavior in a #HdyFlap
- * widget.
+ * Describes the possible folding behavior of a [class@Flap] widget.
  *
  * Since: 1.2
  */
@@ -90,9 +93,11 @@
  *   neither the flap nor content overlap each other. Both widgets can be
  *   swiped.
  *
+ * Describes transitions types of a [class@Flap] widget.
+ *
  * These enumeration values describe the possible transitions between children
- * in a #HdyFlap widget, as well as which areas can be swiped via
- * #HdyFlap:swipe-to-open and #HdyFlap:swipe-to-close.
+ * 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.
  *
@@ -1515,9 +1520,11 @@ hdy_flap_class_init (HdyFlapClass *klass)
   container_class->forall = hdy_flap_forall;
 
   /**
-   * HdyFlap:content:
+   * HdyFlap:content: (attributes org.gtk.Property.get=hdy_flap_get_content 
org.gtk.Property.set=hdy_flap_set_content)
+   *
+   * The content widget.
    *
-   * The content widget, always displayed when unfolded, and partially visible
+   * It's always displayed when unfolded, and partially visible
    * when folded.
    *
    * Since: 1.2
@@ -1530,10 +1537,11 @@ hdy_flap_class_init (HdyFlapClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:flap:
+   * HdyFlap:flap: (attributes org.gtk.Property.get=hdy_flap_get_flap org.gtk.Property.set=hdy_flap_set_flap)
    *
-   * The flap widget, only visible when #HdyFlap:reveal-progress is greater than
-   * 0.
+   * The flap widget.
+   *
+   * It's only visible when [property@Flap:reveal-progress] is greater than 0.
    *
    * Since: 1.2
    */
@@ -1545,11 +1553,13 @@ hdy_flap_class_init (HdyFlapClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:separator:
+   * HdyFlap:separator: (attributes org.gtk.Property.get=hdy_flap_get_separator 
org.gtk.Property.set=hdy_flap_set_separator)
+   *
+   * The separator widget.
    *
-   * The separator widget, displayed between content and flap when there's no
-   * shadow to display. When exactly it's visible depends on the
-   * #HdyFlap:transition-type value. If %NULL, no separator will be used.
+   * 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.
    *
    * Since: 1.2
    */
@@ -1561,10 +1571,12 @@ hdy_flap_class_init (HdyFlapClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:flap-position:
+   * HdyFlap:flap-position: (attributes org.gtk.Property.get=hdy_flap_get_flap_position 
org.gtk.Property.set=hdy_flap_set_flap_position)
+   *
+   * The flap position.
    *
-   * The flap position for @self. If @GTK_PACK_START, the flap is displayed
-   * before the content, if @GTK_PACK_END, it's displayed after the content.
+   * If `GTK_PACK_START`, the flap is displayed before the content, if
+   * `GTK_PACK_END`, it's displayed after the content.
    *
    * Since: 1.2
    */
@@ -1577,7 +1589,7 @@ hdy_flap_class_init (HdyFlapClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:reveal-flap:
+   * HdyFlap:reveal-flap: (attributes org.gtk.Property.get=hdy_flap_get_reveal_flap 
org.gtk.Property.set=hdy_flap_set_reveal_flap)
    *
    * Whether the flap widget is revealed.
    *
@@ -1591,7 +1603,7 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:reveal-duration:
+   * HdyFlap:reveal-duration: (attributes org.gtk.Property.get=hdy_flap_get_reveal_duration 
org.gtk.Property.set=hdy_flap_set_reveal_duration)
    *
    * The reveal transition animation duration, in milliseconds.
    *
@@ -1606,10 +1618,12 @@ hdy_flap_class_init (HdyFlapClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:reveal-progress:
+   * HdyFlap:reveal-progress: (attributes org.gtk.Property.get=hdy_flap_get_reveal_progress)
    *
-   * The current reveal transition progress. 0 means fully hidden, 1 means fully
-   * revealed See #HdyFlap:reveal-flap.
+   * The current reveal transition progress.
+   *
+   * 0 means fully hidden, 1 means fully revealed. See
+   * [property@Flap:reveal-flap].
    *
    * Since: 1.2
    */
@@ -1621,10 +1635,11 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READABLE);
 
   /**
-   * HdyFlap:fold-policy:
+   * HdyFlap:fold-policy: (attributes org.gtk.Property.get=hdy_flap_get_fold_policy 
org.gtk.Property.set=hdy_flap_set_fold_policy)
+   *
+   * The current fold policy.
    *
-   * The current fold policy. See #HdyFlapFoldPolicy for available
-   * policies.
+   * See [enum@FlapFoldPolicy] for available policies.
    *
    * Since: 1.2
    */
@@ -1637,7 +1652,7 @@ hdy_flap_class_init (HdyFlapClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:fold-duration:
+   * HdyFlap:fold-duration: (attributes org.gtk.Property.get=hdy_flap_get_fold_duration 
org.gtk.Property.set=hdy_flap_set_fold_duration)
    *
    * The fold transition animation duration, in milliseconds.
    *
@@ -1652,11 +1667,11 @@ hdy_flap_class_init (HdyFlapClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:folded:
+   * HdyFlap:folded: (attributes org.gtk.Property.get=hdy_flap_get_folded)
    *
    * Whether the flap is currently folded.
    *
-   * See #HdyFlap:fold-policy.
+   * See [property@Flap:fold-policy].
    *
    * Since: 1.2
    */
@@ -1668,13 +1683,13 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READABLE);
 
   /**
-   * HdyFlap:locked:
+   * HdyFlap:locked: (attributes org.gtk.Property.get=hdy_flap_get_locked 
org.gtk.Property.set=hdy_flap_set_locked)
    *
    * 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,
-   * #HdyFlap:reveal-flap value never changes on its own.
+   * 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.
    *
    * Since: 1.2
    */
@@ -1686,14 +1701,13 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:transition-type:
+   * HdyFlap:transition-type: (attributes org.gtk.Property.get=hdy_flap_get_transition_type 
org.gtk.Property.set=hdy_flap_set_transition_type)
    *
-   * The type of animation that will be used for reveal and fold transitions
-   * in @self.
+   * the type of animation used for reveal and fold transitions.
    *
-   * #HdyFlap: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.
+   * [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.
    *
    * Since: 1.2
    */
@@ -1706,13 +1720,13 @@ hdy_flap_class_init (HdyFlapClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:modal:
+   * HdyFlap:modal: (attributes org.gtk.Property.get=hdy_flap_get_modal 
org.gtk.Property.set=hdy_flap_set_modal)
    *
    * Whether the flap is modal.
    *
-   * If %TRUE, clicking the content widget while flap is revealed, as well as
-   * pressing Escape key, will close the flap. If %FALSE, clicks are passed
-   * through to the content widget.
+   * 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.
    *
    * Since: 1.2
    */
@@ -1724,11 +1738,12 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:swipe-to-open:
+   * HdyFlap:swipe-to-open: (attributes org.gtk.Property.get=hdy_flap_get_swipe_to_open 
org.gtk.Property.set=hdy_flap_set_swipe_to_open)
    *
    * Whether the flap can be opened with a swipe gesture.
    *
-   * The area that can be swiped depends on the #HdyFlap:transition-type value.
+   * The area that can be swiped depends on the [property@Flap:transition-type]
+   * value.
    *
    * Since: 1.2
    */
@@ -1740,11 +1755,12 @@ hdy_flap_class_init (HdyFlapClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyFlap:swipe-to-close:
+   * HdyFlap:swipe-to-close: (attributes org.gtk.Property.get=hdy_flap_get_swipe_to_close 
org.gtk.Property.set=hdy_flap_set_swipe_to_close)
    *
    * Whether the flap can be closed with a swipe gesture.
    *
-   * The area that can be swiped depends on the #HdyFlap:transition-type value.
+   * The area that can be swiped depends on the [property@Flap:transition-type]
+   * value.
    *
    * Since: 1.2
    */
@@ -2011,9 +2027,9 @@ hdy_flap_swipeable_init (HdySwipeableInterface *iface)
 /**
  * hdy_flap_new:
  *
- * Creates a new #HdyFlap.
+ * Creates a new `HdyFlap`.
  *
- * Returns: a new #HdyFlap
+ * Returns: the newly created `HdyFlap`
  *
  * Since: 1.2
  */
@@ -2024,8 +2040,8 @@ hdy_flap_new (void)
 }
 
 /**
- * hdy_flap_get_content:
- * @self: a #HdyFlap
+ * hdy_flap_get_content: (attributes org.gtk.Method.get_property=content)
+ * @self: a flap
  *
  * Gets the content widget for @self
  *
@@ -2042,12 +2058,13 @@ hdy_flap_get_content (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_content:
- * @self: a #HdyFlap
- * @content: (nullable): the content widget, or %NULL
+ * hdy_flap_set_content: (attributes org.gtk.Method.set_property=content)
+ * @self: a flap
+ * @content: (nullable): the content widget
+ *
+ * Sets the content widget for @self.
  *
- * Sets the content widget for @self, always displayed when unfolded, and
- * partially visible when folded.
+ * It is always displayed when unfolded, and partially visible when folded.
  *
  * Since: 1.2
  */
@@ -2075,8 +2092,8 @@ hdy_flap_set_content (HdyFlap   *self,
 }
 
 /**
- * hdy_flap_get_flap:
- * @self: a #HdyFlap
+ * hdy_flap_get_flap: (attributes org.gtk.Method.get_property=flap)
+ * @self: a flap
  *
  * Gets the flap widget for @self
  *
@@ -2093,12 +2110,11 @@ hdy_flap_get_flap (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_flap:
- * @self: a #HdyFlap
- * @flap: (nullable): the flap widget, or %NULL
+ * hdy_flap_set_flap: (attributes org.gtk.Method.set_property=flap)
+ * @self: a flap
+ * @flap: (nullable): the flap widget
  *
- * Sets the flap widget for @self, only visible when #HdyFlap:reveal-progress is
- * greater than 0.
+ * Sets the flap widget for @self.
  *
  * Since: 1.2
  */
@@ -2127,8 +2143,8 @@ hdy_flap_set_flap (HdyFlap   *self,
 }
 
 /**
- * hdy_flap_get_separator:
- * @self: a #HdyFlap
+ * hdy_flap_get_separator: (attributes org.gtk.Method.get_property=separator)
+ * @self: a flap
  *
  * Gets the separator widget for @self.
  *
@@ -2145,13 +2161,11 @@ hdy_flap_get_separator (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_separator:
- * @self: a #HdyFlap
- * @separator: (nullable): the separator widget, or %NULL
+ * hdy_flap_set_separator: (attributes org.gtk.Method.set_property=separator)
+ * @self: a flap
+ * @separator: (nullable): the separator widget
  *
- * Sets the separator widget for @self, displayed between content and flap when
- * there's no shadow to display. When exactly it's visible depends on the
- * #HdyFlap:transition-type value. If %NULL, no separator will be used.
+ * Sets the separator widget for @self.
  *
  * Since: 1.2
  */
@@ -2179,8 +2193,8 @@ hdy_flap_set_separator (HdyFlap   *self,
 }
 
 /**
- * hdy_flap_get_flap_position:
- * @self: a #HdyFlap
+ * hdy_flap_get_flap_position: (attributes org.gtk.Method.get_property=flap-position)
+ * @self: a flap
  *
  * Gets the flap position for @self.
  *
@@ -2197,12 +2211,11 @@ hdy_flap_get_flap_position (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_flap_position:
- * @self: a #HdyFlap
+ * hdy_flap_set_flap_position: (attributes org.gtk.Method.set_property=flap-position)
+ * @self: a flap
  * @position: the new value
  *
- * Sets the flap position for @self. If @GTK_PACK_START, the flap is displayed
- * before the content, if @GTK_PACK_END, it's displayed after the content.
+ * Sets the flap position for @self.
  *
  * Since: 1.2
  */
@@ -2226,12 +2239,12 @@ hdy_flap_set_flap_position (HdyFlap     *self,
 }
 
 /**
- * hdy_flap_get_reveal_flap:
- * @self: a #HdyFlap
+ * hdy_flap_get_reveal_flap: (attributes org.gtk.Method.get_property=reveal-flap)
+ * @self: a flap
  *
  * Gets whether the flap widget is revealed for @self.
  *
- * Returns: %TRUE if the flap widget is revealed, %FALSE otherwise.
+ * Returns: whether flap widget is revealed
  *
  * Since: 1.2
  */
@@ -2244,9 +2257,9 @@ hdy_flap_get_reveal_flap (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_reveal_flap:
- * @self: a #HdyFlap
- * @reveal_flap: %TRUE to reveal the flap widget, %FALSE otherwise
+ * hdy_flap_set_reveal_flap: (attributes org.gtk.Method.set_property=reveal-flap)
+ * @self: a flap
+ * @reveal_flap: `TRUE` to reveal the flap widget, `FALSE` otherwise
  *
  * Sets whether the flap widget is revealed for @self.
  *
@@ -2262,13 +2275,12 @@ hdy_flap_set_reveal_flap (HdyFlap  *self,
 }
 
 /**
- * hdy_flap_get_reveal_duration:
- * @self: a #HdyFlap
+ * hdy_flap_get_reveal_duration: (attributes org.gtk.Method.get_property=reveal-duration)
+ * @self: a flap
  *
- * Returns the amount of time (in milliseconds) that reveal transitions in @self
- * will take.
+ * Gets the amount of time that reveal transitions will take.
  *
- * Returns: the reveal transition duration
+ * Returns: the reveal transition duration, in milliseconds
  *
  * Since: 1.2
  */
@@ -2281,8 +2293,8 @@ hdy_flap_get_reveal_duration (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_reveal_duration:
- * @self: a #HdyFlap
+ * hdy_flap_set_reveal_duration: (attributes org.gtk.Method.set_property=reveal-duration)
+ * @self: a flap
  * @duration: the new duration, in milliseconds
  *
  * Sets the duration that reveal transitions in @self will take.
@@ -2304,11 +2316,10 @@ hdy_flap_set_reveal_duration (HdyFlap *self,
 }
 
 /**
- * hdy_flap_get_reveal_progress:
- * @self: a #HdyFlap
+ * hdy_flap_get_reveal_progress: (attributes org.gtk.Method.get_property=reveal-progress)
+ * @self: a flap
  *
- * Gets the current reveal transition progress for @self. 0 means fully hidden,
- * 1 means fully revealed. See #HdyFlap:reveal-flap.
+ * Gets the current reveal transition progress for @self.
  *
  * Returns: the current reveal progress for @self
  *
@@ -2323,10 +2334,10 @@ hdy_flap_get_reveal_progress (HdyFlap *self)
 }
 
 /**
- * hdy_flap_get_fold_policy:
- * @self: a #HdyFlap
+ * hdy_flap_get_fold_policy: (attributes org.gtk.Method.get_property=fold-policy)
+ * @self: a flap
  *
- * Gets the current fold policy of @self. See hdy_flap_set_fold_policy().
+ * Gets the current fold policy of @self.
  *
  * Returns: the current fold policy of @self
  *
@@ -2341,12 +2352,11 @@ hdy_flap_get_fold_policy (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_fold_policy:
- * @self: a #HdyFlap
- * @policy: Fold policy
+ * hdy_flap_set_fold_policy: (attributes org.gtk.Method.set_property=fold-policy)
+ * @self: a flap
+ * @policy: a fold policy
  *
- * Sets the current fold policy for @self. See #HdyFlapFoldPolicy for available
- * policies.
+ * Sets the current fold policy for @self.
  *
  * Since: 1.2
  */
@@ -2383,13 +2393,12 @@ hdy_flap_set_fold_policy (HdyFlap           *self,
 }
 
 /**
- * hdy_flap_get_fold_duration:
- * @self: a #HdyFlap
+ * hdy_flap_get_fold_duration: (attributes org.gtk.Method.get_property=fold-duration)
+ * @self: a flap
  *
- * Returns the amount of time (in milliseconds) that fold transitions in @self
- * will take.
+ * Gets the amount of time that fold transitions will take.
  *
- * Returns: the fold transition duration
+ * Returns: the fold transition duration, in milliseconds
  *
  * Since: 1.2
  */
@@ -2402,11 +2411,11 @@ hdy_flap_get_fold_duration (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_fold_duration:
- * @self: a #HdyFlap
+ * hdy_flap_set_fold_duration: (attributes org.gtk.Method.set_property=fold-duration)
+ * @self: a flap
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that fold transitions in @self will take.
+ * Sets the duration that fold transitions will take.
  *
  * Since: 1.2
  */
@@ -2425,14 +2434,12 @@ hdy_flap_set_fold_duration (HdyFlap *self,
 }
 
 /**
- * hdy_flap_get_folded:
- * @self: a #HdyFlap
+ * hdy_flap_get_folded: (attributes org.gtk.Method.get_property=folded)
+ * @self: a flap
  *
  * Gets whether @self is currently folded.
  *
- * See #HdyFlap:fold-policy.
- *
- * Returns: %TRUE if @self is currently folded, %FALSE otherwise
+ * Returns: `TRUE` if @self is currently folded
  *
  * Since: 1.2
  */
@@ -2445,12 +2452,12 @@ hdy_flap_get_folded (HdyFlap *self)
 }
 
 /**
- * hdy_flap_get_locked:
- * @self: a #HdyFlap
+ * hdy_flap_get_locked: (attributes org.gtk.Method.get_property=locked)
+ * @self: a flap
  *
  * Gets whether @self is locked.
  *
- * Returns: %TRUE if @self is locked, %FALSE otherwise
+ * Returns: whether @self is locked
  *
  * Since: 1.2
  */
@@ -2463,15 +2470,15 @@ hdy_flap_get_locked (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_locked:
- * @self: a #HdyFlap
+ * hdy_flap_set_locked: (attributes org.gtk.Method.set_property=locked)
+ * @self: a flap
  * @locked: the new value
  *
  * 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,
- * #HdyFlap:reveal-flap value never changes on its own.
+ * 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.
  *
  * Since: 1.2
  */
@@ -2492,11 +2499,10 @@ hdy_flap_set_locked (HdyFlap  *self,
 }
 
 /**
- * hdy_flap_get_transition_type:
- * @self: a #HdyFlap
+ * hdy_flap_get_transition_type: (attributes org.gtk.Method.get_property=transition-type)
+ * @self: a flap
  *
- * Gets the type of animation that will be used for reveal and fold transitions
- * in @self.
+ * Gets the type of animation used for reveal and fold transitions in @self.
  *
  * Returns: the current transition type of @self
  *
@@ -2511,16 +2517,11 @@ hdy_flap_get_transition_type (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_transition_type:
- * @self: a #HdyFlap
+ * hdy_flap_set_transition_type: (attributes org.gtk.Method.set_property=transition-type)
+ * @self: a flap
  * @transition_type: the new transition type
  *
- * Sets the type of animation that will be used for reveal and fold transitions
- * in @self.
- *
- * #HdyFlap: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.
+ * Sets the type of animation used for reveal and fold transitions in @self.
  *
  * Since: 1.2
  */
@@ -2545,12 +2546,12 @@ hdy_flap_set_transition_type (HdyFlap               *self,
 }
 
 /**
- * hdy_flap_get_modal:
- * @self: a #HdyFlap
+ * hdy_flap_get_modal: (attributes org.gtk.Method.get_property=modal)
+ * @self: a flap
  *
- * Gets whether the @self is modal. See hdy_flap_set_modal().
+ * Gets whether the @self is modal.
  *
- * Returns: %TRUE if @self is modal
+ * Returns: whether @self is modal
  *
  * Since: 1.2
  */
@@ -2563,15 +2564,15 @@ hdy_flap_get_modal (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_modal:
- * @self: a #HdyFlap
- * @modal: Whether @self can be closed with a click
+ * hdy_flap_set_modal: (attributes org.gtk.Method.set_property=modal)
+ * @self: a flap
+ * @modal: whether @self can be closed with a click
  *
  * Sets whether the @self can be closed with a click.
  *
- * If @modal is %TRUE, clicking the content widget while flap is revealed, or
- * pressing Escape key, will close the flap. If %FALSE, clicks are passed
- * through to the content widget.
+ * 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.
  *
  * Since: 1.2
  */
@@ -2599,12 +2600,12 @@ hdy_flap_set_modal (HdyFlap  *self,
 }
 
 /**
- * hdy_flap_get_swipe_to_open:
- * @self: a #HdyFlap
+ * hdy_flap_get_swipe_to_open: (attributes org.gtk.Method.get_property=swipe-to-open)
+ * @self: a flap
  *
  * Gets whether @self can be opened with a swipe gesture.
  *
- * Returns: %TRUE if @self can be opened with a swipe gesture
+ * Returns: `TRUE` if @self can be opened with a swipe gesture
  *
  * Since: 1.2
  */
@@ -2617,13 +2618,14 @@ hdy_flap_get_swipe_to_open (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_swipe_to_open:
- * @self: a #HdyFlap
- * @swipe_to_open: Whether @self can be opened with a swipe gesture
+ * hdy_flap_set_swipe_to_open: (attributes org.gtk.Method.set_property=swipe-to-open)
+ * @self: a flap
+ * @swipe_to_open: whether @self can be opened with a swipe gesture
  *
  * Sets whether @self can be opened with a swipe gesture.
  *
- * The area that can be swiped depends on the #HdyFlap:transition-type value.
+ * The area that can be swiped depends on the [property@Flap:transition-type]
+ * value.
  *
  * Since: 1.2
  */
@@ -2646,12 +2648,12 @@ hdy_flap_set_swipe_to_open (HdyFlap  *self,
 }
 
 /**
- * hdy_flap_get_swipe_to_close:
- * @self: a #HdyFlap
+ * hdy_flap_get_swipe_to_close: (attributes org.gtk.Method.get_property=swipe-to-close)
+ * @self: a flap
  *
  * Gets whether @self can be closed with a swipe gesture.
  *
- * Returns: %TRUE if @self can be closed with a swipe gesture
+ * Returns: `TRUE` if @self can be closed with a swipe gesture
  *
  * Since: 1.2
  */
@@ -2664,13 +2666,13 @@ hdy_flap_get_swipe_to_close (HdyFlap *self)
 }
 
 /**
- * hdy_flap_set_swipe_to_close:
- * @self: a #HdyFlap
- * @swipe_to_close: Whether @self can be closed with a swipe gesture
+ * hdy_flap_set_swipe_to_close: (attributes org.gtk.Method.set_property=swipe-to-close)
+ * @self: a flap
+ * @swipe_to_close: whether @self can be closed with a swipe gesture
  *
  * Sets whether @self can be closed with a swipe gesture.
  *
- * The area that can be swiped depends on the #HdyFlap:transition-type value.
+ * The area that can be swiped depends on the [property@Flap:transition-type] value.
  *
  * Since: 1.2
  */
diff --git a/src/hdy-header-bar.c b/src/hdy-header-bar.c
index b0136a1a..9d455e16 100644
--- a/src/hdy-header-bar.c
+++ b/src/hdy-header-bar.c
@@ -33,37 +33,42 @@
 #include "gtk-window-private.h"
 
 /**
- * SECTION:hdy-header-bar
- * @short_description: A box with a centered child.
- * @Title: HdyHeaderBar
- * @See_also: #GtkHeaderBar, #HdyApplicationWindow, #HdyTitleBar, #HdyViewSwitcher, #HdyWindow
+ * HdyHeaderBar:
  *
- * HdyHeaderBar is similar to #GtkHeaderBar but is designed to fix some of its
- * shortcomings for adaptive applications.
+ * A title bar widget.
  *
- * 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
- * #HdyViewSwitcher.
+ * `HdyHeaderBar` is similar to [class@Gtk.HeaderBar] but is designed to fix
+ * some of its shortcomings for adaptive applications.
  *
- * When used in a mobile dialog, HdyHeaderBar will replace its window
+ * `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
+ * `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
- * #HdyWindow or #HdyApplicationWindow.
+ * [class@Window] or [class@ApplicationWindow].
+ *
+ * ## CSS nodes
  *
- * # CSS nodes
+ * `HdyHeaderBar` has a single CSS node with name `headerbar`.
  *
- * #HdyHeaderBar has a single CSS node with name headerbar.
+ * Since: 1.0
  */
 
 /**
  * HdyCenteringPolicy:
  * @HDY_CENTERING_POLICY_LOOSE: Keep the title centered when possible
  * @HDY_CENTERING_POLICY_STRICT: Keep the title centered at all cost
+ *
+ * Describes title centering behavior of a [class@HeaderBar] widget.
+ *
+ * Since: 1.0
  */
 
 #define DEFAULT_SPACING 6
@@ -2092,6 +2097,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                                                                 -1, G_MAXINT, 0,
                                                                 G_PARAM_READWRITE));
 
+  /**
+   * HdyHeaderBar:title: (attributes org.gtk.Property.get=hdy_header_bar_get_title 
org.gtk.Property.set=hdy_header_bar_set_title)
+   *
+   * The title to display.
+   *
+   * Since: 1.0
+   */
   props[PROP_TITLE] =
     g_param_spec_string ("title",
                          _("Title"),
@@ -2099,6 +2111,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                          NULL,
                          G_PARAM_READWRITE);
 
+  /**
+   * HdyHeaderBar:subtitle: (attributes org.gtk.Property.get=hdy_header_bar_get_subtitle 
org.gtk.Property.set=hdy_header_bar_set_subtitle)
+   *
+   * The subtitle to display.
+   *
+   * Since: 1.0
+   */
   props[PROP_SUBTITLE] =
     g_param_spec_string ("subtitle",
                          _("Subtitle"),
@@ -2106,6 +2125,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                          NULL,
                          G_PARAM_READWRITE);
 
+  /**
+   * HdyHeaderBar:custom-title: (attributes org.gtk.Property.get=hdy_header_bar_get_custom_title 
org.gtk.Property.set=hdy_header_bar_set_custom_title)
+   *
+   * Custom title widget to display.
+   *
+   * Since: 1.0
+   */
   props[PROP_CUSTOM_TITLE] =
     g_param_spec_object ("custom-title",
                          _("Custom Title"),
@@ -2113,6 +2139,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                          GTK_TYPE_WIDGET,
                          G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS);
 
+  /**
+   * HdyHeaderBar:spacing:
+   *
+   * The amount of space between children.
+   *
+   * Since: 1.0
+   */
   props[PROP_SPACING] =
     g_param_spec_int ("spacing",
                       _("Spacing"),
@@ -2122,16 +2155,16 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                       G_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyHeaderBar:show-close-button:
+   * HdyHeaderBar:show-close-button: (attributes org.gtk.Property.get=hdy_header_bar_get_show_close_button 
org.gtk.Property.set=hdy_header_bar_set_show_close_button)
    *
    * Whether to show window decorations.
    *
-   * Which buttons are actually shown and where is determined
-   * by the #HdyHeaderBar: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).
+   * 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).
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_SHOW_CLOSE_BUTTON] =
     g_param_spec_boolean ("show-close-button",
@@ -2141,16 +2174,27 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                           G_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyHeaderBar:decoration-layout:
+   * HdyHeaderBar:decoration-layout: (attributes org.gtk.Property.get=hdy_header_bar_get_decoration_layout 
org.gtk.Property.set=hdy_header_bar_set_decoration_layout)
+   *
+   * 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 decoration layout for buttons. If this property is
-   * not set, the #GtkSettings: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 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).
    *
-   * See hdy_header_bar_set_decoration_layout() for information
-   * about the format of this string.
+   * For example, “menu:minimize,maximize,close” specifies a menu on the left, and
+   * minimize, maximize and close buttons on the right.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_DECORATION_LAYOUT] =
     g_param_spec_string ("decoration-layout",
@@ -2162,9 +2206,9 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
   /**
    * HdyHeaderBar:decoration-layout-set:
    *
-   * Set to %TRUE if #HdyHeaderBar:decoration-layout is set.
+   * Whether [property@HeaderBar:decoration-layout] is set.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_DECORATION_LAYOUT_SET] =
     g_param_spec_boolean ("decoration-layout-set",
@@ -2174,12 +2218,11 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                           G_PARAM_READWRITE);
 
   /**
-   * HdyHeaderBar:has-subtitle:
+   * HdyHeaderBar:has-subtitle: (attributes org.gtk.Property.get=hdy_header_bar_get_has_subtitle 
org.gtk.Property.set=hdy_header_bar_set_has_subtitle)
    *
-   * If %TRUE, reserve space for a subtitle, even if none
-   * is currently set.
+   * Whether to reserve space for a subtitle, even if none is currently set.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_HAS_SUBTITLE] =
     g_param_spec_boolean ("has-subtitle",
@@ -2188,6 +2231,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                           TRUE,
                           G_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyHeaderBar:centering-policy: (attributes org.gtk.Property.get=hdy_header_bar_get_centering_policy 
org.gtk.Property.set=hdy_header_bar_set_centering_policy)
+   *
+   * The policy for aligning the center widget.
+   *
+   * Since: 1.0
+   */
   props[PROP_CENTERING_POLICY] =
     g_param_spec_enum ("centering-policy",
                        _("Centering policy"),
@@ -2195,6 +2245,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                        HDY_TYPE_CENTERING_POLICY, HDY_CENTERING_POLICY_LOOSE,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyHeaderBar:transition-duration: (attributes 
org.gtk.Property.get=hdy_header_bar_get_transition_duration 
org.gtk.Property.set=hdy_header_bar_set_transition_duration)
+   *
+   * The transition duration, in milliseconds.
+   *
+   * Since: 1.0
+   */
   props[PROP_TRANSITION_DURATION] =
     g_param_spec_uint ("transition-duration",
                        _("Transition duration"),
@@ -2202,6 +2259,13 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                        0, G_MAXUINT, 200,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyHeaderBar:transition-running: (attributes org.gtk.Property.get=hdy_header_bar_get_transition_running)
+   *
+   * Whether or not the transition is currently running.
+   *
+   * Since: 1.0
+   */
   props[PROP_TRANSITION_RUNNING] =
     g_param_spec_boolean ("transition-running",
                           _("Transition running"),
@@ -2209,6 +2273,18 @@ hdy_header_bar_class_init (HdyHeaderBarClass *class)
                           FALSE,
                           G_PARAM_READABLE);
 
+  /**
+   * HdyHeaderBar:interpolate-size: (attributes org.gtk.Property.get=hdy_header_bar_get_interpolate_size 
org.gtk.Property.set=hdy_header_bar_set_interpolate_size)
+   *
+   * 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.
+   *
+   * Since: 1.0
+   */
   props[PROP_INTERPOLATE_SIZE] =
     g_param_spec_boolean ("interpolate-size",
                           _("Interpolate size"),
@@ -2273,11 +2349,11 @@ hdy_header_bar_buildable_init (GtkBuildableIface *iface)
 /**
  * hdy_header_bar_new:
  *
- * Creates a new #HdyHeaderBar widget.
+ * Creates a new `HdyHeaderBar`.
  *
- * Returns: a new #HdyHeaderBar
+ * Returns: the newly created `HdyHeaderBar`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_header_bar_new (void)
@@ -2287,13 +2363,12 @@ hdy_header_bar_new (void)
 
 /**
  * hdy_header_bar_pack_start:
- * @self: A #HdyHeaderBar
- * @child: the #GtkWidget to be added to @self:
+ * @self: a header bar
+ * @child: the widget to be added to @self
  *
- * Adds @child to @self:, packed with reference to the
- * start of the @self:.
+ * Adds @child to @self, packed with reference to the start of the @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_pack_start (HdyHeaderBar *self,
@@ -2304,13 +2379,12 @@ hdy_header_bar_pack_start (HdyHeaderBar *self,
 
 /**
  * hdy_header_bar_pack_end:
- * @self: A #HdyHeaderBar
- * @child: the #GtkWidget to be added to @self:
+ * @self: a header bar
+ * @child: the widget to be added to @self
  *
- * Adds @child to @self:, packed with reference to the
- * end of the @self:.
+ * Adds @child to @self, packed with reference to the end of the @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_pack_end (HdyHeaderBar *self,
@@ -2320,15 +2394,16 @@ hdy_header_bar_pack_end (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_set_title:
- * @self: a #HdyHeaderBar
- * @title: (nullable): a title, or %NULL
+ * hdy_header_bar_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a header bar
+ * @title: (nullable): a title
+ *
+ * Sets the title of the [class@HeaderBar].
  *
- * Sets the title of the #HdyHeaderBar. The title should help a user
- * identify the current view. A good title should not include the
- * application name.
+ * The title should help a user identify the current view. A good title should
+ * not include the application name.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_title (HdyHeaderBar *self,
@@ -2352,16 +2427,14 @@ hdy_header_bar_set_title (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_title:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a header bar
  *
- * Retrieves the title of the header. See hdy_header_bar_set_title().
+ * Retrieves the title of the header.
  *
- * Returns: (nullable): the title of the header, or %NULL if none has
- *    been set explicitly. The returned string is owned by the widget
- *    and must not be modified or freed.
+ * Returns: (nullable): the title of the header.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_header_bar_get_title (HdyHeaderBar *self)
@@ -2374,18 +2447,20 @@ hdy_header_bar_get_title (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_subtitle:
- * @self: a #HdyHeaderBar
- * @subtitle: (nullable): a subtitle, or %NULL
+ * hdy_header_bar_set_subtitle: (attributes org.gtk.Method.set_property=subtitle)
+ * @self: a header bar
+ * @subtitle: (nullable): a subtitle
  *
- * Sets the subtitle of the #HdyHeaderBar. The title should give a user
- * an additional detail to help them identify the current view.
+ * Sets the subtitle of the header bar.
  *
- * Note that HdyHeaderBar by default reserves room for the subtitle,
- * even if none is currently set. If this is not desired, set the
- * #HdyHeaderBar:has-subtitle property to %FALSE.
+ * The title should give a user an additional detail to help them identify the
+ * current view.
  *
- * Since: 0.0.10
+ * 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`.
+ *
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_subtitle (HdyHeaderBar *self,
@@ -2412,16 +2487,14 @@ hdy_header_bar_set_subtitle (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_subtitle:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_subtitle: (attributes org.gtk.Method.get_property=subtitle)
+ * @self: a header bar
  *
- * Retrieves the subtitle of the header. See hdy_header_bar_set_subtitle().
+ * Gets the subtitle of the header.
  *
- * Returns: (nullable): the subtitle of the header, or %NULL if none has
- *    been set explicitly. The returned string is owned by the widget
- *    and must not be modified or freed.
+ * Returns: (nullable): the subtitle of the header
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_header_bar_get_subtitle (HdyHeaderBar *self)
@@ -2434,22 +2507,21 @@ hdy_header_bar_get_subtitle (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_custom_title:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_set_custom_title: (attributes org.gtk.Method.set_property=custom-title)
+ * @self: a header bar
  * @title_widget: (nullable): a custom widget to use for a title
  *
- * Sets a custom title for the #HdyHeaderBar.
+ * Sets a custom title for the header bar.
  *
- * The title should help a user identify the current view. This
- * supersedes any title set by hdy_header_bar_set_title() or
- * hdy_header_bar_set_subtitle(). To achieve the same style as
- * the builtin title and subtitle, use the “title” and “subtitle”
- * style classes.
+ * 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.
+ * You should set the custom title to `NULL`, for the header title label to be
+ * visible again.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_custom_title (HdyHeaderBar *self,
@@ -2496,16 +2568,14 @@ hdy_header_bar_set_custom_title (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_custom_title:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_custom_title: (attributes org.gtk.Method.get_property=custom-title)
+ * @self: a header bar
  *
- * Retrieves the custom title widget of the header. See
- * hdy_header_bar_set_custom_title().
+ * Retrieves the custom title widget of the header.
  *
- * Returns: (nullable) (transfer none): the custom title widget
- *    of the header, or %NULL if none has been set explicitly.
+ * Returns: (nullable) (transfer none): the custom title widget of the header
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_header_bar_get_custom_title (HdyHeaderBar *self)
@@ -2518,15 +2588,14 @@ hdy_header_bar_get_custom_title (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_get_show_close_button:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_show_close_button: (attributes org.gtk.Method.get_property=show-close-button)
+ * @self: a header bar
  *
- * Returns whether this header bar shows the standard window
- * decorations.
+ * Gets whether this header bar shows the standard window decorations.
  *
- * Returns: %TRUE if the decorations are shown
+ * Returns: whether decorations are shown
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_header_bar_get_show_close_button (HdyHeaderBar *self)
@@ -2541,14 +2610,13 @@ hdy_header_bar_get_show_close_button (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_show_close_button:
- * @self: a #HdyHeaderBar
- * @setting: %TRUE to show standard window decorations
+ * hdy_header_bar_set_show_close_button: (attributes org.gtk.Method.set_property=show-close-button)
+ * @self: a header bar
+ * @setting: `TRUE` to show standard window decorations
  *
- * Sets whether this header bar shows the standard window decorations,
- * including close, maximize, and minimize.
+ * Sets whether this header bar shows the standard window decorations.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_show_close_button (HdyHeaderBar *self,
@@ -2571,14 +2639,13 @@ hdy_header_bar_set_show_close_button (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_set_has_subtitle:
- * @self: a #HdyHeaderBar
- * @setting: %TRUE to reserve space for a subtitle
+ * hdy_header_bar_set_has_subtitle: (attributes org.gtk.Method.set_property=has-subtitle)
+ * @self: a header bar
+ * @setting: `TRUE` to reserve space for a subtitle
  *
- * Sets whether the header bar should reserve space
- * for a subtitle, even if none is currently set.
+ * Sets whether space is reserved for a subtitle, even if none is currently set.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_has_subtitle (HdyHeaderBar *self,
@@ -2604,16 +2671,15 @@ hdy_header_bar_set_has_subtitle (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_has_subtitle:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_has_subtitle: (attributes org.gtk.Method.get_property=has-subtitle)
+ * @self: a header bar
  *
- * Retrieves whether the header bar reserves space for
- * a subtitle, regardless if one is currently set or not.
+ * Gets whether space is reserved for a subtitle, regardless if one is currently
+ * set or not.
  *
- * Returns: %TRUE if the header bar reserves space
- *     for a subtitle
+ * Returns: `TRUE` if the header bar reserves space for a subtitle
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_header_bar_get_has_subtitle (HdyHeaderBar *self)
@@ -2628,29 +2694,13 @@ hdy_header_bar_get_has_subtitle (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_decoration_layout:
- * @self: a #HdyHeaderBar
- * @layout: (nullable): a decoration layout, or %NULL to unset the layout
- *
- * Sets the decoration layout for this header bar, overriding
- * the #GtkSettings:gtk-decoration-layout setting.
- *
- * 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.
+ * hdy_header_bar_set_decoration_layout: (attributes org.gtk.Method.set_property=decoration-layout)
+ * @self: a header bar
+ * @layout: (nullable): a decoration layout
  *
- * The format of the string is button names, separated by commas.
- * A colon separates the buttons that should appear on the left
- * from those on the right. Recognized button names are minimize,
- * maximize, close, icon (the window icon) and menu (a menu button
- * for the fallback app menu).
+ * Sets the decoration layout for this header bar.
  *
- * For example, “menu:minimize,maximize,close” specifies a menu
- * on the left, and minimize, maximize and close buttons on the right.
- *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_decoration_layout (HdyHeaderBar *self,
@@ -2673,15 +2723,14 @@ hdy_header_bar_set_decoration_layout (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_decoration_layout:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_decoration_layout: (attributes org.gtk.Method.get_property=decoration-layout)
+ * @self: a header bar
  *
- * Gets the decoration layout set with
- * hdy_header_bar_set_decoration_layout().
+ * Gets the decoration layout.
  *
  * Returns: the decoration layout
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_header_bar_get_decoration_layout (HdyHeaderBar *self)
@@ -2696,14 +2745,14 @@ hdy_header_bar_get_decoration_layout (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_get_centering_policy:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_centering_policy: (attributes org.gtk.Method.get_property=centering-policy)
+ * @self: a header bar
  *
  * Gets the policy @self follows to horizontally align its center widget.
  *
  * Returns: the centering policy
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 HdyCenteringPolicy
 hdy_header_bar_get_centering_policy (HdyHeaderBar *self)
@@ -2716,13 +2765,13 @@ hdy_header_bar_get_centering_policy (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_centering_policy:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_set_centering_policy: (attributes org.gtk.Method.set_property=centering-policy)
+ * @self: a header bar
  * @centering_policy: the centering policy
  *
  * Sets the policy @self must follow to horizontally align its center widget.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_centering_policy (HdyHeaderBar       *self,
@@ -2744,15 +2793,14 @@ hdy_header_bar_set_centering_policy (HdyHeaderBar       *self,
 }
 
 /**
- * hdy_header_bar_get_transition_duration:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_transition_duration: (attributes org.gtk.Method.get_property=transition-duration)
+ * @self: a header bar
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between pages in @self will take.
+ * Gets the amount of time that transitions between pages will take.
  *
- * Returns: the transition duration
+ * Returns: the transition duration, in milliseconds
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 guint
 hdy_header_bar_get_transition_duration (HdyHeaderBar *self)
@@ -2765,14 +2813,13 @@ hdy_header_bar_get_transition_duration (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_transition_duration:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_set_transition_duration: (attributes org.gtk.Method.set_property=transition-duration)
+ * @self: a header bar
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between pages in @self
- * will take.
+ * Sets the duration that transitions between pages will take.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_transition_duration (HdyHeaderBar *self,
@@ -2790,15 +2837,14 @@ hdy_header_bar_set_transition_duration (HdyHeaderBar *self,
 }
 
 /**
- * hdy_header_bar_get_transition_running:
- * @self: a #HdyHeaderBar
+ * hdy_header_bar_get_transition_running: (attributes org.gtk.Method.get_property=transition-running)
+ * @self: a header bar
  *
- * Returns whether the @self is currently in a transition from one page to
- * another.
+ * Gets whether the @self is currently in a transition from one page to another.
  *
- * Returns: %TRUE if the transition is currently running, %FALSE otherwise.
+ * Returns: whether the transition is currently running
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_header_bar_get_transition_running (HdyHeaderBar *self)
@@ -2811,16 +2857,14 @@ hdy_header_bar_get_transition_running (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_get_interpolate_size:
- * @self: A #HdyHeaderBar
+ * hdy_header_bar_get_interpolate_size: (attributes org.gtk.Method.get_property=interpolate-size)
+ * @self: a header bar
  *
  * Gets whether @self should interpolate its size on visible child change.
  *
- * See hdy_header_bar_set_interpolate_size().
- *
- * Returns: %TRUE if @self interpolates its size on visible child change, %FALSE if not
+ * Returns: whether @self interpolates its size on visible child change
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_header_bar_get_interpolate_size (HdyHeaderBar *self)
@@ -2835,17 +2879,13 @@ hdy_header_bar_get_interpolate_size (HdyHeaderBar *self)
 }
 
 /**
- * hdy_header_bar_set_interpolate_size:
- * @self: A #HdyHeaderBar
- * @interpolate_size: %TRUE to interpolate the size
+ * hdy_header_bar_set_interpolate_size: (attributes org.gtk.Method.set_property=interpolate-size)
+ * @self: a header bar
+ * @interpolate_size: `TRUE` to interpolate the size
  *
- * Sets whether or not @self will interpolate the size of its opposing
- * orientation when changing the visible child. If %TRUE, @self 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 @self is horizontal, it will interpolate the its height.
+ * Sets whether @self should interpolate its size on visible child change.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_header_bar_set_interpolate_size (HdyHeaderBar *self,
diff --git a/src/hdy-header-bar.h b/src/hdy-header-bar.h
index 67b266c5..90c39802 100644
--- a/src/hdy-header-bar.h
+++ b/src/hdy-header-bar.h
@@ -43,7 +43,7 @@ typedef enum {
 
 /**
  * HdyHeaderBarClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyHeaderBarClass
 {
diff --git a/src/hdy-header-group.c b/src/hdy-header-group.c
index 07bff904..76664144 100644
--- a/src/hdy-header-group.c
+++ b/src/hdy-header-group.c
@@ -10,24 +10,24 @@
 #include "hdy-header-group.h"
 
 /**
- * SECTION:hdy-header-group
- * @short_description: An object handling composite title bars.
- * @Title: HdyHeaderGroup
- * @See_also: #GtkHeaderBar, #HdyHeaderBar, #HdyLeaflet
+ * HdyHeaderGroup:
  *
- * The #HdyHeaderGroup object handles the header bars of a composite title bar.
+ * 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 hdy_header_bar_set_decoration_layout().
+ * decorations to the rightmost header bar. See
+ * [method@HeaderBar.set_decoration_layout].
  *
- * The #HdyHeaderGroup:decorate-all property can be used in conjunction with
- * #HdyLeaflet:folded when the title bar is split across the pages of a
- * #HdyLeaflet to automatically display the decorations on all the pages when
- * the leaflet is folded.
+ * 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>
@@ -42,24 +42,33 @@
  *     <headerbar name="outer_header_bar"/>
  *   </headerbars>
  * </object>
- * ]|
+ * ```
  *
- * Since: 0.0.4
+ * Since: 1.0
  */
 
 /**
  * HdyHeaderGroupChildType:
- * @HDY_HEADER_GROUP_CHILD_TYPE_HEADER_BAR: The child is a #HdyHeaderBar
- * @HDY_HEADER_GROUP_CHILD_TYPE_GTK_HEADER_BAR: The child is a #GtkHeaderBar
- * @HDY_HEADER_GROUP_CHILD_TYPE_HEADER_GROUP: The child is a #HdyHeaderGroup
+ * @HDY_HEADER_GROUP_CHILD_TYPE_HEADER_BAR: The child is a [class@HeaderBar]
+ * @HDY_HEADER_GROUP_CHILD_TYPE_GTK_HEADER_BAR: The child is a
+ *   [class@Gtk.HeaderBar]
+ * @HDY_HEADER_GROUP_CHILD_TYPE_HEADER_GROUP: The child is a
+ *   [class@HeaderGroup]
  *
- * This enumeration value describes the child types handled by #HdyHeaderGroup.
+ * Describes the child types handled by [class@HeaderGroup].
  *
  * New values may be added to this enumeration over time.
  *
  * Since: 1.0
  */
 
+/**
+ * HdyHeaderGroupChild:
+ *
+ * A child object for [class@HeaderGroup].
+ *
+ * Since: 1.0
+ */
 struct _HdyHeaderGroupChild
 {
   GObject parent_instance;
@@ -399,6 +408,15 @@ child_destroyed_cb (HdyHeaderGroup      *self,
   g_object_unref (self);
 }
 
+/**
+ * hdy_header_group_new:
+ *
+ * Creates a new `HdyHeaderGroup`.
+ *
+ * Returns: the newly created `HdyHeaderGroup`
+ *
+ * Since: 1.0
+ */
 HdyHeaderGroup *
 hdy_header_group_new (void)
 {
@@ -424,12 +442,13 @@ hdy_header_group_add_child (HdyHeaderGroup      *self,
 
 /**
  * hdy_header_group_add_header_bar:
- * @self: a #HdyHeaderGroup
- * @header_bar: the #HdyHeaderBar to add
+ * @self: a header group
+ * @header_bar: 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.
+ *
+ * When the widget is destroyed or no longer referenced elsewhere, it will be
+ * removed from the header group.
  *
  * Since: 1.0
  */
@@ -449,12 +468,13 @@ hdy_header_group_add_header_bar (HdyHeaderGroup *self,
 
 /**
  * hdy_header_group_add_gtk_header_bar:
- * @self: a #HdyHeaderGroup
- * @header_bar: the #GtkHeaderBar to add
+ * @self: a header group
+ * @header_bar: 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.
+ *
+ * When the widget is destroyed or no longer referenced elsewhere, it will be
+ * removed from the header group.
  *
  * Since: 1.0
  */
@@ -474,10 +494,11 @@ hdy_header_group_add_gtk_header_bar (HdyHeaderGroup *self,
 
 /**
  * hdy_header_group_add_header_group:
- * @self: a #HdyHeaderGroup
- * @header_group: the #HdyHeaderGroup to add
+ * @self: a header group
+ * @header_group: the header group to add
  *
  * Adds @header_group to @self.
+ *
  * When the nested group is no longer referenced elsewhere, it will be removed
  * from the header group.
  *
@@ -574,18 +595,18 @@ hdy_header_group_set_property (GObject      *object,
 }
 
 /*< private >
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the markup parse context
  * @parent_name: the name of the expected parent element
  * @error: return location for an error
  *
- * Checks that the parent element of the currently handled
- * start tag is @parent_name and set @error if it isn't.
+ * Checks that the parent element of the currently handled start tag is
+ * @parent_name and set @error if it isn't.
  *
- * This is intended to be called in start_element vfuncs to
- * ensure that element nesting is as intended.
+ * This is intended to be called in start_element vfuncs to ensure that element
+ * nesting is as intended.
  *
- * Returns: %TRUE if @parent_name is the parent element
+ * Returns: `TRUE` if @parent_name is the parent element
  */
 /* This has been copied and modified from gtkbuilder.c. */
 static gboolean
@@ -620,17 +641,16 @@ _gtk_builder_check_parent (GtkBuilder           *builder,
 
 /*< private >
  * _gtk_builder_prefix_error:
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the markup parse context
  * @error: an error
  *
- * Calls g_prefix_error() to prepend a filename:line:column marker
- * to the given error. The filename is taken from @builder, and
- * the line and column are obtained by calling
- * g_markup_parse_context_get_position().
+ * Calls [func@GLib.prefix_error] to prepend a filename:line:column marker to
+ * the given error. The filename is taken from @builder, and the line and column
+ * are obtained by calling [method@GLib.MarkupParseContext.get_position].
  *
  * This is intended to be called on errors returned by
- * g_markup_collect_attributes() in a start_element vfunc.
+ * [method@GLib.Markup.collect_attributes] in a start_element vfunc.
  */
 /* This has been copied and modified from gtkbuilder.c. */
 static void
@@ -646,14 +666,14 @@ _gtk_builder_prefix_error (GtkBuilder           *builder,
 
 /*< private >
  * _gtk_builder_error_unhandled_tag:
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the markup parse context
  * @object: name of the object that is being handled
  * @element_name: name of the element whose start tag is being handled
  * @error: return location for the error
  *
- * Sets @error to a suitable error indicating that an @element_name
- * tag is not expected in the custom markup for @object.
+ * Sets @error to a suitable error indicating that an @element_name tag is not
+ * expected in the custom markup for @object.
  *
  * This is intended to be called in a start_element vfunc.
  */
@@ -817,12 +837,13 @@ hdy_header_group_class_init (HdyHeaderGroupClass *klass)
   object_class->set_property = hdy_header_group_set_property;
 
   /**
-   * HdyHeaderGroup:decorate-all:
+   * HdyHeaderGroup:decorate-all: (attributes org.gtk.Property.get=hdy_header_group_get_decorate_all 
org.gtk.Property.set=hdy_header_group_set_decorate_all)
    *
    * Whether the elements of the group should all receive the full decoration.
-   * This is useful in conjunction with #HdyLeaflet: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 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.
    *
    * Since: 1.0
    */
@@ -837,7 +858,6 @@ hdy_header_group_class_init (HdyHeaderGroupClass *klass)
 
   /**
    * HdyHeaderGroup::update-decoration-layouts:
-   * @self: The #HdyHeaderGroup instance
    *
    * This signal is emitted before updating the decoration layouts.
    *
@@ -870,12 +890,13 @@ hdy_header_group_buildable_init (GtkBuildableIface *iface)
 
 /**
  * hdy_header_group_child_get_header_bar:
- * @self: a #HdyHeaderGroupChild
+ * @self: a header group child
+ *
+ * Gets the child [class@HeaderBar].
  *
- * Gets the child #HdyHeaderBar.
- * Use hdy_header_group_child_get_child_type() to check the child type.
+ * Use [method@HeaderGroupChild.get_child_type] to check the child type.
  *
- * Returns: (transfer none): the child #HdyHeaderBar, or %NULL in case of error.
+ * Returns: (transfer none): the child headerbar
  *
  * Since: 1.0
  */
@@ -890,12 +911,13 @@ hdy_header_group_child_get_header_bar (HdyHeaderGroupChild *self)
 
 /**
  * hdy_header_group_child_get_gtk_header_bar:
- * @self: a #HdyHeaderGroupChild
+ * @self: a header group child
  *
- * Gets the child #GtkHeaderBar.
- * Use hdy_header_group_child_get_child_type() to check the child type.
+ * Gets the child [class@Gtk.HeaderBar].
  *
- * Returns: (transfer none): the child #GtkHeaderBar, or %NULL in case of error.
+ * Use [method@HeaderGroupChild.get_child_type] to check the child type.
+ *
+ * Returns: (transfer none): the child header bar
  *
  * Since: 1.0
  */
@@ -910,12 +932,13 @@ hdy_header_group_child_get_gtk_header_bar (HdyHeaderGroupChild *self)
 
 /**
  * hdy_header_group_child_get_header_group:
- * @self: a #HdyHeaderGroupChild
+ * @self: a header group child
+ *
+ * Gets the child [class@HeaderGroup].
  *
- * Gets the child #HdyHeaderGroup.
- * Use hdy_header_group_child_get_child_type() to check the child type.
+ * Use [method@HeaderGroupChild.get_child_type] to check the child type.
  *
- * Returns: (transfer none): the child #HdyHeaderGroup, or %NULL in case of error.
+ * Returns: (transfer none): the child header bar
  *
  * Since: 1.0
  */
@@ -930,11 +953,11 @@ hdy_header_group_child_get_header_group (HdyHeaderGroupChild *self)
 
 /**
  * hdy_header_group_child_get_child_type:
- * @self: a #HdyHeaderGroupChild
+ * @self: a header group child
  *
  * Gets the child type.
  *
- * Returns: the child type.
+ * Returns: the child type
  *
  * Since: 1.0
  */
@@ -948,12 +971,12 @@ hdy_header_group_child_get_child_type (HdyHeaderGroupChild *self)
 
 /**
  * hdy_header_group_get_children:
- * @self: a #HdyHeaderGroup
+ * @self: a header group
  *
  * Returns the list of children associated with @self.
  *
- * Returns: (element-type HdyHeaderGroupChild) (transfer none): the #GSList of
- *   children. The list is owned by libhandy and should not be modified.
+ * Returns: (element-type HdyHeaderGroupChild) (transfer none): the list of
+ *   children
  *
  * Since: 1.0
  */
@@ -979,8 +1002,8 @@ remove_child (HdyHeaderGroup      *self,
 
 /**
  * hdy_header_group_remove_header_bar:
- * @self: a #HdyHeaderGroup
- * @header_bar: the #HdyHeaderBar to remove
+ * @self: a header group
+ * @header_bar: the header bar to remove
  *
  * Removes @header_bar from @self.
  *
@@ -1004,8 +1027,8 @@ hdy_header_group_remove_header_bar (HdyHeaderGroup *self,
 
 /**
  * hdy_header_group_remove_gtk_header_bar:
- * @self: a #HdyHeaderGroup
- * @header_bar: the #GtkHeaderBar to remove
+ * @self: a header group
+ * @header_bar: the header bar to remove
  *
  * Removes @header_bar from @self.
  *
@@ -1029,10 +1052,10 @@ hdy_header_group_remove_gtk_header_bar (HdyHeaderGroup *self,
 
 /**
  * hdy_header_group_remove_header_group:
- * @self: a #HdyHeaderGroup
- * @header_group: the #HdyHeaderGroup to remove
+ * @self: a header group
+ * @header_group: the header group to remove
  *
- * Removes a nested #HdyHeaderGroup from a #HdyHeaderGroup
+ * Removes a nested `HdyHeaderGroup` from @self.
  *
  * Since: 1.0
  */
@@ -1054,8 +1077,8 @@ hdy_header_group_remove_header_group (HdyHeaderGroup *self,
 
 /**
  * hdy_header_group_remove_child:
- * @self: a #HdyHeaderGroup
- * @child: the #HdyHeaderGroupChild to remove
+ * @self: a header group
+ * @child: the header group child to remove
  *
  * Removes @child from @self.
  *
@@ -1073,11 +1096,13 @@ hdy_header_group_remove_child (HdyHeaderGroup      *self,
 }
 
 /**
- * hdy_header_group_set_decorate_all:
- * @self: a #HdyHeaderGroup
- * @decorate_all: whether the elements of the group should all receive the full decoration
+ * hdy_header_group_set_decorate_all: (attributes org.gtk.Method.set_property=decorate-all)
+ * @self: a header group
+ * @decorate_all: whether the elements of the group should all receive the full
+ *   decoration
  *
- * Sets whether the elements of the group should all receive the full decoration.
+ * Sets whether the elements of the group should all receive the full
+ * decoration.
  *
  * Since: 1.0
  */
@@ -1100,13 +1125,14 @@ hdy_header_group_set_decorate_all (HdyHeaderGroup *self,
 }
 
 /**
- * hdy_header_group_get_decorate_all:
- * @self: a #HdyHeaderGroup
+ * hdy_header_group_get_decorate_all: (attributes org.gtk.Method.get_property=decorate-all)
+ * @self: a header group
  *
- * Gets whether the elements of the group should all receive the full decoration.
+ * Gets whether the elements of the group should all receive the full
+ * decoration.
  *
- * Returns: %TRUE if the elements of the group should all receive the full
- *   decoration, %FALSE otherwise.
+ * Returns: whether the elements of the group should all receive the full
+ *   decoration
  *
  * Since: 1.0
  */
diff --git a/src/hdy-keypad-button.c b/src/hdy-keypad-button.c
index bee4abce..02c6deec 100644
--- a/src/hdy-keypad-button.c
+++ b/src/hdy-keypad-button.c
@@ -10,13 +10,13 @@
 #include "hdy-keypad-button-private.h"
 
 /**
- * PRIVATE:hdy-keypad-button
- * @short_description: A button on a #HdyKeypad keypad
- * @Title: HdyKeypadButton
+ * HdyKeypadButton:
  *
- * The #HdyKeypadButton widget is a single button on an #HdyKeypad. It
- * can represent a single symbol (typically a digit) plus an arbitrary
- * number of symbols that are displayed below it.
+ * A button on a [class@Keypad] keypad
+ *
+ * The [class@KeypadButton] widget is a single button on an [class@Keypad]. It
+ * can represent a single symbol (typically a digit) plus an arbitrary number of
+ * symbols that are displayed below it.
  */
 
 enum {
@@ -259,12 +259,12 @@ hdy_keypad_button_init (HdyKeypadButton *self)
 
 /**
  * hdy_keypad_button_new:
- * @symbols: (nullable): the symbols displayed on the #HdyKeypadButton
+ * @symbols: (nullable): the symbols displayed on the keypad button
  *
- * Create a new #HdyKeypadButton which displays @symbols,
- * where the first char is used as the main and the other symbols are shown below
+ * Creates a new [class@KeypadButton] which displays @symbols, where the first
+ * char is used as the main and the other symbols are shown below.
  *
- * Returns: the newly created #HdyKeypadButton widget
+ * Returns: the newly created `HdyKeypadButton`
  */
 GtkWidget *
 hdy_keypad_button_new (const gchar *symbols)
@@ -274,9 +274,9 @@ hdy_keypad_button_new (const gchar *symbols)
 
 /**
  * hdy_keypad_button_get_digit:
- * @self: a #HdyKeypadButton
+ * @self: a keypad button
  *
- * Get the #HdyKeypadButton's digit.
+ * Get the [class@KeypadButton]'s digit.
  *
  * Returns: the button's digit
  */
@@ -293,11 +293,11 @@ hdy_keypad_button_get_digit (HdyKeypadButton *self)
 
 /**
  * hdy_keypad_button_get_symbols:
- * @self: a #HdyKeypadButton
+ * @self: a keypad button
  *
- * Get the #HdyKeypadButton's symbols.
+ * Get the [class@KeypadButton]'s symbols.
  *
- * Returns: the button's symbols including the digit.
+ * Returns: the button's symbols including the digit
  */
 const char*
 hdy_keypad_button_get_symbols (HdyKeypadButton *self)
@@ -309,11 +309,10 @@ hdy_keypad_button_get_symbols (HdyKeypadButton *self)
 
 /**
  * hdy_keypad_button_show_symbols:
- * @self: a #HdyKeypadButton
+ * @self: a keypad button
  * @visible: whether the second line should be shown or not
  *
- * Sets the visibility of the second line of symbols for #HdyKeypadButton
- *
+ * Sets the visibility of the second line of symbols for [class@KeypadButton].
  */
 void
 hdy_keypad_button_show_symbols (HdyKeypadButton *self, gboolean visible)
diff --git a/src/hdy-keypad.c b/src/hdy-keypad.c
index 08b6d4b0..36210b7f 100644
--- a/src/hdy-keypad.c
+++ b/src/hdy-keypad.c
@@ -11,18 +11,18 @@
 #include "hdy-keypad-button-private.h"
 
 /**
- * SECTION:hdy-keypad
- * @short_description: A keypad for dialing numbers
- * @Title: HdyKeypad
+ * HdyKeypad:
  *
- * The #HdyKeypad widget is a keypad for entering numbers such as phone numbers
+ * A keypad for dialing numbers
+ *
+ * The `HdyKeypad` widget is a keypad for entering numbers such as phone numbers
  * or PIN codes.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyKeypad has a single CSS node with name keypad.
+ * `HdyKeypad` has a single CSS node with name `keypad`.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 
 typedef struct
@@ -247,7 +247,7 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
   object_class->get_property = hdy_keypad_get_property;
 
   /**
-   * HdyKeypad:row-spacing:
+   * HdyKeypad:row-spacing: (attributes org.gtk.Property.get=hdy_keypad_get_row_spacing 
org.gtk.Property.set=hdy_keypad_set_row_spacing)
    *
    * The amount of space between two consecutive rows.
    *
@@ -261,7 +261,7 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:column-spacing:
+   * HdyKeypad:column-spacing: (attributes org.gtk.Property.get=hdy_keypad_get_column_spacing 
org.gtk.Property.set=hdy_keypad_set_column_spacing)
    *
    * The amount of space between two consecutive columns.
    *
@@ -275,10 +275,10 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:letters-visible:
+   * HdyKeypad:letters-visible: (attributes org.gtk.Property.get=hdy_keypad_get_letters_visible 
org.gtk.Property.set=hdy_keypad_set_letters_visible)
    *
-   * Whether the keypad should display the standard letters below the digits on
-   * its buttons.
+   * Whether standard letters should be displayed below the digits on the
+   * buttons.
    *
    * Since: 1.0
    */
@@ -290,10 +290,12 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:symbols-visible:
+   * HdyKeypad:symbols-visible: (attributes org.gtk.Property.get=hdy_keypad_get_symbols_visible 
org.gtk.Property.set=hdy_keypad_set_symbols_visible)
    *
-   * Whether the keypad should display the hash and asterisk buttons, and should
-   * display the plus symbol at the bottom of its 0 button.
+   * Whether to display symbols.
+   *
+   * This includes hash and asterisk buttons, and the plus symbol at the bottom
+   * of its 0 button.
    *
    * Since: 1.0
    */
@@ -305,10 +307,11 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:entry:
+   * HdyKeypad:entry: (attributes org.gtk.Property.get=hdy_keypad_get_entry 
org.gtk.Property.set=hdy_keypad_set_entry)
+   *
+   * The entry widget connected to the keypad.
    *
-   * The entry widget connected to the keypad. See hdy_keypad_set_entry() for
-   * details.
+   * The entry will block any input not possible to type with the keypad.
    *
    * Since: 1.0
    */
@@ -320,7 +323,7 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:end-action:
+   * HdyKeypad:end-action: (attributes org.gtk.Property.get=hdy_keypad_get_end_action 
org.gtk.Property.set=hdy_keypad_set_end_action)
    *
    * The widget for the lower end corner of @self.
    *
@@ -334,7 +337,7 @@ hdy_keypad_class_init (HdyKeypadClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyKeypad:start-action:
+   * HdyKeypad:start-action: (attributes org.gtk.Property.get=hdy_keypad_get_start_action 
org.gtk.Property.set=hdy_keypad_set_start_action)
    *
    * The widget for the lower start corner of @self.
    *
@@ -387,11 +390,11 @@ hdy_keypad_init (HdyKeypad *self)
  * @symbols_visible: whether the hash, plus, and asterisk symbols should be visible
  * @letters_visible: whether the letters below the digits should be visible
  *
- * Create a new #HdyKeypad widget.
+ * Creates a new `HdyKeypad`.
  *
- * Returns: the newly created #HdyKeypad widget
+ * Returns: the newly created `HdyKeypad`
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 GtkWidget *
 hdy_keypad_new (gboolean symbols_visible,
@@ -405,7 +408,7 @@ hdy_keypad_new (gboolean symbols_visible,
 
 /**
  * hdy_keypad_set_row_spacing:
- * @self: a #HdyKeypad
+ * @self: a keypad
  * @spacing: the amount of space to insert between rows
  *
  * Sets the amount of space between rows of @self.
@@ -433,8 +436,8 @@ hdy_keypad_set_row_spacing (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_row_spacing:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_row_spacing: (attributes org.gtk.Method.get_property=row-spacing)
+ * @self: a keypad
  *
  * Returns the amount of space between the rows of @self.
  *
@@ -456,8 +459,8 @@ hdy_keypad_get_row_spacing (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_column_spacing:
- * @self: a #HdyKeypad
+ * hdy_keypad_set_column_spacing: (attributes org.gtk.Method.set_property=column-spacing)
+ * @self: a keypad
  * @spacing: the amount of space to insert between columns
  *
  * Sets the amount of space between columns of @self.
@@ -485,8 +488,8 @@ hdy_keypad_set_column_spacing (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_column_spacing:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_column_spacing: (attributes org.gtk.Method.get_property=column-spacing)
+ * @self: a keypad
  *
  * Returns the amount of space between the columns of @self.
  *
@@ -508,12 +511,11 @@ hdy_keypad_get_column_spacing (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_letters_visible:
- * @self: a #HdyKeypad
+ * hdy_keypad_set_letters_visible: (attributes org.gtk.Method.set_property=letters-visible)
+ * @self: a keypad
  * @letters_visible: whether the letters below the digits should be visible
  *
- * Sets whether @self should display the standard letters below the digits on
- * its buttons.
+ * Sets whether standard letters are displayed below the digits on the buttons.
  *
  * Since: 1.0
  */
@@ -537,11 +539,10 @@ hdy_keypad_set_letters_visible (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_letters_visible:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_letters_visible: (attributes org.gtk.Method.get_property=letters-visible)
+ * @self: a keypad
  *
- * Returns whether @self should display the standard letters below the digits on
- * its buttons.
+ * Gets whether standard letters are displayed below the digits on the buttons.
  *
  * Returns: whether the letters below the digits should be visible
  *
@@ -561,12 +562,11 @@ hdy_keypad_get_letters_visible (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_symbols_visible:
- * @self: a #HdyKeypad
+ * hdy_keypad_set_symbols_visible: (attributes org.gtk.Method.set_property=symbols-visible)
+ * @self: a keypad
  * @symbols_visible: whether the hash, plus, and asterisk symbols should be visible
  *
- * Sets whether @self should display the hash and asterisk buttons, and should
- * display the plus symbol at the bottom of its 0 button.
+ * Sets whether standard letters are displayed below the digits on the buttons.
  *
  * Since: 1.0
  */
@@ -590,16 +590,12 @@ hdy_keypad_set_symbols_visible (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_symbols_visible:
- * @self: a #HdyKeypad
- *
- * Returns whether @self should display the standard letters below the digits on
- * its buttons.
+ * hdy_keypad_get_symbols_visible: (attributes org.gtk.Method.get_property=symbols-visible)
+ * @self: a keypad
  *
- * Returns Whether @self should display the hash and asterisk buttons, and
- * should display the plus symbol at the bottom of its 0 button.
+ * Gets whether symbols are displayed.
  *
- * Returns: whether the hash, plus, and asterisk symbols should be visible
+ * Returns: whether symboles are visible
  *
  * Since: 1.0
  */
@@ -617,14 +613,13 @@ hdy_keypad_get_symbols_visible (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_entry:
- * @self: a #HdyKeypad
- * @entry: (nullable): a #GtkEntry
+ * hdy_keypad_set_entry: (attributes org.gtk.Method.set_property=entry)
+ * @self: a keypad
+ * @entry: (nullable): an entry
  *
- * Binds @entry to @self and blocks any input which wouldn't be possible to type
- * with with the keypad.
+ * Binds @entry to @self.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_keypad_set_entry (HdyKeypad *self,
@@ -661,12 +656,12 @@ hdy_keypad_set_entry (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_entry:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_entry: (attributes org.gtk.Method.get_property=entry)
+ * @self: a keypad
  *
- * Get the connected entry. See hdy_keypad_set_entry() for details.
+ * Gets the connected entry.
  *
- * Returns: (transfer none): the set #GtkEntry or %NULL if no widget was set
+ * Returns: (transfer none): the entry set
  *
  * Since: 1.0
  */
@@ -684,12 +679,11 @@ hdy_keypad_get_entry (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_start_action:
- * @self: a #HdyKeypad
+ * hdy_keypad_set_start_action: (attributes org.gtk.Method.set_property=start-action)
+ * @self: a keypad
  * @start_action: (nullable): the start action widget
  *
- * Sets the widget for the lower left corner (or right, in RTL locales) of
- * @self.
+ * Sets the widget for the lower left corner (or right, in RTL locales).
  *
  * Since: 1.0
  */
@@ -721,11 +715,10 @@ hdy_keypad_set_start_action (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_start_action:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_start_action: (attributes org.gtk.Method.get_property=start-action)
+ * @self: a keypad
  *
- * Returns the widget for the lower left corner (or right, in RTL locales) of
- * @self.
+ * Gets the widget for the lower left corner (or right, in RTL locales).
  *
  * Returns: (transfer none) (nullable): the start action widget
  *
@@ -745,12 +738,11 @@ hdy_keypad_get_start_action (HdyKeypad *self)
 
 
 /**
- * hdy_keypad_set_end_action:
- * @self: a #HdyKeypad
+ * hdy_keypad_set_end_action: (attributes org.gtk.Method.set_property=end-action)
+ * @self: a keypad
  * @end_action: (nullable): the end action widget
  *
- * Sets the widget for the lower right corner (or left, in RTL locales) of
- * @self.
+ * Sets the widget for the lower right corner (or left, in RTL locales).
  *
  * Since: 1.0
  */
@@ -782,11 +774,10 @@ hdy_keypad_set_end_action (HdyKeypad *self,
 
 
 /**
- * hdy_keypad_get_end_action:
- * @self: a #HdyKeypad
+ * hdy_keypad_get_end_action: (attributes org.gtk.Method.get_property=end-action)
+ * @self: a keypad
  *
- * Returns the widget for the lower right corner (or left, in RTL locales) of
- * @self.
+ * Gets the widget for the lower right corner (or left, in RTL locales).
  *
  * Returns: (transfer none) (nullable): the end action widget
  *
diff --git a/src/hdy-keypad.h b/src/hdy-keypad.h
index f370c215..5e983bc1 100644
--- a/src/hdy-keypad.h
+++ b/src/hdy-keypad.h
@@ -23,7 +23,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyKeypad, hdy_keypad, HDY, KEYPAD, GtkBin)
 
 /**
  * HdyKeypadClass:
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyKeypadClass
 {
diff --git a/src/hdy-leaflet.c b/src/hdy-leaflet.c
index 4da95885..46a530f7 100644
--- a/src/hdy-leaflet.c
+++ b/src/hdy-leaflet.c
@@ -13,50 +13,62 @@
 #include "hdy-swipeable.h"
 
 /**
- * SECTION:hdy-leaflet
- * @short_description: An adaptive container acting like a box or a stack.
- * @Title: HdyLeaflet
+ * HdyLeaflet:
  *
- * The #HdyLeaflet widget can display its children like a #GtkBox does or
- * like a #GtkStack does, adapting to size changes by switching between
- * the two modes.
+ * 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.
+ * 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” 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” 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 #HdyWindow or #HdyApplicationWindow as they will crop anything drawn
- * beyond the rounded corners.
+ * 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
+ * ## 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.
+ * `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.
+ *
+ * Since: 1.0
  */
 
 /**
  * HdyLeafletTransitionType:
- * @HDY_LEAFLET_TRANSITION_TYPE_OVER: Cover the old page or uncover the new page, sliding from or towards 
the end according to orientation, text direction and children order
- * @HDY_LEAFLET_TRANSITION_TYPE_UNDER: Uncover the new page or cover the old page, sliding from or towards 
the start according to orientation, text direction and children order
- * @HDY_LEAFLET_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down according to the orientation, text 
direction and the children order
+ * @HDY_LEAFLET_TRANSITION_TYPE_OVER: Cover the old page or uncover the new
+ *   page, sliding from or towards the end according to orientation, text
+ *   direction and children order
+ * @HDY_LEAFLET_TRANSITION_TYPE_UNDER: Uncover the new page or cover the old
+ *   page, sliding from or towards the start according to orientation, text
+ *   direction and children order
+ * @HDY_LEAFLET_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down
+ *   according to the orientation, text direction and the children order
  *
- * This enumeration value describes the possible transitions between modes and
- * children in a #HdyLeaflet widget.
+ * Describes the possible transitions in a [class@Leaflet] widget.
  *
  * New values may be added to this enumeration over time.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 
 enum {
@@ -106,12 +118,14 @@ G_DEFINE_TYPE_WITH_CODE (HdyLeaflet, hdy_leaflet, GTK_TYPE_CONTAINER,
 #define HDY_GET_HELPER(obj) (((HdyLeafletPrivate *) hdy_leaflet_get_instance_private (HDY_LEAFLET 
(obj)))->box)
 
 /**
- * hdy_leaflet_get_folded:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_folded: (attributes org.gtk.Method.get_property=folded)
+ * @self: a leaflet
  *
  * Gets whether @self is folded.
  *
- * Returns: whether @self is folded.
+ * Returns: whether @self is folded
+ *
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_folded (HdyLeaflet *self)
@@ -123,16 +137,19 @@ hdy_leaflet_get_folded (HdyLeaflet *self)
 
 /**
  * hdy_leaflet_set_homogeneous:
- * @self: a #HdyLeaflet
+ * @self: a leaflet
  * @folded: the fold
  * @orientation: the orientation
- * @homogeneous: %TRUE to make @self homogeneous
+ * @homogeneous: `TRUE` to make @self homogeneous
  *
- * Sets the #HdyLeaflet to be homogeneous or not for the given fold and orientation.
- * If it is homogeneous, the #HdyLeaflet 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.
+ * 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.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_homogeneous (HdyLeaflet     *self,
@@ -147,14 +164,15 @@ hdy_leaflet_set_homogeneous (HdyLeaflet     *self,
 
 /**
  * hdy_leaflet_get_homogeneous:
- * @self: a #HdyLeaflet
+ * @self: a leaflet
  * @folded: the fold
  * @orientation: the orientation
  *
  * Gets whether @self is homogeneous for the given fold and orientation.
- * See hdy_leaflet_set_homogeneous().
  *
- * Returns: whether @self is homogeneous for the given fold and orientation.
+ * Returns: whether @self is homogeneous for the given fold and orientation
+ *
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_homogeneous (HdyLeaflet     *self,
@@ -167,15 +185,15 @@ hdy_leaflet_get_homogeneous (HdyLeaflet     *self,
 }
 
 /**
- * hdy_leaflet_get_transition_type:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_transition_type: (attributes org.gtk.Method.get_property=transition-type)
+ * @self: a leaflet
  *
- * Gets the type of animation that will be used
- * for transitions between modes and children in @self.
+ * Gets the animation type that will be used for transitions between modes and
+ * children.
  *
  * Returns: the current transition type of @self
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 HdyLeafletTransitionType
 hdy_leaflet_get_transition_type (HdyLeaflet *self)
@@ -202,18 +220,18 @@ hdy_leaflet_get_transition_type (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_transition_type:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_transition_type: (attributes org.gtk.Method.set_property=transition-type)
+ * @self: a leaflet
  * @transition: the new transition type
  *
- * Sets the type of animation that will be used for transitions between modes
- * and children in @self.
+ * 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.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_transition_type (HdyLeaflet               *self,
@@ -245,13 +263,14 @@ hdy_leaflet_set_transition_type (HdyLeaflet               *self,
 }
 
 /**
- * hdy_leaflet_get_mode_transition_duration:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_mode_transition_duration: (attributes 
org.gtk.Method.get_property=mode-transition-duration)
+ * @self: a leaflet
+ *
+ * Gets the amount of time that transitions between modes in @self will take.
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between modes in @self will take.
+ * Returns: the mode transition duration, in milliseconds
  *
- * Returns: the mode transition duration
+ * Since: 1.0
  */
 guint
 hdy_leaflet_get_mode_transition_duration (HdyLeaflet *self)
@@ -262,12 +281,13 @@ hdy_leaflet_get_mode_transition_duration (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_mode_transition_duration:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_mode_transition_duration: (attributes 
org.gtk.Method.set_property=mode-transition-duration)
+ * @self: a leaflet
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between modes in @self
- * will take.
+ * Sets the duration that transitions between modes in @self will take.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_mode_transition_duration (HdyLeaflet *self,
@@ -279,13 +299,14 @@ hdy_leaflet_set_mode_transition_duration (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_child_transition_duration:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_child_transition_duration: (attributes 
org.gtk.Method.get_property=child-transition-duration)
+ * @self: a leaflet
+ *
+ * Gets the amount of time that transitions between children will take.
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between children in @self will take.
+ * Returns: the child transition duration, in milliseconds
  *
- * Returns: the child transition duration
+ * Since: 1.0
  */
 guint
 hdy_leaflet_get_child_transition_duration (HdyLeaflet *self)
@@ -296,12 +317,13 @@ hdy_leaflet_get_child_transition_duration (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_child_transition_duration:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_child_transition_duration: (attributes 
org.gtk.Method.set_property=child-transition-duration)
+ * @self: a leaflet
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between children in @self
- * will take.
+ * Sets the duration that transitions between children in @self will take.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_child_transition_duration (HdyLeaflet *self,
@@ -313,12 +335,14 @@ hdy_leaflet_set_child_transition_duration (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_visible_child:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_visible_child: (attributes org.gtk.Method.get_property=visible-child)
+ * @self: a leaflet
  *
  * Gets the visible child widget.
  *
  * Returns: (transfer none): the visible child widget
+ *
+ * Since: 1.0
  */
 GtkWidget *
 hdy_leaflet_get_visible_child (HdyLeaflet *self)
@@ -329,14 +353,13 @@ hdy_leaflet_get_visible_child (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_visible_child:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_visible_child: (attributes org.gtk.Method.set_property=visible-child)
+ * @self: a leaflet
  * @visible_child: the new child
  *
- * Makes @visible_child visible using a transition determined by
- * HdyLeaflet:transition-type and HdyLeaflet:child-transition-duration. The
- * transition can be cancelled by the user, in which case visible child will
- * change back to the previously visible child.
+ * Sets the currently visible widget when the leaflet is folded.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_visible_child (HdyLeaflet *self,
@@ -348,12 +371,14 @@ hdy_leaflet_set_visible_child (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_visible_child_name:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_visible_child_name: (attributes org.gtk.Method.get_property=visible-child-name)
+ * @self: a leaflet
  *
  * Gets the name of the currently visible child widget.
  *
  * Returns: (transfer none): the name of the visible child
+ *
+ * Since: 1.0
  */
 const gchar *
 hdy_leaflet_get_visible_child_name (HdyLeaflet *self)
@@ -364,13 +389,15 @@ hdy_leaflet_get_visible_child_name (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_visible_child_name:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_visible_child_name: (attributes org.gtk.Method.set_property=visible-child-name)
+ * @self: a leaflet
  * @name: the name of a child
  *
  * Makes the child with the name @name visible.
  *
- * See hdy_leaflet_set_visible_child() for more details.
+ * See [method@Leaflet.set_visible_child] for more details.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_visible_child_name (HdyLeaflet  *self,
@@ -382,13 +409,14 @@ hdy_leaflet_set_visible_child_name (HdyLeaflet  *self,
 }
 
 /**
- * hdy_leaflet_get_child_transition_running:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_child_transition_running: (attributes 
org.gtk.Method.get_property=child-transition-running)
+ * @self: a leaflet
  *
- * Returns whether @self is currently in a transition from one page to
- * another.
+ * Returns whether @self is currently in a transition from one page to another.
  *
- * Returns: %TRUE if the transition is currently running, %FALSE otherwise.
+ * Returns: whether a transition is currently running
+ *
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_child_transition_running (HdyLeaflet *self)
@@ -399,15 +427,17 @@ hdy_leaflet_get_child_transition_running (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_interpolate_size:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_interpolate_size: (attributes org.gtk.Method.set_property=interpolate-size)
+ * @self: a leaflet
  * @interpolate_size: the new value
  *
- * Sets whether or not @self will interpolate its size when
- * changing the visible child. If the #HdyLeaflet: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.
+ * 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.
+ *
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_interpolate_size (HdyLeaflet *self,
@@ -419,13 +449,14 @@ hdy_leaflet_set_interpolate_size (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_interpolate_size:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_interpolate_size: (attributes org.gtk.Method.get_property=interpolate-size)
+ * @self: a leaflet
+ *
+ * Gets whether to interpolate between the sizes of children on page switches.
  *
- * Returns whether the #HdyLeaflet is set up to interpolate between
- * the sizes of children on page switch.
+ * Returns: `TRUE` if child sizes are interpolated
  *
- * Returns: %TRUE if child sizes are interpolated
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_interpolate_size (HdyLeaflet *self)
@@ -436,14 +467,13 @@ hdy_leaflet_get_interpolate_size (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_can_swipe_back:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_can_swipe_back: (attributes org.gtk.Method.set_property=can-swipe-back)
+ * @self: a leaflet
  * @can_swipe_back: the new value
  *
- * Sets whether or not @self allows switching to the previous child that has
- * 'navigatable' child property set to %TRUE via a swipe gesture
+ * Sets whether swipe gestures switch to the previous navigatable child.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_can_swipe_back (HdyLeaflet *self,
@@ -455,14 +485,14 @@ hdy_leaflet_set_can_swipe_back (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_can_swipe_back
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_can_swipe_back: (attributes org.gtk.Method.get_property=can-swipe-back)
+ * @self: a leaflet
  *
- * Returns whether the #HdyLeaflet allows swiping to the previous child.
+ * Gets whether swipe gestures switch to the previous navigatable child.
  *
- * Returns: %TRUE if back swipe is enabled.
+ * Returns: `TRUE` if back swipe is enabled
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_can_swipe_back (HdyLeaflet *self)
@@ -473,14 +503,13 @@ hdy_leaflet_get_can_swipe_back (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_set_can_swipe_forward:
- * @self: a #HdyLeaflet
+ * hdy_leaflet_set_can_swipe_forward: (attributes org.gtk.Method.set_property=can-swipe-forward)
+ * @self: a leaflet
  * @can_swipe_forward: the new value
  *
- * Sets whether or not @self allows switching to the next child that has
- * 'navigatable' child property set to %TRUE via a swipe gesture.
+ * Sets whether swipe gestures switch to the next navigatable child.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_leaflet_set_can_swipe_forward (HdyLeaflet *self,
@@ -492,14 +521,14 @@ hdy_leaflet_set_can_swipe_forward (HdyLeaflet *self,
 }
 
 /**
- * hdy_leaflet_get_can_swipe_forward
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_can_swipe_forward: (attributes org.gtk.Method.get_property=can-swipe-forward)
+ * @self: a leaflet
  *
- * Returns whether the #HdyLeaflet allows swiping to the next child.
+ * Gets whether swipe gestures switch to the next navigatable child.
  *
- * Returns: %TRUE if forward swipe is enabled.
+ * Returns: `TRUE` if forward swipe is enabled
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 gboolean
 hdy_leaflet_get_can_swipe_forward (HdyLeaflet *self)
@@ -510,16 +539,17 @@ hdy_leaflet_get_can_swipe_forward (HdyLeaflet *self)
 }
 
 /**
- * hdy_leaflet_get_adjacent_child
- * @self: a #HdyLeaflet
+ * hdy_leaflet_get_adjacent_child:
+ * @self: a leaflet
  * @direction: the direction
  *
- * Gets the previous or next child that doesn't have 'navigatable' child
- * property set to %FALSE, or %NULL if it doesn't exist. This will be the same
- * widget hdy_leaflet_navigate() will navigate to.
+ * 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.
  *
- * Returns: (nullable) (transfer none): the previous or next child, or
- *   %NULL if it doesn't exist.
+ * Returns: (nullable) (transfer none): the previous or next child
  *
  * Since: 1.0
  */
@@ -533,15 +563,15 @@ hdy_leaflet_get_adjacent_child (HdyLeaflet             *self,
 }
 
 /**
- * hdy_leaflet_navigate
- * @self: a #HdyLeaflet
+ * hdy_leaflet_navigate:
+ * @self: a leaflet
  * @direction: the direction
  *
- * Switches to the previous or next child that doesn't have 'navigatable' child
- * property set to %FALSE, similar to performing a swipe gesture to go in
- * @direction.
+ * Navigates to the previous or next navigatable child.
  *
- * Returns: %TRUE if visible child was changed, %FALSE otherwise.
+ * The switch is similar to performing a swipe gesture to go in @direction.
+ *
+ * Returns: whether the visible child was changed
  *
  * Since: 1.0
  */
@@ -556,11 +586,12 @@ hdy_leaflet_navigate (HdyLeaflet             *self,
 
 /**
  * hdy_leaflet_get_child_by_name:
- * @self: a #HdyLeaflet
+ * @self: a leaflet
  * @name: the name of the child to find
  *
- * Finds the child of @self with the name given as the argument. Returns %NULL
- * if there is no child with this name.
+ * Finds the child of @self with the name given as the argument.
+ *
+ * Returns `NULL` if there is no child with this name.
  *
  * Returns: (transfer none) (nullable): the requested child of @self
  *
@@ -577,8 +608,8 @@ hdy_leaflet_get_child_by_name (HdyLeaflet  *self,
 
 /**
  * hdy_leaflet_prepend:
- * @self: a #HdyLeaflet
- * @child: the #GtkWidget to prepend
+ * @self: a leaflet
+ * @child: the widget to prepend
  *
  * Inserts @child at the first position in @self.
  *
@@ -597,12 +628,13 @@ hdy_leaflet_prepend (HdyLeaflet *self,
 
 /**
  * hdy_leaflet_insert_child_after:
- * @self: a #HdyLeaflet
- * @child: the #GtkWidget to insert
+ * @self: a leaflet
+ * @child: the widget to insert
  * @sibling: (nullable): the sibling after which to insert @child
  *
  * Inserts @child in the position after @sibling in the list of children.
- * If @sibling is %NULL, insert @child at the first position.
+ *
+ * If @sibling is `NULL`, inserts @child at the first position.
  *
  * Since: 1.2
  */
@@ -623,12 +655,13 @@ hdy_leaflet_insert_child_after (HdyLeaflet *self,
 
 /**
  * hdy_leaflet_reorder_child_after:
- * @self: a #HdyLeaflet
- * @child: the #GtkWidget to move, must be a child of @self
- * @sibling: (nullable): the sibling to move @child after, or %NULL
+ * @self: a leaflet
+ * @child: the widget to move, must be a child of @self
+ * @sibling: (nullable): the sibling to move @child after
  *
  * Moves @child to the position after @sibling in the list of children.
- * If @sibling is %NULL, move @child to the first position.
+ *
+ * If @sibling is `NULL`, move @child to the first position.
  *
  * Since: 1.2
  */
@@ -1012,12 +1045,14 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                                     "orientation");
 
   /**
-   * HdyLeaflet:folded:
+   * HdyLeaflet:folded: (attributes org.gtk.Property.get=hdy_leaflet_get_folded)
    *
-   * %TRUE if the leaflet is folded.
+   * 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.
+   *
+   * Since: 1.0
    */
   props[PROP_FOLDED] =
     g_param_spec_boolean ("folded",
@@ -1027,9 +1062,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                           G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:hhomogeneous_folded:
+   * HdyLeaflet:hhomogeneous-folded: (attributes org.gtk.Property.get=hdy_leaflet_get_homogeneous 
org.gtk.Property.set=hdy_leaflet_set_homogeneous)
    *
-   * %TRUE if the leaflet allocates the same width for all children when folded.
+   * Whether to allocate the same width for all children when folded.
+   *
+   * Since: 1.0
    */
   props[PROP_HHOMOGENEOUS_FOLDED] =
     g_param_spec_boolean ("hhomogeneous-folded",
@@ -1039,9 +1076,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:vhomogeneous_folded:
+   * HdyLeaflet:vhomogeneous-folded: (attributes org.gtk.Property.get=hdy_leaflet_get_homogeneous 
org.gtk.Property.set=hdy_leaflet_set_homogeneous)
+   *
+   * Whether to allocates the same height for all children when folded.
    *
-   * %TRUE if the leaflet allocates the same height for all children when folded.
+   * Since: 1.0
    */
   props[PROP_VHOMOGENEOUS_FOLDED] =
     g_param_spec_boolean ("vhomogeneous-folded",
@@ -1051,9 +1090,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:hhomogeneous_unfolded:
+   * HdyLeaflet:hhomogeneous-unfolded: (attributes org.gtk.Property.get=hdy_leaflet_get_homogeneous 
org.gtk.Property.set=hdy_leaflet_set_homogeneous)
+   *
+   * Whether to allocate the same width for all children when unfolded.
    *
-   * %TRUE if the leaflet allocates the same width for all children when unfolded.
+   * Since: 1.0
    */
   props[PROP_HHOMOGENEOUS_UNFOLDED] =
     g_param_spec_boolean ("hhomogeneous-unfolded",
@@ -1063,9 +1104,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:vhomogeneous_unfolded:
+   * HdyLeaflet:vhomogeneous-unfolded: (attributes org.gtk.Property.get=hdy_leaflet_get_homogeneous 
org.gtk.Property.set=hdy_leaflet_set_homogeneous)
+   *
+   * Whether to allocate the same height for all children when unfolded.
    *
-   * %TRUE if the leaflet allocates the same height for all children when unfolded.
+   * Since: 1.0
    */
   props[PROP_VHOMOGENEOUS_UNFOLDED] =
     g_param_spec_boolean ("vhomogeneous-unfolded",
@@ -1074,6 +1117,18 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                           FALSE,
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyLeaflet:visible-child: (attributes org.gtk.Property.get=hdy_leaflet_get_visible_child 
org.gtk.Property.set=hdy_leaflet_set_visible_child)
+   *
+   * 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.
+   *
+   * Since: 1.0
+   */
   props[PROP_VISIBLE_CHILD] =
     g_param_spec_object ("visible-child",
                          _("Visible child"),
@@ -1081,6 +1136,15 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                          GTK_TYPE_WIDGET,
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyLeaflet:visible-child-name: (attributes org.gtk.Property.get=hdy_leaflet_get_visible_child_name 
org.gtk.Property.set=hdy_leaflet_set_visible_child_name)
+   *
+   * The name of the widget currently visible when the leaflet is folded.
+   *
+   * See [property@Leaflet:visible-child].
+   *
+   * Since: 1.0
+   */
   props[PROP_VISIBLE_CHILD_NAME] =
     g_param_spec_string ("visible-child-name",
                          _("Name of visible child"),
@@ -1089,16 +1153,15 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:transition-type:
+   * HdyLeaflet:transition-type: (attributes org.gtk.Property.get=hdy_leaflet_get_transition_type 
org.gtk.Property.set=hdy_leaflet_set_transition_type)
    *
-   * The type of animation that will be used for transitions between modes and
-   * children.
+   * 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.
    *
-   * Since: 0.0.12
+   * Since: 1.0
    */
   props[PROP_TRANSITION_TYPE] =
     g_param_spec_enum ("transition-type",
@@ -1107,6 +1170,13 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                        HDY_TYPE_LEAFLET_TRANSITION_TYPE, HDY_LEAFLET_TRANSITION_TYPE_OVER,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyLeaflet:mode-transition-duration: (attributes 
org.gtk.Property.get=hdy_leaflet_get_mode_transition_duration 
org.gtk.Property.set=hdy_leaflet_set_mode_transition_duration)
+   *
+   * The mode transition animation duration, in milliseconds.
+   *
+   * Since: 1.0
+   */
   props[PROP_MODE_TRANSITION_DURATION] =
     g_param_spec_uint ("mode-transition-duration",
                        _("Mode transition duration"),
@@ -1114,6 +1184,13 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                        0, G_MAXUINT, 250,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyLeaflet:child-transition-duration: (attributes 
org.gtk.Property.get=hdy_leaflet_get_child_transition_duration 
org.gtk.Property.set=hdy_leaflet_set_child_transition_duration)
+   *
+   * The child transition animation duration, in milliseconds.
+   *
+   * Since: 1.0
+   */
   props[PROP_CHILD_TRANSITION_DURATION] =
     g_param_spec_uint ("child-transition-duration",
                        _("Child transition duration"),
@@ -1121,6 +1198,13 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                        0, G_MAXUINT, 200,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdyLeaflet:child-transition-running: (attributes 
org.gtk.Property.get=hdy_leaflet_get_child_transition_running)
+   *
+   * Whether a child transition is currently running.
+   *
+   * Since: 1.0
+   */
   props[PROP_CHILD_TRANSITION_RUNNING] =
       g_param_spec_boolean ("child-transition-running",
                             _("Child transition running"),
@@ -1128,6 +1212,13 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                             FALSE,
                             G_PARAM_READABLE);
 
+  /**
+   * HdyLeaflet:interpolate-size: (attributes org.gtk.Property.get=hdy_leaflet_get_interpolate_size 
org.gtk.Property.set=hdy_leaflet_set_interpolate_size)
+   *
+   * Whether the size should smoothly change when changing between children.
+   *
+   * Since: 1.0
+   */
   props[PROP_INTERPOLATE_SIZE] =
       g_param_spec_boolean ("interpolate-size",
                             _("Interpolate size"),
@@ -1136,12 +1227,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:can-swipe-back:
+   * HdyLeaflet:can-swipe-back: (attributes org.gtk.Property.get=hdy_leaflet_get_can_swipe_back 
org.gtk.Property.set=hdy_leaflet_set_can_swipe_back)
    *
-   * Whether or not the leaflet allows switching to the previous child that has
-   * 'navigatable' child property set to %TRUE via a swipe gesture.
+   * Whether swipe gestures allow switching to the previous navigatable child.
    *
-   * Since: 0.0.12
+   * Since: 1.0
    */
   props[PROP_CAN_SWIPE_BACK] =
       g_param_spec_boolean ("can-swipe-back",
@@ -1151,12 +1241,11 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyLeaflet:can-swipe-forward:
+   * HdyLeaflet:can-swipe-forward: (attributes org.gtk.Property.get=hdy_leaflet_get_can_swipe_forward 
org.gtk.Property.set=hdy_leaflet_set_can_swipe_forward)
    *
-   * Whether or not the leaflet allows switching to the next child that has
-   * 'navigatable' child property set to %TRUE via a swipe gesture.
+   * Whether swipe gestures allow switching to the next navigatable child.
    *
-   * Since: 0.0.12
+   * Since: 1.0
    */
   props[PROP_CAN_SWIPE_FORWARD] =
       g_param_spec_boolean ("can-swipe-forward",
@@ -1174,17 +1263,6 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
                          NULL,
                          G_PARAM_READWRITE);
 
-  /**
-   * HdyLeaflet:navigatable:
-   *
-   * Whether the child can be navigated to when folded.
-   * If %FALSE, the child will be ignored by hdy_leaflet_get_adjacent_child(),
-   * hdy_leaflet_navigate(), and swipe gestures.
-   *
-   * This can be used used to prevent switching to widgets like separators.
-   *
-   * Since: 1.0
-   */
   child_props[CHILD_PROP_NAVIGATABLE] =
     g_param_spec_boolean ("navigatable",
                           _("Navigatable"),
@@ -1198,6 +1276,15 @@ hdy_leaflet_class_init (HdyLeafletClass *klass)
   gtk_widget_class_set_css_name (widget_class, "leaflet");
 }
 
+/**
+ * hdy_leaflet_new:
+ *
+ * Creates a new `HdyLeaflet`.
+ *
+ * Returns: the newly created `HdyLeaflet`
+ *
+ * Since: 1.0
+ */
 GtkWidget *
 hdy_leaflet_new (void)
 {
diff --git a/src/hdy-leaflet.h b/src/hdy-leaflet.h
index 9d4fffc1..eda6962b 100644
--- a/src/hdy-leaflet.h
+++ b/src/hdy-leaflet.h
@@ -31,7 +31,7 @@ typedef enum {
 
 /**
  * HdyLeafletClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyLeafletClass
 {
diff --git a/src/hdy-main.c b/src/hdy-main.c
index 4657fb07..f1c1631c 100644
--- a/src/hdy-main.c
+++ b/src/hdy-main.c
@@ -11,17 +11,6 @@
 
 static gint hdy_initialized = FALSE;
 
-/**
- * SECTION:hdy-main
- * @short_description: Library initialization.
- * @Title: hdy-main
- *
- * Before using the Handy library you should initialize it by calling the
- * hdy_init() function.
- * This makes sure translations, types, themes, and icons for the Handy library
- * are set up properly.
- */
-
 /* The style provider priority to use for libhandy widgets custom styling. It is
  * higher than themes and settings, allowing to override theme defaults, but
  * lower than applications and user provided styles, so application developers
@@ -176,13 +165,18 @@ hdy_icons_init (void)
 /**
  * hdy_init:
  *
+ * Initializes Libhandy.
+ *
  * Call this function just after initializing GTK, if you are using
- * #GtkApplication it means it must be called when the #GApplication::startup
- * signal is emitted. If libhandy has already been initialized, the function
- * will simply return.
+ * [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.
+ *
+ * Since: 1.0
  */
 void
 hdy_init (void)
diff --git a/src/hdy-navigation-direction.c b/src/hdy-navigation-direction.c
index 71a951fa..ae700ed4 100644
--- a/src/hdy-navigation-direction.c
+++ b/src/hdy-navigation-direction.c
@@ -7,20 +7,14 @@
 #include "config.h"
 #include "hdy-navigation-direction.h"
 
-/**
- * SECTION:hdy-navigation-direction
- * @short_description: Swipe navigation directions.
- * @title: HdyNavigationDirection
- * @See_also: #HdyDeck, #HdyLeaflet
- */
-
 /**
  * HdyNavigationDirection:
- * @HDY_NAVIGATION_DIRECTION_BACK: Corresponds to start or top, depending on orientation and text direction
- * @HDY_NAVIGATION_DIRECTION_FORWARD: Corresponds to end or bottom, depending on orientation and text 
direction
+ * @HDY_NAVIGATION_DIRECTION_BACK: Corresponds to start or top, depending on
+ *   orientation and text direction
+ * @HDY_NAVIGATION_DIRECTION_FORWARD: Corresponds to end or bottom, depending on
+ *   orientation and text direction
  *
- * Represents direction of a swipe navigation gesture in #HdyDeck and
- * #HdyLeaflet.
+ * Describes the direction of a swipe navigation gesture.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-nothing.c b/src/hdy-nothing.c
index 036537aa..14ba394e 100644
--- a/src/hdy-nothing.c
+++ b/src/hdy-nothing.c
@@ -1,14 +1,12 @@
 #include "hdy-nothing-private.h"
 
 /**
- * PRIVATE:hdy-nothing
- * @short_description: A helper object for #HdyWindow and #HdyApplicationWindow
- * @title: HdyNothing
- * @See_also: #HdyApplicationWindow, #HdyWindow, #HdyWindowMixin
- * @stability: Private
+ * HdyNothing:
  *
- * The HdyNothing widget does nothing. It's used as the titlebar for
- * #HdyWindow and #HdyApplicationWindow.
+ * A helper object for [class@Window] and [class@ApplicationWindow]
+ *
+ * The [class@Nothing] widget does nothing. It's used as the titlebar for
+ * [class@Window] and [class@ApplicationWindow].
  *
  * Since: 1.0
  */
@@ -33,9 +31,9 @@ hdy_nothing_init (HdyNothing *self)
 /**
  * hdy_nothing_new:
  *
- * Creates a new #HdyNothing.
+ * Creates a new `HdyNothing`.
  *
- * Returns: (transfer full): a newly created #HdyNothing
+ * Returns: the newly created `HdyNothing`
  *
  * Since: 1.0
  */
diff --git a/src/hdy-preferences-group.c b/src/hdy-preferences-group.c
index 69bd4466..366b4791 100644
--- a/src/hdy-preferences-group.c
+++ b/src/hdy-preferences-group.c
@@ -13,22 +13,22 @@
 #include "hdy-preferences-row.h"
 
 /**
- * SECTION:hdy-preferences-group
- * @short_description: A group gathering preferences rows.
- * @Title: HdyPreferencesGroup
+ * HdyPreferencesGroup:
  *
- * A #HdyPreferencesGroup represents a group or tightly related preferences,
- * which in turn are represented by HdyPreferencesRow.
+ * 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 #HdyPreferencesWindow to
- * let the user look for a preference.
+ * title and a description. The title will be used by [class@PreferencesWindow]
+ * to let the user look for a preference.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyPreferencesGroup has a single CSS node with name preferencesgroup.
+ * `HdyPreferencesGroup` has a single CSS node with name `preferencesgroup`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 
 typedef struct
@@ -269,11 +269,11 @@ hdy_preferences_group_class_init (HdyPreferencesGroupClass *klass)
   container_class->forall = hdy_preferences_group_forall;
 
   /**
-   * HdyPreferencesGroup:description:
+   * HdyPreferencesGroup:description: (attributes org.gtk.Property.get=hdy_preferences_group_get_description 
org.gtk.Property.set=hdy_preferences_group_set_description)
    *
    * The description for this group of preferences.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_DESCRIPTION] =
     g_param_spec_string ("description",
@@ -283,11 +283,11 @@ hdy_preferences_group_class_init (HdyPreferencesGroupClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyPreferencesGroup:title:
+   * HdyPreferencesGroup:title: (attributes org.gtk.Property.get=hdy_preferences_group_get_title 
org.gtk.Property.set=hdy_preferences_group_set_title)
    *
    * The title for this group of preferences.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_TITLE] =
     g_param_spec_string ("title",
@@ -297,7 +297,7 @@ hdy_preferences_group_class_init (HdyPreferencesGroupClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyPreferencesGroup:use-markup:
+   * HdyPreferencesGroup:use-markup: (attributes org.gtk.Property.get=hdy_preferences_group_get_use_markup 
org.gtk.Property.set=hdy_preferences_group_set_use_markup)
    *
    * Whether to use markup for the title and description.
    *
@@ -337,11 +337,11 @@ hdy_preferences_group_init (HdyPreferencesGroup *self)
 /**
  * hdy_preferences_group_new:
  *
- * Creates a new #HdyPreferencesGroup.
+ * Creates a new `HdyPreferencesGroup`.
  *
- * Returns: a new #HdyPreferencesGroup
+ * Returns: the newly created `HdyPreferencesGroup`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_preferences_group_new (void)
@@ -350,14 +350,14 @@ hdy_preferences_group_new (void)
 }
 
 /**
- * hdy_preferences_group_get_title:
- * @self: a #HdyPreferencesGroup
+ * hdy_preferences_group_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a preferences group
  *
  * Gets the title of @self.
  *
- * Returns: the title of @self.
+ * Returns: the title of @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_preferences_group_get_title (HdyPreferencesGroup *self)
@@ -372,13 +372,13 @@ hdy_preferences_group_get_title (HdyPreferencesGroup *self)
 }
 
 /**
- * hdy_preferences_group_set_title:
- * @self: a #HdyPreferencesGroup
+ * hdy_preferences_group_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a preferences group
  * @title: the title
  *
  * Sets the title for @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_group_set_title (HdyPreferencesGroup *self,
@@ -400,13 +400,12 @@ hdy_preferences_group_set_title (HdyPreferencesGroup *self,
 }
 
 /**
- * hdy_preferences_group_get_description:
- * @self: a #HdyPreferencesGroup
- *
+ * hdy_preferences_group_get_description: (attributes org.gtk.Method.get_property=description)
+ * @self: a preferences group
  *
- * Returns: the description of @self.
+ * Returns: the description of @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_preferences_group_get_description (HdyPreferencesGroup *self)
@@ -421,13 +420,13 @@ hdy_preferences_group_get_description (HdyPreferencesGroup *self)
 }
 
 /**
- * hdy_preferences_group_set_description:
- * @self: a #HdyPreferencesGroup
+ * hdy_preferences_group_set_description: (attributes org.gtk.Method.set_property=description)
+ * @self: a preferences group
  * @description: the description
  *
  * Sets the description for @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_group_set_description (HdyPreferencesGroup *self,
@@ -449,12 +448,12 @@ hdy_preferences_group_set_description (HdyPreferencesGroup *self,
 }
 
 /**
- * hdy_preferences_group_get_use_markup:
- * @self: a #HdyPreferencesGroup
+ * hdy_preferences_group_get_use_markup: (attributes org.gtk.Method.get_property=use-markup)
+ * @self: a preferences group
  *
  * Gets whether @self uses markup for the title and description.
  *
- * Returns: Whether @self uses markup for its labels.
+ * Returns: whether @self uses markup for its labels
  *
  * Since: 1.4
  */
@@ -471,8 +470,8 @@ hdy_preferences_group_get_use_markup (HdyPreferencesGroup *self)
 }
 
 /**
- * hdy_preferences_group_set_use_markup:
- * @self: a #HdyPreferencesGroup
+ * hdy_preferences_group_set_use_markup: (attributes org.gtk.Method.set_property=use-markup)
+ * @self: a preferences group
  * @use_markup: whether to use markup
  *
  * Sets whether @self uses markup for the title and description.
@@ -520,14 +519,14 @@ add_preferences_to_model (HdyPreferencesRow *row,
   g_list_store_append (model, row);
 }
 
-/**
+/*< private >
  * hdy_preferences_group_add_preferences_to_model: (skip)
- * @self: a #HdyPreferencesGroup
+ * @self: a preferences group
  * @model: the model
  *
  * Add preferences from @self to the model.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_group_add_preferences_to_model (HdyPreferencesGroup *self,
diff --git a/src/hdy-preferences-group.h b/src/hdy-preferences-group.h
index 142781d7..10a70394 100644
--- a/src/hdy-preferences-group.h
+++ b/src/hdy-preferences-group.h
@@ -23,7 +23,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyPreferencesGroup, hdy_preferences_group, HDY, PREFE
 
 /**
  * HdyPreferencesGroupClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyPreferencesGroupClass
 {
diff --git a/src/hdy-preferences-page.c b/src/hdy-preferences-page.c
index 7e720d5c..d1f5be81 100644
--- a/src/hdy-preferences-page.c
+++ b/src/hdy-preferences-page.c
@@ -12,18 +12,18 @@
 #include "hdy-preferences-group-private.h"
 
 /**
- * SECTION:hdy-preferences-page
- * @short_description: A page from the preferences window.
- * @Title: HdyPreferencesPage
+ * HdyPreferencesPage:
  *
- * The #HdyPreferencesPage widget gathers preferences groups into a single page
+ * A page from [class@PreferencesWindow].
+ *
+ * The `HdyPreferencesPage` widget gathers preferences groups into a single page
  * of a preferences window.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyPreferencesPage has a single CSS node with name preferencespage.
+ * `HdyPreferencesPage` has a single CSS node with name `preferencespage`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 
 typedef struct
@@ -162,11 +162,11 @@ hdy_preferences_page_class_init (HdyPreferencesPageClass *klass)
   container_class->forall = hdy_preferences_page_forall;
 
   /**
-   * HdyPreferencesPage:icon-name:
+   * HdyPreferencesPage:icon-name: (attributes org.gtk.Property.get=hdy_preferences_page_get_icon_name 
org.gtk.Property.set=hdy_preferences_page_set_icon_name)
    *
    * The icon name for this page of preferences.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_ICON_NAME] =
     g_param_spec_string ("icon-name",
@@ -176,11 +176,11 @@ hdy_preferences_page_class_init (HdyPreferencesPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyPreferencesPage:title:
+   * HdyPreferencesPage:title: (attributes org.gtk.Property.get=hdy_preferences_page_get_title 
org.gtk.Property.set=hdy_preferences_page_set_title)
    *
    * The title for this page of preferences.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_TITLE] =
     g_param_spec_string ("title",
@@ -208,11 +208,11 @@ hdy_preferences_page_init (HdyPreferencesPage *self)
 /**
  * hdy_preferences_page_new:
  *
- * Creates a new #HdyPreferencesPage.
+ * Creates a new `HdyPreferencesPage`.
  *
- * Returns: a new #HdyPreferencesPage
+ * Returns: the newly created `HdyPreferencesPage`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_preferences_page_new (void)
@@ -221,14 +221,14 @@ hdy_preferences_page_new (void)
 }
 
 /**
- * hdy_preferences_page_get_icon_name:
- * @self: a #HdyPreferencesPage
+ * hdy_preferences_page_get_icon_name: (attributes org.gtk.Method.get_property=icon-name)
+ * @self: a preferences page
  *
- * Gets the icon name for @self, or %NULL.
+ * Gets the icon name for @self.
  *
- * Returns: (transfer none) (nullable): the icon name for @self, or %NULL.
+ * Returns: (transfer none) (nullable): the icon name for @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_preferences_page_get_icon_name (HdyPreferencesPage *self)
@@ -243,13 +243,13 @@ hdy_preferences_page_get_icon_name (HdyPreferencesPage *self)
 }
 
 /**
- * hdy_preferences_page_set_icon_name:
- * @self: a #HdyPreferencesPage
- * @icon_name: (nullable): the icon name, or %NULL
+ * hdy_preferences_page_set_icon_name: (attributes org.gtk.Method.set_property=icon-name)
+ * @self: a preferences page
+ * @icon_name: (nullable): the icon name
  *
  * Sets the icon name for @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_page_set_icon_name (HdyPreferencesPage *self,
@@ -271,14 +271,14 @@ hdy_preferences_page_set_icon_name (HdyPreferencesPage *self,
 }
 
 /**
- * hdy_preferences_page_get_title:
- * @self: a #HdyPreferencesPage
+ * hdy_preferences_page_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a preferences page
  *
- * Gets the title of @self, or %NULL.
+ * Gets the title of @self.
  *
- * Returns: (transfer none) (nullable): the title of the @self, or %NULL.
+ * Returns: (transfer none) (nullable): the title of the @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_preferences_page_get_title (HdyPreferencesPage *self)
@@ -293,13 +293,13 @@ hdy_preferences_page_get_title (HdyPreferencesPage *self)
 }
 
 /**
- * hdy_preferences_page_set_title:
- * @self: a #HdyPreferencesPage
- * @title: (nullable): the title of the page, or %NULL
+ * hdy_preferences_page_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a preferences page
+ * @title: (nullable): the title of the page
  *
  * Sets the title of @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_page_set_title (HdyPreferencesPage *self,
@@ -320,14 +320,14 @@ hdy_preferences_page_set_title (HdyPreferencesPage *self,
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_TITLE]);
 }
 
-/**
- * hdy_preferences_page_add_preferences_to_model: (skip)
- * @self: a #HdyPreferencesPage
+/*< private >
+ * hdy_preferences_page_add_preferences_to_model:
+ * @self: a preferences page
  * @model: the model
  *
  * Add preferences from @self to the model.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_page_add_preferences_to_model (HdyPreferencesPage *self,
diff --git a/src/hdy-preferences-page.h b/src/hdy-preferences-page.h
index 22baa945..2e4823a2 100644
--- a/src/hdy-preferences-page.h
+++ b/src/hdy-preferences-page.h
@@ -23,7 +23,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyPreferencesPage, hdy_preferences_page, HDY, PREFERE
 
 /**
  * HdyPreferencesPageClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyPreferencesPageClass
 {
diff --git a/src/hdy-preferences-row.c b/src/hdy-preferences-row.c
index 0deef54f..a76e30bc 100644
--- a/src/hdy-preferences-row.c
+++ b/src/hdy-preferences-row.c
@@ -10,19 +10,19 @@
 #include "hdy-preferences-row.h"
 
 /**
- * SECTION:hdy-preferences-row
- * @short_description: A #GtkListBox row used to present preferences.
- * @Title: HdyPreferencesRow
+ * HdyPreferencesRow:
  *
- * The #HdyPreferencesRow widget has a title that #HdyPreferencesWindow will use
- * to let the user look for a preference. It doesn't present the title in any
- * way and it lets you present the preference as you please.
+ * A [class@Gtk.ListBoxRow] used to present preferences.
  *
- * #HdyActionRow 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.
+ * 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.
  *
- * Since: 0.0.10
+ * [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.
+ *
+ * Since: 1.0
  */
 
 typedef struct
@@ -104,11 +104,11 @@ hdy_preferences_row_class_init (HdyPreferencesRowClass *klass)
   object_class->finalize = hdy_preferences_row_finalize;
 
   /**
-   * HdyPreferencesRow:title:
+   * HdyPreferencesRow:title: (attributes org.gtk.Property.get=hdy_preferences_row_get_title 
org.gtk.Property.set=hdy_preferences_row_set_title)
    *
    * The title of the preference represented by this row.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_TITLE] =
     g_param_spec_string ("title",
@@ -118,12 +118,11 @@ hdy_preferences_row_class_init (HdyPreferencesRowClass *klass)
                          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyPreferencesRow:use-underline:
+   * HdyPreferencesRow:use-underline: (attributes org.gtk.Property.get=hdy_preferences_row_get_use_underline 
org.gtk.Property.set=hdy_preferences_row_set_use_underline)
    *
-   * Whether an embedded underline in the text of the title indicates a
-   * mnemonic.
+   * Whether an embedded underline in the title indicates a mnemonic.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_USE_UNDERLINE] =
     g_param_spec_boolean ("use-underline",
@@ -143,11 +142,11 @@ hdy_preferences_row_init (HdyPreferencesRow *self)
 /**
  * hdy_preferences_row_new:
  *
- * Creates a new #HdyPreferencesRow.
+ * Creates a new `HdyPreferencesRow`.
  *
- * Returns: a new #HdyPreferencesRow
+ * Returns: the newly created `HdyPreferencesRow`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_preferences_row_new (void)
@@ -156,15 +155,15 @@ hdy_preferences_row_new (void)
 }
 
 /**
- * hdy_preferences_row_get_title:
- * @self: a #HdyPreferencesRow
+ * hdy_preferences_row_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a preferences row
  *
  * Gets the title of the preference represented by @self.
  *
  * Returns: (transfer none) (nullable): the title of the preference represented
- *          by @self, or %NULL.
+ *   by @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 const gchar *
 hdy_preferences_row_get_title (HdyPreferencesRow *self)
@@ -179,13 +178,13 @@ hdy_preferences_row_get_title (HdyPreferencesRow *self)
 }
 
 /**
- * hdy_preferences_row_set_title:
- * @self: a #HdyPreferencesRow
- * @title: (nullable): the title, or %NULL.
+ * hdy_preferences_row_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a preferences row
+ * @title: (nullable): the title
  *
  * Sets the title of the preference represented by @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_row_set_title (HdyPreferencesRow *self,
@@ -207,16 +206,14 @@ hdy_preferences_row_set_title (HdyPreferencesRow *self,
 }
 
 /**
- * hdy_preferences_row_get_use_underline:
- * @self: a #HdyPreferencesRow
+ * hdy_preferences_row_get_use_underline: (attributes org.gtk.Method.get_property=use-underline)
+ * @self: a preferences row
  *
- * Gets whether an embedded underline in the text of the title indicates a
- * mnemonic. See hdy_preferences_row_set_use_underline().
+ * Gets whether an embedded underline in the title indicates a mnemonic.
  *
- * Returns: %TRUE if an embedded underline in the title indicates the mnemonic
- *          accelerator keys.
+ * Returns: whether an embedded underline in the title indicates a mnemonic
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_preferences_row_get_use_underline (HdyPreferencesRow *self)
@@ -231,14 +228,13 @@ hdy_preferences_row_get_use_underline (HdyPreferencesRow *self)
 }
 
 /**
- * hdy_preferences_row_set_use_underline:
- * @self: a #HdyPreferencesRow
- * @use_underline: %TRUE if underlines in the text indicate mnemonics
+ * hdy_preferences_row_set_use_underline: (attributes org.gtk.Method.set_property=use-underline)
+ * @self: a preferences row
+ * @use_underline: `TRUE` if underlines in the text indicate mnemonics
  *
- * If true, an underline in the text of the title indicates the next character
- * should be used for the mnemonic accelerator key.
+ * Sets whether an embedded underline in the title indicates a mnemonic.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_preferences_row_set_use_underline (HdyPreferencesRow *self,
diff --git a/src/hdy-preferences-row.h b/src/hdy-preferences-row.h
index da2dcdd8..cdcc22db 100644
--- a/src/hdy-preferences-row.h
+++ b/src/hdy-preferences-row.h
@@ -23,7 +23,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyPreferencesRow, hdy_preferences_row, HDY, PREFERENC
 
 /**
  * HdyPreferencesRowClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyPreferencesRowClass
 {
diff --git a/src/hdy-preferences-window.c b/src/hdy-preferences-window.c
index 760a18b9..294ca08e 100644
--- a/src/hdy-preferences-window.c
+++ b/src/hdy-preferences-window.c
@@ -19,19 +19,19 @@
 #include "hdy-view-switcher-title.h"
 
 /**
- * SECTION:hdy-preferences-window
- * @short_description: A window to present an application's preferences.
- * @Title: HdyPreferencesWindow
+ * HdyPreferencesWindow:
  *
- * The #HdyPreferencesWindow widget presents an application's preferences
+ * 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
+ * ## CSS nodes
  *
- * #HdyPreferencesWindow has a main CSS node with the name window and the style
- * class .preferences.
+ * `HdyPreferencesWindow` has a main CSS node with the name `window` and the
+ * style class `.preferences`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 
 typedef struct
@@ -536,7 +536,7 @@ hdy_preferences_window_class_init (HdyPreferencesWindowClass *klass)
   container_class->forall = hdy_preferences_window_forall;
 
   /**
-   * HdyPreferencesWindow:search-enabled:
+   * HdyPreferencesWindow:search-enabled: (attributes 
org.gtk.Property.get=hdy_preferences_window_get_search_enabled 
org.gtk.Property.set=hdy_preferences_window_set_search_enabled)
    *
    * Whether search is enabled.
    *
@@ -550,9 +550,9 @@ hdy_preferences_window_class_init (HdyPreferencesWindowClass *klass)
                           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyPreferencesWindow:can-swipe-back:
+   * HdyPreferencesWindow:can-swipe-back: (attributes 
org.gtk.Property.get=hdy_preferences_window_get_can_swipe_back 
org.gtk.Property.set=hdy_preferences_window_set_can_swipe_back)
    *
-   * Whether or not the window allows closing the subpage via a swipe gesture.
+   * Whether the window allows closing the subpage via a swipe gesture.
    *
    * Since: 1.0
    */
@@ -605,11 +605,11 @@ hdy_preferences_window_init (HdyPreferencesWindow *self)
 /**
  * hdy_preferences_window_new:
  *
- * Creates a new #HdyPreferencesWindow.
+ * Creates a new `HdyPreferencesWindow`.
  *
- * Returns: a new #HdyPreferencesWindow
+ * Returns: the newly created `HdyPreferencesWindow`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_preferences_window_new (void)
@@ -618,12 +618,12 @@ hdy_preferences_window_new (void)
 }
 
 /**
- * hdy_preferences_window_get_search_enabled:
- * @self: a #HdyPreferencesWindow
+ * hdy_preferences_window_get_search_enabled: (attributes org.gtk.Method.get_property=search-enabled)
+ * @self: a preferences window
  *
  * Gets whether search is enabled for @self.
  *
- * Returns: whether search is enabled for @self.
+ * Returns: whether search is enabled for @self
  *
  * Since: 1.0
  */
@@ -640,9 +640,9 @@ hdy_preferences_window_get_search_enabled (HdyPreferencesWindow *self)
 }
 
 /**
- * hdy_preferences_window_set_search_enabled:
- * @self: a #HdyPreferencesWindow
- * @search_enabled: %TRUE to enable search, %FALSE to disable it
+ * hdy_preferences_window_set_search_enabled: (attributes org.gtk.Method.set_property=search-enabled)
+ * @self: a preferences window
+ * @search_enabled: `TRUE` to enable search, `FALSE` to disable it
  *
  * Sets whether search is enabled for @self.
  *
@@ -672,12 +672,12 @@ hdy_preferences_window_set_search_enabled (HdyPreferencesWindow *self,
 }
 
 /**
- * hdy_preferences_window_set_can_swipe_back:
- * @self: a #HdyPreferencesWindow
+ * hdy_preferences_window_set_can_swipe_back: (attributes org.gtk.Method.set_property=can-swipe-back)
+ * @self: a preferences window
  * @can_swipe_back: the new value
  *
- * Sets whether or not @self allows switching from a subpage to the preferences
- * via a swipe gesture.
+ * Sets whether swipe gestures allow switching from a subpage to the
+ * preferences.
  *
  * Since: 1.0
  */
@@ -702,13 +702,13 @@ hdy_preferences_window_set_can_swipe_back (HdyPreferencesWindow *self,
 }
 
 /**
- * hdy_preferences_window_get_can_swipe_back
- * @self: a #HdyPreferencesWindow
+ * hdy_preferences_window_get_can_swipe_back: (attributes org.gtk.Method.get_property=can-swipe-back)
+ * @self: a preferences window
  *
- * Returns whether or not @self allows switching from a subpage to the
- * preferences via a swipe gesture.
+ * Gets whether swipe gestures allow switching from a subpage to the
+ * preferences.
  *
- * Returns: %TRUE if back swipe is enabled.
+ * Returns: `TRUE` if back swipe is enabled
  *
  * Since: 1.0
  */
@@ -726,10 +726,11 @@ hdy_preferences_window_get_can_swipe_back (HdyPreferencesWindow *self)
 
 /**
  * hdy_preferences_window_present_subpage:
- * @self: a #HdyPreferencesWindow
+ * @self: a preferences window
  * @subpage: the subpage
  *
- * Sets @subpage as the window's subpage and present it.
+ * 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.
  *
@@ -762,10 +763,11 @@ hdy_preferences_window_present_subpage (HdyPreferencesWindow *self,
 
 /**
  * hdy_preferences_window_close_subpage:
- * @self: a #HdyPreferencesWindow
+ * @self: a preferences window
+ *
+ * Closes the current subpage.
  *
- * Closes the current subpage to return back to the preferences, if there is no
- * presented subpage, this does nothing.
+ * If there is no presented subpage, this does nothing.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-preferences-window.h b/src/hdy-preferences-window.h
index 0680615e..bf520299 100644
--- a/src/hdy-preferences-window.h
+++ b/src/hdy-preferences-window.h
@@ -24,7 +24,7 @@ G_DECLARE_DERIVABLE_TYPE (HdyPreferencesWindow, hdy_preferences_window, HDY, PRE
 
 /**
  * HdyPreferencesWindowClass
- * @parent_class: The parent class
+ * @parent_class: the parent class
  */
 struct _HdyPreferencesWindowClass
 {
diff --git a/src/hdy-search-bar.c b/src/hdy-search-bar.c
index 728274a6..731e3a10 100644
--- a/src/hdy-search-bar.c
+++ b/src/hdy-search-bar.c
@@ -47,35 +47,34 @@
 #include "hdy-search-bar.h"
 
 /**
- * SECTION:hdy-search-bar
- * @short_description: A toolbar to integrate a search entry with.
- * @Title: HdySearchBar
+ * HdySearchBar:
  *
- * #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.
+ * A toolbar to integrate a search entry with.
  *
- * For keyboard presses to start a search, events will need to be
- * forwarded from the top-level window that contains the search bar.
- * See hdy_search_bar_handle_event() for example code. Common shortcuts
- * such as Ctrl+F should be handled as an application action, or through
- * the menu items.
+ * `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.
  *
- * You will also need to tell the search bar about which entry you
- * are using as your search entry using hdy_search_bar_connect_entry().
- * The following example shows you how to create a more complex search
- * entry.
+ * 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.
  *
- * HdySearchBar is very similar to #GtkSearchBar, 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 #HdyClamp.
+ * 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.
  *
- * # CSS nodes
+ * `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].
  *
- * #HdySearchBar has a single CSS node with name searchbar.
+ * ## CSS nodes
  *
- * Since: 0.0.6
+ * `HdySearchBar` has a single CSS node with name `searchbar`.
+ *
+ * Since: 1.0
  */
 
 typedef struct {
@@ -204,24 +203,25 @@ hdy_search_bar_handle_event_for_entry (HdySearchBar *self,
 
 /**
  * hdy_search_bar_handle_event:
- * @self: a #HdySearchBar
- * @event: a #GdkEvent containing key press events
+ * @self: a search bar
+ * @event: a [struct@Gdk.Event] containing key press events
+ *
+ * Handles key press events.
  *
- * This function should be called when the top-level
- * window which contains the search bar received a key event.
+ * 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 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
- * hdy_search_bar_connect_entry(), this function will return
- * immediately with a warning.
+ * [method@SearchBar.connect_entry], this function will return immediately with
+ * a warning.
  *
  * ## Showing the search bar on key presses
  *
- * |[<!-- language="C" -->
+ * ```c
  * static gboolean
  * on_key_press_event (GtkWidget *widget,
  *                     GdkEvent  *event,
@@ -237,20 +237,20 @@ hdy_search_bar_handle_event_for_entry (HdySearchBar *self,
  *   GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  *   GtkWindow *search_bar = hdy_search_bar_new ();
  *
- *  // Add more widgets to the window...
+ *   // Add more widgets to the window...
  *
  *   g_signal_connect (window,
  *                    "key-press-event",
  *                     G_CALLBACK (on_key_press_event),
  *                     search_bar);
  * }
- * ]|
+ * ```
  *
- * Returns: %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.
+ * Returns: `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.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_search_bar_handle_event (HdySearchBar *self,
@@ -440,11 +440,11 @@ hdy_search_bar_class_init (HdySearchBarClass *klass)
   container_class->add = hdy_search_bar_add;
 
   /**
-   * HdySearchBar:search-mode-enabled:
+   * HdySearchBar:search-mode-enabled: (attributes org.gtk.Property.get=hdy_search_bar_get_search_mode 
org.gtk.Property.set=hdy_search_bar_set_search_mode)
    *
    * Whether the search mode is on and the search bar shown.
    *
-   * See hdy_search_bar_set_search_mode() for details.
+   * Since: 1.0
    */
   props[PROP_SEARCH_MODE_ENABLED] =
     g_param_spec_boolean ("search-mode-enabled",
@@ -454,9 +454,11 @@ hdy_search_bar_class_init (HdySearchBarClass *klass)
                           G_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySearchBar:show-close-button:
+   * HdySearchBar:show-close-button: (attributes org.gtk.Property.get=hdy_search_bar_get_show_close_button 
org.gtk.Property.set=hdy_search_bar_set_show_close_button)
    *
    * Whether to show the close button in the toolbar.
+   *
+   * Since: 1.0
    */
   props[PROP_SHOW_CLOSE_BUTTON] =
     g_param_spec_boolean ("show-close-button",
@@ -504,13 +506,14 @@ hdy_search_bar_init (HdySearchBar *self)
 /**
  * hdy_search_bar_new:
  *
- * Creates a #HdySearchBar. You will need to tell it about
- * which widget is going to be your text entry using
- * hdy_search_bar_connect_entry().
+ * Creates a new `HdySearchBar.
  *
- * Returns: a new #HdySearchBar
+ * You will need to tell it about which widget is going to be your text entry
+ * using [method@SearchBar.connect_entry].
  *
- * Since: 0.0.6
+ * Returns: the newly created `HdySearchBar`
+ *
+ * Since: 1.0
  */
 GtkWidget *
 hdy_search_bar_new (void)
@@ -547,15 +550,15 @@ hdy_search_bar_set_entry (HdySearchBar *self,
 
 /**
  * hdy_search_bar_connect_entry:
- * @self: a #HdySearchBar
- * @entry: a #GtkEntry
+ * @self: a search bar
+ * @entry: an entry
+ *
+ * Sets the entry widget passed as the one to be used in this search bar.
  *
- * Connects the #GtkEntry 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).
+ * 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).
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_search_bar_connect_entry (HdySearchBar *self,
@@ -568,14 +571,14 @@ hdy_search_bar_connect_entry (HdySearchBar *self,
 }
 
 /**
- * hdy_search_bar_get_search_mode:
- * @self: a #HdySearchBar
+ * hdy_search_bar_get_search_mode: (attributes org.gtk.Method.get_property=search-mode-enabled)
+ * @self: a search bar
  *
- * Returns whether the search mode is on or off.
+ * Gets whether the search mode is on.
  *
  * Returns: whether search mode is toggled on
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_search_bar_get_search_mode (HdySearchBar *self)
@@ -588,13 +591,13 @@ hdy_search_bar_get_search_mode (HdySearchBar *self)
 }
 
 /**
- * hdy_search_bar_set_search_mode:
- * @self: a #HdySearchBar
+ * hdy_search_bar_set_search_mode: (attributes org.gtk.Method.set_property=search-mode-enabled)
+ * @self: a search bar
  * @search_mode: the new state of the search mode
  *
  * Switches the search mode on or off.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_search_bar_set_search_mode (HdySearchBar *self,
@@ -608,14 +611,14 @@ hdy_search_bar_set_search_mode (HdySearchBar *self,
 }
 
 /**
- * hdy_search_bar_get_show_close_button:
- * @self: a #HdySearchBar
+ * hdy_search_bar_get_show_close_button: (attributes org.gtk.Method.get_property=show-close-button)
+ * @self: a search bar
  *
- * Returns whether the close button is shown.
+ * Gets whether the close button is shown.
  *
  * Returns: whether the close button is shown
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 gboolean
 hdy_search_bar_get_show_close_button (HdySearchBar *self)
@@ -628,16 +631,17 @@ hdy_search_bar_get_show_close_button (HdySearchBar *self)
 }
 
 /**
- * hdy_search_bar_set_show_close_button:
- * @self: a #HdySearchBar
+ * hdy_search_bar_set_show_close_button: (attributes org.gtk.Method.set_property=show-close-button)
+ * @self: a search bar
  * @visible: whether the close button will be shown or not
  *
- * 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.
+ * 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.
  *
- * Since: 0.0.6
+ * Since: 1.0
  */
 void
 hdy_search_bar_set_show_close_button (HdySearchBar *self,
diff --git a/src/hdy-shadow-helper.c b/src/hdy-shadow-helper.c
index 2ef87be1..278e88e3 100644
--- a/src/hdy-shadow-helper.c
+++ b/src/hdy-shadow-helper.c
@@ -13,15 +13,13 @@
 #include <math.h>
 
 /**
- * PRIVATE:hdy-shadow-helper
- * @short_description: Shadow helper used in #HdyLeaflet
- * @title: HdyShadowHelper
- * @See_also: #HdyLeaflet
- * @stability: Private
+ * HdyShadowHelper:
  *
- * A helper class for drawing #HdyLeaflet transition shadow.
+ * Shadow helper used in [class@Leaflet]
  *
- * Since: 0.0.12
+ * A helper class for drawing [class@Leaflet] transition shadow.
+ *
+ * Since: 1.0
  */
 
 struct _HdyShadowHelper
@@ -247,9 +245,9 @@ hdy_shadow_helper_class_init (HdyShadowHelperClass *klass)
   /**
    * HdyShadowHelper:widget:
    *
-   * The widget the shadow will be drawn for. Must not be %NULL
+   * The widget the shadow will be drawn for. Must not be `NULL`.
    *
-   * Since: 0.0.11
+   * Since: 1.0
    */
   props[PROP_WIDGET] =
     g_param_spec_object ("widget",
@@ -269,11 +267,11 @@ hdy_shadow_helper_init (HdyShadowHelper *self)
 /**
  * hdy_shadow_helper_new:
  *
- * Creates a new #HdyShadowHelper object.
+ * Creates a new [class@ShadowHelper] object.
  *
- * Returns: The newly created #HdyShadowHelper object
+ * Returns: the newly created [class@ShadowHelper] object
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 HdyShadowHelper *
 hdy_shadow_helper_new (GtkWidget *widget)
@@ -285,11 +283,11 @@ hdy_shadow_helper_new (GtkWidget *widget)
 
 /**
  * hdy_shadow_helper_clear_cache:
- * @self: a #HdyShadowHelper
+ * @self: a shadow helper
  *
  * Clears shadow cache. This should be used after a transition is done.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_shadow_helper_clear_cache (HdyShadowHelper *self)
@@ -315,7 +313,7 @@ hdy_shadow_helper_clear_cache (HdyShadowHelper *self)
 
 /**
  * hdy_shadow_helper_draw_shadow:
- * @self: a #HdyShadowHelper
+ * @self: a shadow helper
  * @cr: a Cairo context to draw to
  * @width: the width of the shadow rectangle
  * @height: the height of the shadow rectangle
@@ -325,7 +323,7 @@ hdy_shadow_helper_clear_cache (HdyShadowHelper *self)
  * Draws a transition shadow. For caching to work, @width, @height and
  * @direction shouldn't change between calls.
  *
- * Since: 0.0.12
+ * Since: 1.0
  */
 void
 hdy_shadow_helper_draw_shadow (HdyShadowHelper *self,
diff --git a/src/hdy-squeezer.c b/src/hdy-squeezer.c
index 5468e2cf..51188408 100644
--- a/src/hdy-squeezer.c
+++ b/src/hdy-squeezer.c
@@ -25,21 +25,23 @@
 #include "hdy-css-private.h"
 
 /**
- * SECTION:hdy-squeezer
- * @short_description: A best fit container.
- * @Title: HdySqueezer
+ * HdySqueezer:
  *
- * The HdySqueezer widget is a container which only shows the first of its
+ * 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 hdy_squeezer_set_transition_type().
+ * with [method@Squeezer.set_transition_type].
+ *
+ * ## CSS nodes
  *
- * # CSS nodes
+ * `HdySqueezer` has a single CSS node with name `squeezer`.
  *
- * #HdySqueezer has a single CSS node with name squeezer.
+ * Since: 1.0
  */
 
 /**
@@ -47,8 +49,9 @@
  * @HDY_SQUEEZER_TRANSITION_TYPE_NONE: No transition
  * @HDY_SQUEEZER_TRANSITION_TYPE_CROSSFADE: A cross-fade
  *
- * These enumeration values describe the possible transitions between children
- * in a #HdySqueezer widget.
+ * Describes the possible transitions in a [class@Squeezer] widget.
+ *
+ * Since: 1.0
  */
 
 enum  {
@@ -1103,6 +1106,17 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                                     PROP_ORIENTATION,
                                     "orientation");
 
+  /**
+   * HdySqueezer:homogeneous: (attributes org.gtk.Property.get=hdy_squeezer_get_homogeneous 
org.gtk.Property.set=hdy_squeezer_set_homogeneous)
+   *
+   * 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.
+   *
+   * Since: 1.0
+   */
   props[PROP_HOMOGENEOUS] =
     g_param_spec_boolean ("homogeneous",
                           _("Homogeneous"),
@@ -1110,6 +1124,13 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                             FALSE,
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdySqueezer:visible-child: (attributes org.gtk.Property.get=hdy_squeezer_get_visible_child)
+   *
+   * The currently visible child.
+   *
+   * Since: 1.0
+   */
   props[PROP_VISIBLE_CHILD] =
     g_param_spec_object ("visible-child",
                          _("Visible child"),
@@ -1117,6 +1138,13 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                          GTK_TYPE_WIDGET,
                          G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdySqueezer:transition-duration: (attributes org.gtk.Property.get=hdy_squeezer_get_transition_duration 
org.gtk.Property.set=hdy_squeezer_set_transition_duration)
+   *
+   * The animation duration, in milliseconds.
+   *
+   * Since: 1.0
+   */
   props[PROP_TRANSITION_DURATION] =
     g_param_spec_uint ("transition-duration",
                        _("Transition duration"),
@@ -1124,6 +1152,19 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                        0, G_MAXUINT, 200,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdySqueezer:transition-type: (attributes org.gtk.Property.get=hdy_squeezer_get_transition_type 
org.gtk.Property.set=hdy_squeezer_set_transition_type)
+   *
+   * 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.
+   *
+   * Since: 1.0
+   */
   props[PROP_TRANSITION_TYPE] =
     g_param_spec_enum ("transition-type",
                        _("Transition type"),
@@ -1132,6 +1173,13 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                        HDY_SQUEEZER_TRANSITION_TYPE_NONE,
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
+  /**
+   * HdySqueezer:transition-running: (attributes org.gtk.Property.get=hdy_squeezer_get_transition_running)
+   *
+   * Whether a transition is currently running.
+   *
+   * Since: 1.0
+   */
   props[PROP_TRANSITION_RUNNING] =
     g_param_spec_boolean ("transition-running",
                           _("Transition running"),
@@ -1139,6 +1187,18 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                           FALSE,
                           G_PARAM_READABLE);
 
+  /**
+   * HdySqueezer:interpolate-size: (attributes org.gtk.Property.get=hdy_squeezer_get_interpolate_size 
org.gtk.Property.set=hdy_squeezer_set_interpolate_size)
+   *
+   * 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.
+   *
+   * Since: 1.0
+   */
   props[PROP_INTERPOLATE_SIZE] =
     g_param_spec_boolean ("interpolate-size",
                           _("Interpolate size"),
@@ -1147,13 +1207,14 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                             G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySqueezer:xalign:
+   * HdySqueezer:xalign: (attributes org.gtk.Property.get=hdy_squeezer_get_xalign 
org.gtk.Property.set=hdy_squeezer_set_xalign)
+   *
+   * 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 #GtkWidget:halign, which determines how the squeezer's size
+   * 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.
-   * The range goes from 0 (start) to 1 (end).
    *
    * This will affect the position of children too wide to fit in the squeezer
    * as they are fading out.
@@ -1169,13 +1230,14 @@ hdy_squeezer_class_init (HdySqueezerClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySqueezer:yalign:
+   * HdySqueezer:yalign: (attributes org.gtk.Property.get=hdy_squeezer_get_yalign 
org.gtk.Property.set=hdy_squeezer_set_yalign)
+   *
+   * 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 #GtkWidget:valign, which determines how the squeezer's size
+   * 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.
-   * The range goes from 0 (top) to 1 (bottom).
    *
    * This will affect the position of children too tall to fit in the squeezer
    * as they are fading out.
@@ -1220,9 +1282,11 @@ hdy_squeezer_init (HdySqueezer *self)
 /**
  * hdy_squeezer_new:
  *
- * Creates a new #HdySqueezer container.
+ * Creates a new `HdySqueezer`.
  *
- * Returns: a new #HdySqueezer
+ * Returns: the newly created `HdySqueezer`
+ *
+ * Since: 1.0
  */
 GtkWidget *
 hdy_squeezer_new (void)
@@ -1231,16 +1295,14 @@ hdy_squeezer_new (void)
 }
 
 /**
- * hdy_squeezer_get_homogeneous:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_homogeneous: (attributes org.gtk.Method.get_property=homogeneous)
+ * @self: a squeezer
  *
  * Gets whether @self is homogeneous.
  *
- * See hdy_squeezer_set_homogeneous().
+ * Returns: whether @self is homogeneous
  *
- * Returns: %TRUE if @self is homogeneous, %FALSE is not
- *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_squeezer_get_homogeneous (HdySqueezer *self)
@@ -1251,17 +1313,13 @@ hdy_squeezer_get_homogeneous (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_homogeneous:
- * @self: a #HdySqueezer
- * @homogeneous: %TRUE to make @self homogeneous
+ * hdy_squeezer_set_homogeneous: (attributes org.gtk.Method.set_property=homogeneous)
+ * @self: a squeezer
+ * @homogeneous: `TRUE` to make @self homogeneous
  *
- * Sets @self to be homogeneous or not. If it is homogeneous, @self will request
- * the same size for all its children for its opposite orientation, e.g. if
- * @self is oriented horizontally and is homogeneous, it will request the same
- * height for all its children. If it isn't, @self may change size when a
- * different child becomes visible.
+ * Sets whether all children have the same size for the opposite orientation.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_squeezer_set_homogeneous (HdySqueezer *self,
@@ -1283,13 +1341,14 @@ hdy_squeezer_set_homogeneous (HdySqueezer *self,
 }
 
 /**
- * hdy_squeezer_get_transition_duration:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_transition_duration: (attributes org.gtk.Method.get_property=transition-duration)
+ * @self: a squeezer
+ *
+ * Gets the amount of time that transitions between children will take.
  *
- * Gets the amount of time (in milliseconds) that transitions between children
- * in @self will take.
+ * Returns: the transition duration, in milliseconds
  *
- * Returns: the transition duration
+ * Since: 1.0
  */
 guint
 hdy_squeezer_get_transition_duration (HdySqueezer *self)
@@ -1300,11 +1359,13 @@ hdy_squeezer_get_transition_duration (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_transition_duration:
- * @self: a #HdySqueezer
+ * hdy_squeezer_set_transition_duration: (attributes org.gtk.Method.set_property=transition-duration)
+ * @self: a squeezer
  * @duration: the new duration, in milliseconds
  *
  * Sets the duration that transitions between children in @self will take.
+ *
+ * Since: 1.0
  */
 void
 hdy_squeezer_set_transition_duration (HdySqueezer *self,
@@ -1320,13 +1381,14 @@ hdy_squeezer_set_transition_duration (HdySqueezer *self,
 }
 
 /**
- * hdy_squeezer_get_transition_type:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_transition_type: (attributes org.gtk.Method.get_property=transition-type)
+ * @self: a squeezer
  *
- * Gets the type of animation that will be used for transitions between children
- * in @self.
+ * Gets the animation type that will be used for transitions between children.
  *
  * Returns: the current transition type of @self
+ *
+ * Since: 1.0
  */
 HdySqueezerTransitionType
 hdy_squeezer_get_transition_type (HdySqueezer *self)
@@ -1337,16 +1399,13 @@ hdy_squeezer_get_transition_type (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_transition_type:
- * @self: a #HdySqueezer
+ * hdy_squeezer_set_transition_type: (attributes org.gtk.Method.set_property=transition-type)
+ * @self: a squeezer
  * @transition: the new transition type
  *
- * Sets the type of animation that will be used for transitions between children
- * in @self. Available types include various kinds of fades and slides.
+ * Sets the animation type 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.
+ * Since: 1.0
  */
 void
 hdy_squeezer_set_transition_type (HdySqueezer               *self,
@@ -1362,12 +1421,14 @@ hdy_squeezer_set_transition_type (HdySqueezer               *self,
 }
 
 /**
- * hdy_squeezer_get_transition_running:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_transition_running: (attributes org.gtk.Method.get_property=transition-running)
+ * @self: a squeezer
  *
- * Gets whether @self is currently in a transition from one child to another.
+ * Gets whether a transition is currently running for @self.
  *
- * Returns: %TRUE if the transition is currently running, %FALSE otherwise.
+ * Returns: whether a transition is currently running
+ *
+ * Since: 1.0
  */
 gboolean
 hdy_squeezer_get_transition_running (HdySqueezer *self)
@@ -1378,16 +1439,14 @@ hdy_squeezer_get_transition_running (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_get_interpolate_size:
- * @self: A #HdySqueezer
+ * hdy_squeezer_get_interpolate_size: (attributes org.gtk.Method.get_property=interpolate-size)
+ * @self: a squeezer
  *
  * Gets whether @self should interpolate its size on visible child change.
  *
- * See hdy_squeezer_set_interpolate_size().
+ * Returns: whether @self interpolates its size on visible child change
  *
- * Returns: %TRUE if @self interpolates its size on visible child change, %FALSE if not
- *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_squeezer_get_interpolate_size (HdySqueezer *self)
@@ -1398,17 +1457,13 @@ hdy_squeezer_get_interpolate_size (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_interpolate_size:
- * @self: A #HdySqueezer
- * @interpolate_size: %TRUE to interpolate the size
+ * hdy_squeezer_set_interpolate_size: (attributes org.gtk.Method.set_property=interpolate-size)
+ * @self: a squeezer
+ * @interpolate_size: `TRUE` to interpolate the size
  *
- * Sets whether or not @self will interpolate the size of its opposing
- * orientation when changing the visible child. If %TRUE, @self 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 @self is horizontal, it will interpolate the its height.
+ * Sets whether @self should interpolate its size on visible child change.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_squeezer_set_interpolate_size (HdySqueezer *self,
@@ -1426,13 +1481,14 @@ hdy_squeezer_set_interpolate_size (HdySqueezer *self,
 }
 
 /**
- * hdy_squeezer_get_visible_child:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_visible_child: (attributes org.gtk.Method.get_property=visible-child)
+ * @self: a squeezer
+ *
+ * Gets the currently visible child of @self.
  *
- * Gets the currently visible child of @self, or %NULL if there are no visible
- * children.
+ * Returns: (transfer none) (nullable): the visible child
  *
- * Returns: (transfer none) (nullable): the visible child of the #HdySqueezer
+ * Since: 1.0
  */
 GtkWidget *
 hdy_squeezer_get_visible_child (HdySqueezer *self)
@@ -1444,14 +1500,16 @@ hdy_squeezer_get_visible_child (HdySqueezer *self)
 
 /**
  * hdy_squeezer_get_child_enabled:
- * @self: a #HdySqueezer
+ * @self: a squeezer
  * @child: a child of @self
  *
  * Gets whether @child is enabled.
  *
- * See hdy_squeezer_set_child_enabled().
+ * See [method@Squeezer.set_child_enabled].
+ *
+ * Returns: whether @child is enabled
  *
- * Returns: %TRUE if @child is enabled, %FALSE otherwise.
+ * Since: 1.0
  */
 gboolean
 hdy_squeezer_get_child_enabled (HdySqueezer *self,
@@ -1471,17 +1529,20 @@ hdy_squeezer_get_child_enabled (HdySqueezer *self,
 
 /**
  * hdy_squeezer_set_child_enabled:
- * @self: a #HdySqueezer
+ * @self: a squeezer
  * @child: a child of @self
- * @enabled: %TRUE to enable the child, %FALSE to disable it
+ * @enabled: whether to enable the child
+ *
+ * Sets whether @child is enabled.
  *
- * Make @self enable or disable @child. 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.
+ * 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.
+ *
+ * Since: 1.0
  */
 void
 hdy_squeezer_set_child_enabled (HdySqueezer *self,
@@ -1507,10 +1568,10 @@ hdy_squeezer_set_child_enabled (HdySqueezer *self,
 }
 
 /**
- * hdy_squeezer_get_xalign:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_xalign: (attributes org.gtk.Method.get_property=xalign)
+ * @self: a squeezer
  *
- * Gets the #HdySqueezer:xalign property for @self.
+ * Gets the horizontal alignment.
  *
  * Returns: the xalign property
  *
@@ -1525,11 +1586,11 @@ hdy_squeezer_get_xalign (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_xalign:
- * @self: a #HdySqueezer
+ * hdy_squeezer_set_xalign: (attributes org.gtk.Method.set_property=xalign)
+ * @self: a squeezer
  * @xalign: the new xalign value, between 0 and 1
  *
- * Sets the #HdySqueezer:xalign property for @self.
+ * Sets the horizontal alignment.
  *
  * Since: 1.0
  */
@@ -1550,10 +1611,10 @@ hdy_squeezer_set_xalign (HdySqueezer *self,
 }
 
 /**
- * hdy_squeezer_get_yalign:
- * @self: a #HdySqueezer
+ * hdy_squeezer_get_yalign: (attributes org.gtk.Method.get_property=yalign)
+ * @self: a squeezer
  *
- * Gets the #HdySqueezer:yalign property for @self.
+ * Gets the vertical alignment.
  *
  * Returns: the yalign property
  *
@@ -1568,11 +1629,11 @@ hdy_squeezer_get_yalign (HdySqueezer *self)
 }
 
 /**
- * hdy_squeezer_set_yalign:
- * @self: a #HdySqueezer
+ * hdy_squeezer_set_yalign: (attributes org.gtk.Method.set_property=yalign)
+ * @self: a squeezer
  * @yalign: the new yalign value, between 0 and 1
  *
- * Sets the #HdySqueezer:yalign property for @self.
+ * Sets the vertical alignment.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-stackable-box.c b/src/hdy-stackable-box.c
index 5904e09e..f866cb60 100644
--- a/src/hdy-stackable-box.c
+++ b/src/hdy-stackable-box.c
@@ -17,34 +17,38 @@
 #include "hdy-swipeable.h"
 
 /**
- * PRIVATE:hdy-stackable-box
- * @short_description: An adaptive container acting like a box or a stack.
- * @Title: HdyStackableBox
- * @stability: Private
- * @See_also: #HdyDeck, #HdyLeaflet
+ * HdyStackableBox:
  *
- * The #HdyStackableBox object can arrange the widgets it manages like #GtkBox
- * does or like a #GtkStack does, adapting to size changes by switching between
- * the two modes. These modes are named respectively “unfoled” and “folded”.
+ * An adaptive container acting like a box or a stack.
+ *
+ * The `HdyStackableBox` object can arrange the widgets it manages like
+ * [class Gtk Box] does or like a [class@Gtk.Stack] does, adapting to size
+ * changes by switching between the two modes. These modes are named
+ * respectively “unfoled” and “folded”.
  *
  * When there is enough space the children are displayed side by side, otherwise
  * only one is displayed. The threshold is dictated by the preferred minimum
  * sizes of the children.
  *
- * #HdyStackableBox is used as an internal implementation of #HdyDeck and
- * #HdyLeaflet.
+ * `HdyStackableBox` is used as an internal implementation of [class@Deck] and
+ * [class@Leaflet].
  *
  * Since: 1.0
  */
 
 /**
  * HdyStackableBoxTransitionType:
- * @HDY_STACKABLE_BOX_TRANSITION_TYPE_OVER: Cover the old page or uncover the new page, sliding from or 
towards the end according to orientation, text direction and children order
- * @HDY_STACKABLE_BOX_TRANSITION_TYPE_UNDER: Uncover the new page or cover the old page, sliding from or 
towards the start according to orientation, text direction and children order
- * @HDY_STACKABLE_BOX_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down according to the 
orientation, text direction and the children order
+ * @HDY_STACKABLE_BOX_TRANSITION_TYPE_OVER: Cover the old page or uncover the
+ *   new page, sliding from or towards the end according to orientation, text
+ *   direction and children order
+ * @HDY_STACKABLE_BOX_TRANSITION_TYPE_UNDER: Uncover the new page or cover the
+ *   old page, sliding from or towards the start according to orientation, text
+ *   direction and children order
+ * @HDY_STACKABLE_BOX_TRANSITION_TYPE_SLIDE: Slide from left, right, up or down
+ *   according to the orientation, text direction and the children order
  *
  * This enumeration value describes the possible transitions between modes and
- * children in a #HdyStackableBox widget.
+ * children in a [class@StackableBox] widget.
  *
  * New values may be added to this enumeration over time.
  *
@@ -692,11 +696,11 @@ hdy_stackable_box_start_mode_transition (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_folded:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
  * Gets whether @self is folded.
  *
- * Returns: whether @self is folded.
+ * Returns: whether @self is folded
  *
  * Since: 1.0
  */
@@ -738,16 +742,16 @@ hdy_stackable_box_set_folded (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_set_homogeneous:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @folded: the fold
  * @orientation: the orientation
- * @homogeneous: %TRUE to make @self homogeneous
+ * @homogeneous: `TRUE` to make @self homogeneous
  *
- * Sets the #HdyStackableBox to be homogeneous or not for the given fold and orientation.
- * If it is homogeneous, the #HdyStackableBox will request the same
- * width or height for all its children depending on the orientation.
- * If it isn't and it is folded, the widget may change width or height
- * when a different child becomes visible.
+ * Sets the [class@StackableBox] to be homogeneous or not for the given fold and
+ * orientation. If it is homogeneous, the [class@StackableBox] will request the
+ * same width or height for all its children depending on the orientation. If it
+ * isn't and it is folded, the widget may change width or height when a
+ * different child becomes visible.
  *
  * Since: 1.0
  */
@@ -775,14 +779,14 @@ hdy_stackable_box_set_homogeneous (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_homogeneous:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @folded: the fold
  * @orientation: the orientation
  *
- * Gets whether @self is homogeneous for the given fold and orientation.
- * See hdy_stackable_box_set_homogeneous().
+ * Gets whether @self is homogeneous for the given fold and orientation. See
+ * [method@StackableBox.set_homogeneous].
  *
- * Returns: whether @self is homogeneous for the given fold and orientation.
+ * Returns: whether @self is homogeneous for the given fold and orientation
  *
  * Since: 1.0
  */
@@ -800,10 +804,10 @@ hdy_stackable_box_get_homogeneous (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_transition_type:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
- * Gets the type of animation that will be used
- * for transitions between modes and children in @self.
+ * Gets the type of animation that will be used for transitions between modes
+ * and children in @self.
  *
  * Returns: the current transition type of @self
  *
@@ -819,7 +823,7 @@ hdy_stackable_box_get_transition_type (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_transition_type:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @transition: the new transition type
  *
  * Sets the type of animation that will be used for transitions between modes
@@ -847,12 +851,11 @@ hdy_stackable_box_set_transition_type (HdyStackableBox               *self,
 
 /**
  * hdy_stackable_box_get_mode_transition_duration:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between modes in @self will take.
+ * Returns the amount of time that transitions between modes in @self will take.
  *
- * Returns: the mode transition duration
+ * Returns: the mode transition duration, in milliseconds
  *
  * Since: 1.0
  */
@@ -866,11 +869,10 @@ hdy_stackable_box_get_mode_transition_duration (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_mode_transition_duration:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between modes in @self
- * will take.
+ * Sets the duration that transitions between modes in @self will take.
  *
  * Since: 1.0
  */
@@ -890,12 +892,11 @@ hdy_stackable_box_set_mode_transition_duration (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_child_transition_duration:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
- * Returns the amount of time (in milliseconds) that
- * transitions between children in @self will take.
+ * Gets the amount of time that transitions between children in @self will take.
  *
- * Returns: the child transition duration
+ * Returns: the child transition duration, in milliseconds
  *
  * Since: 1.0
  */
@@ -909,11 +910,10 @@ hdy_stackable_box_get_child_transition_duration (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_child_transition_duration:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @duration: the new duration, in milliseconds
  *
- * Sets the duration that transitions between children in @self
- * will take.
+ * Sets the duration that transitions between children in @self will take.
  *
  * Since: 1.0
  */
@@ -933,7 +933,7 @@ hdy_stackable_box_set_child_transition_duration (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_visible_child:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
  * Gets the visible child widget.
  *
@@ -954,13 +954,14 @@ hdy_stackable_box_get_visible_child (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_visible_child:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @visible_child: the new child
  *
  * Makes @visible_child visible using a transition determined by
- * HdyStackableBox:transition-type and HdyStackableBox:child-transition-duration.
- * The transition can be cancelled by the user, in which case visible child will
- * change back to the previously visible child.
+ * [property@StackableBox:transition-type] and
+ * [property@StackableBox:child-transition-duration]. The transition can be
+ * cancelled by the user, in which case visible child will change back to the
+ * previously visible child.
  *
  * Since: 1.0
  */
@@ -984,7 +985,7 @@ hdy_stackable_box_set_visible_child (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_visible_child_name:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
  * Gets the name of the currently visible child widget.
  *
@@ -1005,12 +1006,12 @@ hdy_stackable_box_get_visible_child_name (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_visible_child_name:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @name: the name of a child
  *
  * Makes the child with the name @name visible.
  *
- * See hdy_stackable_box_set_visible_child() for more details.
+ * See [method@StackableBox.set_visible_child] for more details.
  *
  * Since: 1.0
  */
@@ -1034,12 +1035,11 @@ hdy_stackable_box_set_visible_child_name (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_child_transition_running:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
- * Returns whether @self is currently in a transition from one page to
- * another.
+ * Returns whether @self is currently in a transition from one page to another.
  *
- * Returns: %TRUE if the transition is currently running, %FALSE otherwise.
+ * Returns: `TRUE` if the transition is currently running
  *
  * Since: 1.0
  */
@@ -1054,14 +1054,14 @@ hdy_stackable_box_get_child_transition_running (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_interpolate_size:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @interpolate_size: the new value
  *
- * Sets whether or not @self will interpolate its size when
- * changing the visible child. If the #HdyStackableBox: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.
+ * Sets whether or not @self will interpolate its size when changing the visible
+ * child. If the [property@StackableBox: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.
  *
  * Since: 1.0
  */
@@ -1082,12 +1082,12 @@ hdy_stackable_box_set_interpolate_size (HdyStackableBox *self,
 
 /**
  * hdy_stackable_box_get_interpolate_size:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  *
- * Returns whether the #HdyStackableBox is set up to interpolate between
- * the sizes of children on page switch.
+ * Returns whether the [class@StackableBox] is set up to interpolate between the
+ * sizes of children on page switch.
  *
- * Returns: %TRUE if child sizes are interpolated
+ * Returns: `TRUE` if child sizes are interpolated
  *
  * Since: 1.0
  */
@@ -1101,11 +1101,11 @@ hdy_stackable_box_get_interpolate_size (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_can_swipe_back:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @can_swipe_back: the new value
  *
  * Sets whether or not @self allows switching to the previous child that has
- * 'navigatable' child property set to %TRUE via a swipe gesture
+ * 'navigatable' child property set to `TRUE` via a swipe gesture
  *
  * Since: 1.0
  */
@@ -1127,12 +1127,13 @@ hdy_stackable_box_set_can_swipe_back (HdyStackableBox *self,
 }
 
 /**
- * hdy_stackable_box_get_can_swipe_back
- * @self: a #HdyStackableBox
+ * hdy_stackable_box_get_can_swipe_back:
+ * @self: a stackable box
  *
- * Returns whether the #HdyStackableBox allows swiping to the previous child.
+ * Returns whether the [class@StackableBox] allows swiping to the previous
+ * child.
  *
- * Returns: %TRUE if back swipe is enabled.
+ * Returns: `TRUE` if back swipe is enabled
  *
  * Since: 1.0
  */
@@ -1146,11 +1147,11 @@ hdy_stackable_box_get_can_swipe_back (HdyStackableBox *self)
 
 /**
  * hdy_stackable_box_set_can_swipe_forward:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @can_swipe_forward: the new value
  *
  * Sets whether or not @self allows switching to the next child that has
- * 'navigatable' child property set to %TRUE via a swipe gesture.
+ * 'navigatable' child property set to `TRUE` via a swipe gesture.
  *
  * Since: 1.0
  */
@@ -1172,12 +1173,12 @@ hdy_stackable_box_set_can_swipe_forward (HdyStackableBox *self,
 }
 
 /**
- * hdy_stackable_box_get_can_swipe_forward
- * @self: a #HdyStackableBox
+ * hdy_stackable_box_get_can_swipe_forward:
+ * @self: a stackable box
  *
- * Returns whether the #HdyStackableBox allows swiping to the next child.
+ * Returns whether the [class@StackableBox] allows swiping to the next child.
  *
- * Returns: %TRUE if forward swipe is enabled.
+ * Returns: `TRUE` if forward swipe is enabled
  *
  * Since: 1.0
  */
@@ -1214,16 +1215,15 @@ find_swipeable_child (HdyStackableBox        *self,
 }
 
 /**
- * hdy_stackable_box_get_adjacent_child
- * @self: a #HdyStackableBox
+ * hdy_stackable_box_get_adjacent_child:
+ * @self: a stackable box
  * @direction: the direction
  *
  * Gets the previous or next child that doesn't have 'navigatable' child
- * property set to %FALSE, or %NULL if it doesn't exist. This will be the same
- * widget hdy_stackable_box_navigate() will navigate to.
+ * property set to `FALSE`, or `NULL` if it doesn't exist. This will be the same
+ * widget [method@Stackablebox.navigate] will navigate to.
  *
- * Returns: (nullable) (transfer none): the previous or next child, or
- *   %NULL if it doesn't exist.
+ * Returns: (nullable) (transfer none): the previous or next navigatable child
  *
  * Since: 1.0
  */
@@ -1244,15 +1244,15 @@ hdy_stackable_box_get_adjacent_child (HdyStackableBox        *self,
 }
 
 /**
- * hdy_stackable_box_navigate
- * @self: a #HdyStackableBox
+ * hdy_stackable_box_navigate:
+ * @self: a stackable box
  * @direction: the direction
  *
- * Switches to the previous or next child that doesn't have 'navigatable'
- * child property set to %FALSE, similar to performing a swipe gesture to go
- * in @direction.
+ * Switches to the previous or next child that doesn't have 'navigatable' child
+ * property set to `FALSE`, similar to performing a swipe gesture to go in
+ * @direction.
  *
- * Returns: %TRUE if visible child was changed, %FALSE otherwise.
+ * Returns: `TRUE` if visible child was changed
  *
  * Since: 1.0
  */
@@ -1276,10 +1276,10 @@ hdy_stackable_box_navigate (HdyStackableBox        *self,
 
 /**
  * hdy_stackable_box_get_child_by_name:
- * @self: a #HdyStackableBox
+ * @self: a stackable box
  * @name: the name of the child to find
  *
- * Finds the child of @self with the name given as the argument. Returns %NULL
+ * Finds the child of @self with the name given as the argument. Returns `NULL`
  * if there is no child with this name.
  *
  * Returns: (transfer none) (nullable): the requested child of @self
@@ -3025,9 +3025,9 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
   /**
    * HdyStackableBox:folded:
    *
-   * %TRUE if the widget is folded.
+   * `TRUE` if the widget is folded.
    *
-   * The #HdyStackableBox will be folded if the size allocated to it is smaller
+   * The [class@StackableBox] 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.
    */
@@ -3041,7 +3041,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
   /**
    * HdyStackableBox:hhomogeneous_folded:
    *
-   * %TRUE if the widget allocates the same width for all children when folded.
+   * `TRUE` if the widget allocates the same width for all children when folded.
    */
   props[PROP_HHOMOGENEOUS_FOLDED] =
     g_param_spec_boolean ("hhomogeneous-folded",
@@ -3053,7 +3053,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
   /**
    * HdyStackableBox:vhomogeneous_folded:
    *
-   * %TRUE if the widget allocates the same height for all children when folded.
+   * `TRUE` if the widget allocates the same height for all children when folded.
    */
   props[PROP_VHOMOGENEOUS_FOLDED] =
     g_param_spec_boolean ("vhomogeneous-folded",
@@ -3065,7 +3065,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
   /**
    * HdyStackableBox:hhomogeneous_unfolded:
    *
-   * %TRUE if the widget allocates the same width for all children when unfolded.
+   * `TRUE` if the widget allocates the same width for all children when unfolded.
    */
   props[PROP_HHOMOGENEOUS_UNFOLDED] =
     g_param_spec_boolean ("hhomogeneous-unfolded",
@@ -3077,7 +3077,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
   /**
    * HdyStackableBox:vhomogeneous_unfolded:
    *
-   * %TRUE if the widget allocates the same height for all children when unfolded.
+   * `TRUE` if the widget allocates the same height for all children when unfolded.
    */
   props[PROP_VHOMOGENEOUS_UNFOLDED] =
     g_param_spec_boolean ("vhomogeneous-unfolded",
@@ -3151,7 +3151,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
    * HdyStackableBox:can-swipe-back:
    *
    * Whether or not the widget allows switching to the previous child that has
-   * 'navigatable' child property set to %TRUE via a swipe gesture.
+   * 'navigatable' child property set to `TRUE` via a swipe gesture.
    *
    * Since: 1.0
    */
@@ -3166,7 +3166,7 @@ hdy_stackable_box_class_init (HdyStackableBoxClass *klass)
    * HdyStackableBox:can-swipe-forward:
    *
    * Whether or not the widget allows switching to the next child that has
-   * 'navigatable' child property set to %TRUE via a swipe gesture.
+   * 'navigatable' child property set to `TRUE` via a swipe gesture.
    *
    * Since: 1.0
    */
diff --git a/src/hdy-status-page.c b/src/hdy-status-page.c
index 9a928093..f12d72b1 100644
--- a/src/hdy-status-page.c
+++ b/src/hdy-status-page.c
@@ -10,16 +10,16 @@
 #include "hdy-status-page.h"
 
 /**
- * SECTION:hdy-status-page
- * @short_description: A page used for empty/error states and similar use-cases.
- * @Title: HdyStatusPage
+ * HdyStatusPage:
  *
- * The #HdyStatusPage widget can have an icon, a title, a description and a
+ * 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
+ * ## CSS nodes
  *
- * #HdyStatusPage has a main CSS node with name statuspage.
+ * `HdyStatusPage` has a main CSS node with name `statuspage`.
  *
  * Since: 1.2
  */
@@ -210,7 +210,7 @@ hdy_status_page_class_init (HdyStatusPageClass *klass)
   container_class->forall = hdy_status_page_forall;
 
   /**
-   * HdyStatusPage:icon-name:
+   * HdyStatusPage:icon-name: (attributes org.gtk.Property.get=hdy_status_page_get_icon_name 
org.gtk.Property.set=hdy_status_page_set_icon_name)
    *
    * The name of the icon to be used.
    *
@@ -224,7 +224,7 @@ hdy_status_page_class_init (HdyStatusPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyStatusPage:title:
+   * HdyStatusPage:title: (attributes org.gtk.Property.get=hdy_status_page_get_title 
org.gtk.Property.set=hdy_status_page_set_title)
    *
    * The title to be displayed below the icon.
    *
@@ -238,7 +238,7 @@ hdy_status_page_class_init (HdyStatusPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyStatusPage:description:
+   * HdyStatusPage:description: (attributes org.gtk.Property.get=hdy_status_page_get_description 
org.gtk.Property.set=hdy_status_page_set_description)
    *
    * The description to be displayed below the title.
    *
@@ -276,9 +276,9 @@ hdy_status_page_init (HdyStatusPage *self)
 /**
  * hdy_status_page_new:
  *
- * Creates a new #HdyStatusPage.
+ * Creates a new `HdyStatusPage`.
  *
- * Returns: a new #HdyStatusPage
+ * Returns: the newly created `HdyStatusPage`
  *
  * Since: 1.2
  */
@@ -289,12 +289,12 @@ hdy_status_page_new (void)
 }
 
 /**
- * hdy_status_page_get_icon_name:
- * @self: a #HdyStatusPage
+ * hdy_status_page_get_icon_name: (attributes org.gtk.Method.get_property=icon-name)
+ * @self: a status page
  *
  * Gets the icon name for @self.
  *
- * Returns: (transfer none) (nullable): the icon name for @self.
+ * Returns: (transfer none) (nullable): the icon name for @self
  *
  * Since: 1.2
  */
@@ -305,8 +305,8 @@ hdy_status_page_get_icon_name (HdyStatusPage *self)
 }
 
 /**
- * hdy_status_page_set_icon_name:
- * @self: a #HdyStatusPage
+ * hdy_status_page_set_icon_name: (attributes org.gtk.Method.set_property=icon-name)
+ * @self: a status page
  * @icon_name: (nullable): the icon name
  *
  * Sets the icon name for @self.
@@ -334,12 +334,12 @@ hdy_status_page_set_icon_name (HdyStatusPage *self,
 }
 
 /**
- * hdy_status_page_get_title:
- * @self: a #HdyStatusPage
+ * hdy_status_page_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a status page
  *
  * Gets the title for @self.
  *
- * Returns: (transfer none) (nullable): the title for @self, or %NULL.
+ * Returns: (transfer none) (nullable): the title for @self
  *
  * Since: 1.2
  */
@@ -352,8 +352,8 @@ hdy_status_page_get_title (HdyStatusPage *self)
 }
 
 /**
- * hdy_status_page_set_title:
- * @self: a #HdyStatusPage
+ * hdy_status_page_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a status page
  * @title: (nullable): the title
  *
  * Sets the title for @self.
@@ -376,12 +376,12 @@ hdy_status_page_set_title (HdyStatusPage *self,
 }
 
 /**
- * hdy_status_page_get_description:
- * @self: a #HdyStatusPage
+ * hdy_status_page_get_description: (attributes org.gtk.Method.get_property=description)
+ * @self: a status page
  *
  * Gets the description for @self.
  *
- * Returns: (transfer none) (nullable): the description for @self, or %NULL.
+ * Returns: (transfer none) (nullable): the description for @self
  *
  * Since: 1.2
  */
@@ -394,8 +394,8 @@ hdy_status_page_get_description (HdyStatusPage *self)
 }
 
 /**
- * hdy_status_page_set_description:
- * @self: a #HdyStatusPage
+ * hdy_status_page_set_description: (attributes org.gtk.Method.set_property=description)
+ * @self: a status page
  * @description: (nullable): the description
  *
  * Sets the description for @self.
diff --git a/src/hdy-style-manager.c b/src/hdy-style-manager.c
index f18d4996..0d5a9555 100644
--- a/src/hdy-style-manager.c
+++ b/src/hdy-style-manager.c
@@ -19,8 +19,8 @@
 /**
  * HdyColorScheme:
  * @HDY_COLOR_SCHEME_DEFAULT: Inherit the parent color-scheme. When set on the
- *   #HdyStyleManager returned by hdy_style_manager_get_default(), it's
- *   equivalent to %HDY_COLOR_SCHEME_FORCE_LIGHT.
+ *   [class@StyleManager] returned by [func@StyleManager.get_default], it's
+ *   equivalent to `HDY_COLOR_SCHEME_FORCE_LIGHT`.
  * @HDY_COLOR_SCHEME_FORCE_LIGHT: Always use light appearance.
  * @HDY_COLOR_SCHEME_PREFER_LIGHT: Use light appearance unless the system
  *   prefers dark colors.
@@ -28,24 +28,24 @@
  *   light colors.
  * @HDY_COLOR_SCHEME_FORCE_DARK: Always use dark appearance.
  *
- * Application color schemes for #HdyStyleManager:color-scheme.
+ * Application color schemes for [property@StyleManager:color-scheme].
  *
  * Since: 1.6
  */
 
 /**
- * SECTION:hdy-style-manager
- * @short_description: A class for managing application-wide styling
- * @title: HdyStyleManager
+ * HdyStyleManager:
  *
- * #HdyStyleManager provides a way to query and influence the application styles
- * such as whether to use dark or high contrast appearance.
+ * A class for managing application-wide styling.
  *
- * It allows to set the color scheme via the #HdyStyleManager:color-scheme
- * property, and to query the current appearance, as well as whether a
- * system-wide color scheme preference exists.
+ * `HdyStyleManager` provides a way to query and influence the application
+ * styles, such as whether to use dark or high contrast appearance.
  *
- * Important: #GtkSettings:gtk-application-prefer-dark-theme should
+ * 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.
  *
@@ -521,12 +521,12 @@ hdy_style_manager_class_init (HdyStyleManagerClass *klass)
   object_class->set_property = hdy_style_manager_set_property;
 
   /**
-   * HdyStyleManager:display:
+   * HdyStyleManager:display: (attributes org.gtk.Property.get=hdy_style_manager_get_display)
    *
    * The display the style manager is associated with.
    *
-   * The display will be %NULL for the style manager returned by
-   * hdy_style_manager_get_default().
+   * The display will be `NULL` for the style manager returned by
+   * [func@StyleManager.get_default].
    *
    * Since: 1.6
    */
@@ -538,37 +538,39 @@ hdy_style_manager_class_init (HdyStyleManagerClass *klass)
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
 
   /**
-   * HdyStyleManager:color-scheme:
+   * HdyStyleManager:color-scheme: (attributes org.gtk.Property.get=hdy_style_manager_get_color_scheme 
org.gtk.Property.set=hdy_style_manager_set_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 #HdyStyleManager:dark
-   * property can be used to query the current effective appearance.
+   * 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
+   * 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
+   * 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
+   * 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-#GdkDisplay style manager has its color scheme set to
-   * %HDY_COLOR_SCHEME_DEFAULT, it will inherit the color scheme from the
+   * 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.
+   * For the default style manager, `HDY_COLOR_SCHEME_DEFAULT` is equivalent to
+   * `HDY_COLOR_SCHEME_FORCE_LIGHT`.
    *
-   * The #HdyStyleManager:system-supports-color-schemes property can be used to
-   * check if the current environment provides a color scheme dddpreference.
+   * The [property@StyleManager:system-supports-color-schemes] property can be
+   * used to check if the current environment provides a color scheme
+   * dddpreference.
    *
    * Since: 1.6
    */
@@ -581,17 +583,17 @@ hdy_style_manager_class_init (HdyStyleManagerClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyStyleManager:system-supports-color-schemes:
+   * HdyStyleManager:system-supports-color-schemes: (attributes 
org.gtk.Property.get=hdy_style_manager_get_system_supports_color_schemes)
    *
    * 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.
+   * separate appearance switcher if it's set to `FALSE`.
    *
    * It's only set at startup and cannot change its value later.
    *
-   * See #HdyStyleManager:color-scheme.
+   * See [property@StyleManager:color-scheme].
    *
    * Since: 1.6
    */
@@ -603,12 +605,12 @@ hdy_style_manager_class_init (HdyStyleManagerClass *klass)
                           G_PARAM_READABLE);
 
   /**
-   * HdyStyleManager:dark:
+   * HdyStyleManager:dark: (attributes org.gtk.Property.get=hdy_style_manager_get_dark)
    *
    * Whether the application is using dark appearance.
    *
    * This property can be used to query the current appearance, as requested via
-   * #HdyStyleManager:color-scheme.
+   * [property@StyleManager:color-scheme].
    *
    * Since: 1.6
    */
@@ -620,7 +622,7 @@ hdy_style_manager_class_init (HdyStyleManagerClass *klass)
                           G_PARAM_READABLE);
 
   /**
-   * HdyStyleManager:high-contrast:
+   * HdyStyleManager:high-contrast: (attributes org.gtk.Property.get=hdy_style_manager_get_high_contrast)
    *
    * Whether the application is using high contrast appearance.
    *
@@ -674,12 +676,12 @@ hdy_style_manager_ensure (void)
 /**
  * hdy_style_manager_get_default:
  *
- * Gets the default #HdyStyleManager instance.
+ * Gets the default [class@StyleManager] instance.
  *
- * It manages all #GdkDisplay instances unless the style manager for that
- * display has an override.
+ * It manages all [class@Gdk.Display] instances unless the style manager for
+ * that display has an override.
  *
- * See hdy_style_manager_get_for_display().
+ * See [func@StyleManager.get_for_display].
  *
  * Returns: (transfer none): the default style manager
  *
@@ -696,14 +698,14 @@ hdy_style_manager_get_default (void)
 
 /**
  * hdy_style_manager_get_for_display:
- * @display: a #GdkDisplay
+ * @display: a display
  *
- * Gets the #HdyStyleManager instance managing @display.
+ * 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 hdy_style_manager_get_default() instead.
+ * Most applications should use [func@StyleManager.get_default] instead.
  *
  * Returns: (transfer none): the style manager for @display
  *
@@ -723,13 +725,13 @@ hdy_style_manager_get_for_display (GdkDisplay *display)
 }
 
 /**
- * hdy_style_manager_get_display:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_get_display: (attributes org.gtk.Method.get_property=display)
+ * @self: a style manager
  *
  * Gets the display the style manager is associated with.
  *
- * The display will be %NULL for the style manager returned by
- * hdy_style_manager_get_default().
+ * The display will be `NULL` for the style manager returned by
+ * [func@StyleManager.get_default].
  *
  * Returns: (transfer none): (nullable): the display
  *
@@ -744,8 +746,8 @@ hdy_style_manager_get_display (HdyStyleManager *self)
 }
 
 /**
- * hdy_style_manager_get_color_scheme:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_get_color_scheme: (attributes org.gtk.Method.get_property=color-scheme)
+ * @self: a style manager
  *
  * Gets the requested application color scheme.
  *
@@ -762,15 +764,16 @@ hdy_style_manager_get_color_scheme (HdyStyleManager *self)
 }
 
 /**
- * hdy_style_manager_set_color_scheme:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_set_color_scheme: (attributes org.gtk.Method.set_property=color-scheme)
+ * @self: a style manager
  * @color_scheme: the color scheme
  *
  * 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 #HdyStyleManager:dark
- * property can be used to query the current effective appearance.
+ * scheme and the system preferred color scheme. The
+ * [property@StyleManager:dark] property can be used to query the current
+ * effective appearance.
  *
  * Since: 1.6
  */
@@ -806,8 +809,8 @@ hdy_style_manager_set_color_scheme (HdyStyleManager *self,
 }
 
 /**
- * hdy_style_manager_get_system_supports_color_schemes:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_get_system_supports_color_schemes: (attributes 
org.gtk.Method.get_property=system-supports-color-schemes)
+ * @self: a style manager
  *
  * Gets whether the system supports color schemes.
  *
@@ -824,8 +827,8 @@ hdy_style_manager_get_system_supports_color_schemes (HdyStyleManager *self)
 }
 
 /**
- * hdy_style_manager_get_dark:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_get_dark: (attributes org.gtk.Method.get_property=dark)
+ * @self: a style manager
  *
  * Gets whether the application is using dark appearance.
  *
@@ -842,8 +845,8 @@ hdy_style_manager_get_high_contrast (HdyStyleManager *self)
 }
 
 /**
- * hdy_style_manager_get_high_contrast:
- * @self: a #HdyStyleManager
+ * hdy_style_manager_get_high_contrast: (attributes org.gtk.Method.get_property=high-contrast)
+ * @self: a style manager
  *
  * Gets whether the application is using high contrast appearance.
  *
diff --git a/src/hdy-swipe-group.c b/src/hdy-swipe-group.c
index c260cd9a..fcdf5669 100644
--- a/src/hdy-swipe-group.c
+++ b/src/hdy-swipe-group.c
@@ -19,39 +19,38 @@
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 
 /**
- * SECTION:hdy-swipe-group
- * @short_description: An object for syncing swipeable widgets.
- * @title: HdySwipeGroup
- * @See_also: #HdyCarousel, #HdyDeck, #HdyLeaflet, #HdySwipeable
+ * HdySwipeGroup:
  *
- * The #HdySwipeGroup object can be used to sync multiple swipeable widgets
- * that implement the #HdySwipeable interface, such as #HdyCarousel, so that
- * animating one of them also animates all the other widgets in the group.
+ * 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 as GtkBuildable
  *
- * #HdySwipeGroup can be created in an UI definition. The list of swipeable
+ * `HdySwipeGroup` can be created in an UI definition. The list of swipeable
  * widgets is specified with a &lt;swipeables&gt; element containing multiple
  * &lt;swipeable&gt; 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, #HdyWindow and #HdyApplicationWindow
- * allow using a single leaflet for both content and header bar, without the
- * need to sync them.
+ * `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.
  *
- * Since: 0.0.12
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
@@ -98,11 +97,11 @@ swipeable_destroyed (HdySwipeGroup *self,
 /**
  * hdy_swipe_group_new:
  *
- * Create a new #HdySwipeGroup object.
+ * Creates a new `HdySwipeGroup`.
  *
- * Returns: The newly created #HdySwipeGroup object
+ * Returns: the newly created `HdySwipeGroup`
  *
- * Since: 0.0.12
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
@@ -221,13 +220,15 @@ end_swipe_cb (HdySwipeGroup   *self,
 
 /**
  * hdy_swipe_group_add_swipeable:
- * @self: a #HdySwipeGroup
- * @swipeable: the #HdySwipeable to add
+ * @self: a swipe group
+ * @swipeable: the [iface@Swipeable] to add
+ *
+ * Adds a swipeable to @self.
  *
- * When the widget is destroyed or no longer referenced elsewhere, it will
- * be removed from the swipe group.
+ * When the widget is destroyed or no longer referenced elsewhere, it will be
+ * removed from the swipe group.
  *
- * Since: 0.0.12
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
@@ -259,12 +260,12 @@ hdy_swipe_group_add_swipeable (HdySwipeGroup *self,
 
 /**
  * hdy_swipe_group_remove_swipeable:
- * @self: a #HdySwipeGroup
- * @swipeable: the #HdySwipeable to remove
+ * @self: a swipe group
+ * @swipeable: the [iface@Swipeable] to remove
  *
- * Removes a widget from a #HdySwipeGroup.
+ * Removes a widget from a [class@SwipeGroup].
  *
- * Since: 0.0.12
+ * Since: 1.0
  *
  * Deprecated: 1.4
  **/
@@ -291,14 +292,13 @@ hdy_swipe_group_remove_swipeable (HdySwipeGroup *self,
 
 /**
  * hdy_swipe_group_get_swipeables:
- * @self: a #HdySwipeGroup
+ * @self: a swipe group
  *
- * Returns the list of swipeables associated with @self.
+ * Gets the list of swipeables associated with @self.
  *
- * Returns:  (element-type HdySwipeable) (transfer none): a #GSList of
- *   swipeables. The list is owned by libhandy and should not be modified.
+ * Returns: (element-type HdySwipeable) (transfer none): a list of swipeables
  *
- * Since: 0.0.12
+ * Since: 1.0
  *
  * Deprecated: 1.4
  **/
@@ -343,18 +343,18 @@ hdy_swipe_group_dispose (GObject *object)
 }
 
 /*< private >
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the markup parse context
  * @parent_name: the name of the expected parent element
  * @error: return location for an error
  *
- * Checks that the parent element of the currently handled
- * start tag is @parent_name and set @error if it isn't.
+ * Checks that the parent element of the currently handled start tag is
+ * @parent_name and set @error if it isn't.
  *
- * This is intended to be called in start_element vfuncs to
- * ensure that element nesting is as intended.
+ * This is intended to be called in start_element vfuncs to ensure that element
+ * nesting is as intended.
  *
- * Returns: %TRUE if @parent_name is the parent element
+ * Returns: whether @parent_name is the parent element
  */
 /* This has been copied and modified from gtkbuilder.c. */
 static gboolean
@@ -390,14 +390,13 @@ _gtk_builder_check_parent (GtkBuilder           *builder,
 
 /*< private >
  * _gtk_builder_prefix_error:
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the markup parse context
  * @error: an error
  *
- * Calls g_prefix_error() to prepend a filename:line:column marker
- * to the given error. The filename is taken from @builder, and
- * the line and column are obtained by calling
- * g_markup_parse_context_get_position().
+ * Calls g_prefix_error() to prepend a filename:line:column marker to the given
+ * error. The filename is taken from @builder, and the line and column are
+ * obtained by calling g_markup_parse_context_get_position().
  *
  * This is intended to be called on errors returned by
  * g_markup_collect_attributes() in a start_element vfunc.
@@ -416,14 +415,14 @@ _gtk_builder_prefix_error (GtkBuilder           *builder,
 
 /*< private >
  * _gtk_builder_error_unhandled_tag:
- * @builder: a #GtkBuilder
- * @context: the #GMarkupParseContext
+ * @builder: a builder
+ * @context: the [GLib.MarkupParseContext]
  * @object: name of the object that is being handled
  * @element_name: name of the element whose start tag is being handled
  * @error: return location for the error
  *
- * Sets @error to a suitable error indicating that an @element_name
- * tag is not expected in the custom markup for @object.
+ * Sets @error to a suitable error indicating that an @element_name tag is not
+ * expected in the custom markup for @object.
  *
  * This is intended to be called in a start_element vfunc.
  */
diff --git a/src/hdy-swipe-tracker.c b/src/hdy-swipe-tracker.c
index 59620964..7224ecd2 100644
--- a/src/hdy-swipe-tracker.c
+++ b/src/hdy-swipe-tracker.c
@@ -32,18 +32,18 @@
 #define SIGN(x) ((x) > 0.0 ? 1.0 : ((x) < 0.0 ? -1.0 : 0.0))
 
 /**
- * SECTION:hdy-swipe-tracker
- * @short_description: Swipe tracker used in #HdyCarousel and #HdyLeaflet
- * @title: HdySwipeTracker
- * @See_also: #HdyCarousel, #HdyDeck, #HdyLeaflet, #HdySwipeable
+ * HdySwipeTracker:
  *
- * The HdySwipeTracker object can be used for implementing widgets with swipe
+ * 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 #HdySwipeTracker:enabled property.
- * If they expect to use horizontal orientation, #HdySwipeTracker:reversed
- * property can be used for supporting RTL text direction.
+ * 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.
  *
  * Since: 1.0
  */
@@ -1052,9 +1052,9 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
   object_class->set_property = hdy_swipe_tracker_set_property;
 
   /**
-   * HdySwipeTracker:swipeable:
+   * HdySwipeTracker:swipeable: (attributes org.gtk.Property.get=hdy_swipe_tracker_get_swipeable)
    *
-   * The widget the swipe tracker is attached to. Must not be %NULL.
+   * The widget the swipe tracker is attached to. Must not be `NULL`.
    *
    * Since: 1.0
    */
@@ -1066,10 +1066,12 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
 
   /**
-   * HdySwipeTracker:enabled:
+   * HdySwipeTracker:enabled: (attributes org.gtk.Property.get=hdy_swipe_tracker_get_enabled 
org.gtk.Property.set=hdy_swipe_tracker_set_enabled)
+   *
+   * Whether the swipe tracker is enabled.
    *
-   * 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.
+   * When it's not enabled, no events will be processed. Usually widgets will
+   * want to expose this via a property.
    *
    * Since: 1.0
    */
@@ -1081,10 +1083,12 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySwipeTracker:reversed:
+   * HdySwipeTracker:reversed: (attributes org.gtk.Property.get=hdy_swipe_tracker_get_reversed 
org.gtk.Property.set=hdy_swipe_tracker_set_reversed)
+   *
+   * Whether to reverse the swipe direction.
    *
-   * Whether to reverse the swipe direction. If the swipe tracker is horizontal,
-   * it can be used for supporting RTL text direction.
+   * If the swipe tracker is horizontal, it can be used for supporting RTL text
+   * direction.
    *
    * Since: 1.0
    */
@@ -1096,10 +1100,11 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySwipeTracker:allow-mouse-drag:
+   * HdySwipeTracker:allow-mouse-drag: (attributes 
org.gtk.Property.get=hdy_swipe_tracker_get_allow_mouse_drag 
org.gtk.Property.set=hdy_swipe_tracker_set_allow_mouse_drag)
+   *
+   * Whether to allow dragging with mouse pointer.
    *
-   * Whether to allow dragging with mouse pointer. This should usually be
-   * %FALSE.
+   * This should usually be `FALSE`.
    *
    * Since: 1.0
    */
@@ -1111,10 +1116,12 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdySwipeTracker:allow-long-swipes:
+   * HdySwipeTracker:allow-long-swipes: (attributes 
org.gtk.Property.get=hdy_swipe_tracker_get_allow_long_swipes 
org.gtk.Property.set=hdy_swipe_tracker_set_allow_long_swipes)
+   *
+   * Whether to allow swiping for more than one snap point at a time.
    *
-   * 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.
+   * If the value is `FALSE`, each swipe can only move to the adjacent snap
+   * points.
    *
    * Since: 1.2
    */
@@ -1133,10 +1140,10 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
 
   /**
    * HdySwipeTracker::begin-swipe:
-   * @self: The #HdySwipeTracker instance
-   * @direction: The direction of the swipe
-   * @direct: %TRUE if the swipe is directly triggered by a gesture,
-   *   %FALSE if it's triggered via a #HdySwipeGroup
+   * @self: a swipe tracker
+   * @direction: the direction of the swipe
+   * @direct: `TRUE` if the swipe is directly triggered by a gesture,
+   *   `FALSE` if it's triggered via a [class@SwipeGroup]
    *
    * This signal is emitted when a possible swipe is detected.
    *
@@ -1157,8 +1164,8 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
 
   /**
    * HdySwipeTracker::update-swipe:
-   * @self: The #HdySwipeTracker instance
-   * @progress: The current animation progress value
+   * @self: a swipe tracker
+   * @progress: the current animation progress value
    *
    * This signal is emitted every time the progress value changes.
    *
@@ -1176,9 +1183,9 @@ hdy_swipe_tracker_class_init (HdySwipeTrackerClass *klass)
 
   /**
    * HdySwipeTracker::end-swipe:
-   * @self: The #HdySwipeTracker instance
-   * @duration: Snap-back animation duration in milliseconds
-   * @to: The progress value to animate to
+   * @self: a swipe tracker
+   * @duration: snap-back animation duration, in milliseconds
+   * @to: the progress value to animate to
    *
    * This signal is emitted as soon as the gesture has stopped.
    *
@@ -1207,11 +1214,11 @@ hdy_swipe_tracker_init (HdySwipeTracker *self)
 
 /**
  * hdy_swipe_tracker_new:
- * @swipeable: a #GtkWidget to add the tracker on
+ * @swipeable: a swipeable to add the tracker on
  *
- * Create a new #HdySwipeTracker object on @widget.
+ * Creates a new `HdySwipeTracker` object on @widget.
  *
- * Returns: the newly created #HdySwipeTracker object
+ * Returns: the newly created `HdySwipeTracker`
  *
  * Since: 1.0
  */
@@ -1226,8 +1233,8 @@ hdy_swipe_tracker_new (HdySwipeable *swipeable)
 }
 
 /**
- * hdy_swipe_tracker_get_swipeable:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_get_swipeable: (attributes org.gtk.Method.get_property=swipeable)
+ * @self: a swipe tracker
  *
  * Get @self's swipeable widget.
  *
@@ -1244,13 +1251,12 @@ hdy_swipe_tracker_get_swipeable (HdySwipeTracker *self)
 }
 
 /**
- * hdy_swipe_tracker_get_enabled:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_get_enabled: (attributes org.gtk.Method.get_property=enabled)
+ * @self: a swipe tracker
  *
- * Get whether @self is enabled. When it's not enabled, no events will be
- * processed. Generally widgets will want to expose this via a property.
+ * Get whether @self is enabled.
  *
- * Returns: %TRUE if @self is enabled
+ * Returns: `TRUE` if @self is enabled
  *
  * Since: 1.0
  */
@@ -1263,12 +1269,11 @@ hdy_swipe_tracker_get_enabled (HdySwipeTracker *self)
 }
 
 /**
- * hdy_swipe_tracker_set_enabled:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_set_enabled: (attributes org.gtk.Method.set_property=enabled)
+ * @self: a swipe tracker
  * @enabled: whether to enable to swipe tracker
  *
- * Set whether @self is enabled. When it's not enabled, no events will be
- * processed. Usually widgets will want to expose this via a property.
+ * Set whether @self is enabled.
  *
  * Since: 1.0
  */
@@ -1292,12 +1297,12 @@ hdy_swipe_tracker_set_enabled (HdySwipeTracker *self,
 }
 
 /**
- * hdy_swipe_tracker_get_reversed:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_get_reversed: (attributes org.gtk.Method.get_property=reversed)
+ * @self: a swipe tracker
  *
  * Get whether @self is reversing the swipe direction.
  *
- * Returns: %TRUE is the direction is reversed
+ * Returns: `TRUE` is the direction is reversed
  *
  * Since: 1.0
  */
@@ -1310,12 +1315,13 @@ hdy_swipe_tracker_get_reversed (HdySwipeTracker *self)
 }
 
 /**
- * hdy_swipe_tracker_set_reversed:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_set_reversed: (attributes org.gtk.Method.set_property=reversed)
+ * @self: a swipe tracker
  * @reversed: whether to reverse the swipe direction
  *
- * Set whether to reverse the swipe direction. If @self is horizontal,
- * can be used for supporting RTL text direction.
+ * Set whether to reverse the swipe direction.
+ *
+ * If @self is horizontal, can be used for supporting RTL text direction.
  *
  * Since: 1.0
  */
@@ -1335,12 +1341,12 @@ hdy_swipe_tracker_set_reversed (HdySwipeTracker *self,
 }
 
 /**
- * hdy_swipe_tracker_get_allow_mouse_drag:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_get_allow_mouse_drag: (attributes org.gtk.Method.get_property=allow-mouse-drag)
+ * @self: a swipe tracker
  *
  * Get whether @self can be dragged with mouse pointer.
  *
- * Returns: %TRUE is mouse dragging is allowed
+ * Returns: `TRUE` is mouse dragging is allowed
  *
  * Since: 1.0
  */
@@ -1353,12 +1359,13 @@ hdy_swipe_tracker_get_allow_mouse_drag (HdySwipeTracker *self)
 }
 
 /**
- * hdy_swipe_tracker_set_allow_mouse_drag:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_set_allow_mouse_drag: (attributes org.gtk.Method.set_property=allow-mouse-drag)
+ * @self: a swipe tracker
  * @allow_mouse_drag: whether to allow mouse dragging
  *
- * Set whether @self can be dragged with mouse pointer. This should usually be
- * %FALSE.
+ * Set whether @self can be dragged with mouse pointer.
+ *
+ * This should usually be `FALSE`.
  *
  * Since: 1.0
  */
@@ -1382,13 +1389,15 @@ hdy_swipe_tracker_set_allow_mouse_drag (HdySwipeTracker *self,
 }
 
 /**
- * hdy_swipe_tracker_get_allow_long_swipes:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_get_allow_long_swipes: (attributes org.gtk.Method.get_property=allow-long-swipes)
+ * @self: a swipe tracker
+ *
+ * Whether to allow swiping for more than one snap point at a time.
  *
- * 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.
+ * If the value is `FALSE`, each swipe can only move to the adjacent snap
+ * points.
  *
- * Returns: %TRUE if long swipes are allowed, %FALSE otherwise
+ * Returns: whether long swipes are allowed
  *
  * Since: 1.2
  */
@@ -1401,12 +1410,14 @@ hdy_swipe_tracker_get_allow_long_swipes (HdySwipeTracker *self)
 }
 
 /**
- * hdy_swipe_tracker_set_allow_long_swipes:
- * @self: a #HdySwipeTracker
+ * hdy_swipe_tracker_set_allow_long_swipes: (attributes org.gtk.Method.set_property=allow-long-swipes)
+ * @self: a swipe tracker
  * @allow_long_swipes: whether to allow long swipes
  *
- * 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.
+ * 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.
  *
  * Since: 1.2
  */
@@ -1428,11 +1439,13 @@ hdy_swipe_tracker_set_allow_long_swipes (HdySwipeTracker *self,
 
 /**
  * hdy_swipe_tracker_shift_position:
- * @self: a #HdySwipeTracker
+ * @self: a swipe tracker
  * @delta: the position delta
  *
- * Move the current progress value by @delta. This can be used to adjust the
- * current position if snap points move during the gesture.
+ * Move the current progress value by @delta.
+ *
+ * This can be used to adjust the current position if snap points move during
+ * the gesture.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-swipeable.c b/src/hdy-swipeable.c
index 65cdcb84..ac40131b 100644
--- a/src/hdy-swipeable.c
+++ b/src/hdy-swipeable.c
@@ -9,17 +9,16 @@
 #include "hdy-swipeable.h"
 
 /**
- * SECTION:hdy-swipeable
- * @short_description: An interface for swipeable widgets.
- * @title: HdySwipeable
- * @See_also: #HdyCarousel, #HdyDeck, #HdyLeaflet, #HdySwipeGroup
+ * HdySwipeable:
  *
- * The #HdySwipeable interface is implemented by all swipeable widgets. They
- * can be synced using #HdySwipeGroup.
+ * An interface for swipeable widgets.
  *
- * See #HdySwipeTracker for details about implementing it.
+ * The `HdySwipeable` interface is implemented by all swipeable widgets. They
+ * can be synced using [class@SwipeGroup].
  *
- * Since: 0.0.12
+ * See [class@SwipeTracker] for details about implementing it.
+ *
+ * Since: 1.0
  */
 
 G_DEFINE_INTERFACE (HdySwipeable, hdy_swipeable, GTK_TYPE_WIDGET)
@@ -36,15 +35,15 @@ hdy_swipeable_default_init (HdySwipeableInterface *iface)
 {
   /**
    * HdySwipeable::child-switched:
-   * @self: The #HdySwipeable instance
+   * @self: a swipeable
    * @index: the index of the child to switch to
-   * @duration: Animation duration in milliseconds
+   * @duration: animation duration, in milliseconds
    *
-   * This signal should be emitted when the widget's visible child is changed.
+   * Emitted when the widget's visible child is changed.
    *
    * @duration can be 0 if the child is switched without animation.
    *
-   * This is used by #HdySwipeGroup, applications should not connect to it.
+   * This is used by [class@SwipeGroup], applications should not connect to it.
    *
    * Since: 1.0
    */
@@ -61,11 +60,13 @@ hdy_swipeable_default_init (HdySwipeableInterface *iface)
 
 /**
  * hdy_swipeable_switch_child:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  * @index: the index of the child to switch to
- * @duration: Animation duration in milliseconds
+ * @duration: animation duration, in milliseconds
  *
- * See HdySwipeable::child-switched.
+ * Switches to child with index @index.
+ *
+ * See [signal@Swipeable::child-switched].
  *
  * Since: 1.0
  */
@@ -86,12 +87,13 @@ hdy_swipeable_switch_child (HdySwipeable *self,
 
 /**
  * hdy_swipeable_emit_child_switched:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  * @index: the index of the child to switch to
- * @duration: Animation duration in milliseconds
+ * @duration: animation duration, in milliseconds
+ *
+ * Emits [signal@Swipeable::child-switched] signal.
  *
- * Emits HdySwipeable::child-switched signal. This should be called when the
- * widget switches visible child widget.
+ * This should be called when the widget switches visible child widget.
  *
  * @duration can be 0 if the child is switched without animation.
  *
@@ -109,9 +111,9 @@ hdy_swipeable_emit_child_switched (HdySwipeable *self,
 
 /**
  * hdy_swipeable_get_swipe_tracker:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  *
- * Gets the #HdySwipeTracker used by this swipeable widget.
+ * Gets the [class@SwipeTracker] used by this swipeable widget.
  *
  * Returns: (transfer none): the swipe tracker
  *
@@ -132,10 +134,11 @@ hdy_swipeable_get_swipe_tracker (HdySwipeable *self)
 
 /**
  * hdy_swipeable_get_distance:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  *
- * Gets the swipe distance of @self. This corresponds to how many pixels
- * 1 unit represents.
+ * Gets the swipe distance of @self.
+ *
+ * This corresponds to how many pixels 1 unit represents.
  *
  * Returns: the swipe distance in pixels
  *
@@ -156,14 +159,15 @@ hdy_swipeable_get_distance (HdySwipeable *self)
 
 /**
  * hdy_swipeable_get_snap_points: (virtual get_snap_points)
- * @self: a #HdySwipeable
+ * @self: a swipeable
  * @n_snap_points: (out): location to return the number of the snap points
  *
- * Gets the snap points of @self. Each snap point represents a progress value
- * that is considered acceptable to end the swipe on.
+ * Gets the snap points of @self.
+ *
+ * Each snap point represents a progress value that is considered acceptable to
+ * end the swipe on.
  *
- * Returns: (array length=n_snap_points) (transfer full): the snap points of
- *     @self. The array must be freed with g_free().
+ * Returns: (array length=n_snap_points) (transfer full): the snap points
  *
  * Since: 1.0
  */
@@ -183,9 +187,9 @@ hdy_swipeable_get_snap_points (HdySwipeable *self,
 
 /**
  * hdy_swipeable_get_progress:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  *
- * Gets the current progress of @self
+ * Gets the current progress of @self.
  *
  * Returns: the current progress, unitless
  *
@@ -206,7 +210,7 @@ hdy_swipeable_get_progress (HdySwipeable *self)
 
 /**
  * hdy_swipeable_get_cancel_progress:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  *
  * Gets the progress @self will snap back to after the gesture is canceled.
  *
@@ -229,19 +233,20 @@ hdy_swipeable_get_cancel_progress (HdySwipeable *self)
 
 /**
  * hdy_swipeable_get_swipe_area:
- * @self: a #HdySwipeable
+ * @self: a swipeable
  * @navigation_direction: the direction of the swipe
  * @is_drag: whether the swipe is caused by a dragging gesture
- * @rect: (out): a pointer to a #GdkRectangle to store the swipe area
+ * @rect: (out): a pointer to a rectangle to store the swipe area
  *
  * 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
- * #HdySwipeGroup).
+ * [class@SwipeGroup]).
  *
  * If not implemented, the default implementation returns the allocation of
  * @self, allowing swipes from anywhere.
diff --git a/src/hdy-swipeable.h b/src/hdy-swipeable.h
index 61e9a6f7..7d3378b2 100644
--- a/src/hdy-swipeable.h
+++ b/src/hdy-swipeable.h
@@ -25,14 +25,14 @@ G_DECLARE_INTERFACE (HdySwipeable, hdy_swipeable, HDY, SWIPEABLE, GtkWidget)
 
 /**
  * HdySwipeableInterface:
- * @parent: The parent interface.
- * @switch_child: Switches visible child.
- * @get_swipe_tracker: Gets the swipe tracker.
- * @get_distance: Gets the swipe distance.
- * @get_snap_points: Gets the snap points
- * @get_progress: Gets the current progress.
- * @get_cancel_progress: Gets the cancel progress.
- * @get_swipe_area: Gets the swipeable rectangle.
+ * @parent: the parent interface
+ * @switch_child: switches visible child
+ * @get_swipe_tracker: gets the swipe tracker
+ * @get_distance: gets the swipe distance
+ * @get_snap_points: gets the snap points
+ * @get_progress: gets the current progress
+ * @get_cancel_progress: gets the cancel progress
+ * @get_swipe_area: gets the swipeable rectangle
  *
  * An interface for swipeable widgets.
  *
diff --git a/src/hdy-tab-bar.c b/src/hdy-tab-bar.c
index f6ef695d..5985716a 100644
--- a/src/hdy-tab-bar.c
+++ b/src/hdy-tab-bar.c
@@ -13,24 +13,23 @@
 #include "hdy-tab-box-private.h"
 
 /**
- * SECTION:hdy-tab-bar
- * @short_description: A tab bar for #HdyTabView
- * @title: HdyTabBar
- * @See_also: #HdyTabView
+ * HdyTabBar:
  *
- * The #HdyTabBar widget is a tab bar that can be used with conjunction with
- * #HdyTabView.
+ * A tab bar for [class@TabView].
  *
- * #HdyTabBar can autohide and can optionally contain action widgets on both
+ * 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
+ * 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
+ * ## CSS nodes
  *
- * #HdyTabBar has a single CSS node with name tabbar.
+ * `HdyTabBar` has a single CSS node with name `tabbar`.
  *
  * Since: 1.2
  */
@@ -506,9 +505,9 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
   container_class->forall = hdy_tab_bar_forall;
 
   /**
-   * HdyTabBar:view:
+   * HdyTabBar:view: (attributes org.gtk.Property.get=hdy_tab_bar_get_view 
org.gtk.Property.set=hdy_tab_bar_set_view)
    *
-   * The #HdyTabView the tab bar controls.
+   * The [class@TabView] the tab bar controls.
    *
    * Since: 1.2
    */
@@ -520,7 +519,7 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:start-action-widget:
+   * HdyTabBar:start-action-widget: (attributes org.gtk.Property.get=hdy_tab_bar_get_start_action_widget 
org.gtk.Property.set=hdy_tab_bar_set_start_action_widget)
    *
    * The widget shown before the tabs.
    *
@@ -534,7 +533,7 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:end-action-widget:
+   * HdyTabBar:end-action-widget: (attributes org.gtk.Property.get=hdy_tab_bar_get_end_action_widget 
org.gtk.Property.set=hdy_tab_bar_set_end_action_widget)
    *
    * The widget shown after the tabs.
    *
@@ -548,14 +547,15 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:autohide:
+   * HdyTabBar:autohide: (attributes org.gtk.Property.get=hdy_tab_bar_get_autohide 
org.gtk.Property.set=hdy_tab_bar_set_autohide)
    *
    * Whether tabs automatically hide.
    *
-   * If set to %TRUE, the tab bar disappears when the associated #HdyTabView
-   * has 0 or 1 tab, no pinned tabs, and no tab is being transferred.
+   * 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 #HdyTabBar:tabs-revealed.
+   * See [property@TabBar:tabs-revealed].
    *
    * Since: 1.2
    */
@@ -567,11 +567,11 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:tabs-revealed:
+   * HdyTabBar:tabs-revealed: (attributes org.gtk.Property.get=hdy_tab_bar_get_tabs_revealed)
    *
    * Whether tabs are currently revealed.
    *
-   * See HdyTabBar:autohide.
+   * See [property@TabBar:autohide].
    *
    * Since: 1.2
    */
@@ -583,11 +583,11 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                           G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:expand-tabs:
+   * HdyTabBar:expand-tabs: (attributes org.gtk.Property.get=hdy_tab_bar_get_expand_tabs 
org.gtk.Property.set=hdy_tab_bar_set_expand_tabs)
    *
    * Whether tabs should expand.
    *
-   * If set to %TRUE, the tabs will always vary width filling the whole 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.
    *
    * Since: 1.2
@@ -600,11 +600,11 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:inverted:
+   * HdyTabBar:inverted: (attributes org.gtk.Property.get=hdy_tab_bar_get_inverted 
org.gtk.Property.set=hdy_tab_bar_set_inverted)
    *
    * Whether tabs use inverted layout.
    *
-   * If set to %TRUE, non-pinned tabs will have the close button at the
+   * 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.
    *
    * Since: 1.2
@@ -617,7 +617,7 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                           G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:extra-drag-dest-targets:
+   * HdyTabBar:extra-drag-dest-targets: (attributes 
org.gtk.Property.get=hdy_tab_bar_get_extra_drag_dest_targets 
org.gtk.Property.set=hdy_tab_bar_set_extra_drag_dest_targets)
    *
    * Extra drag destination targets.
    *
@@ -627,8 +627,8 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
    * 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 #HdyTabBar::extra-drag-data-received signal
-   * can be used to retrieve and process the drag data.
+   * After content is dropped, the [signal@TabBar::extra-drag-data-received]
+   * signal can be used to retrieve and process the drag data.
    *
    * Since: 1.2
    */
@@ -640,11 +640,11 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
                         G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabBar:is-overflowing:
+   * HdyTabBar:is-overflowing: (attributes org.gtk.Property.get=hdy_tab_bar_get_is_overflowing)
    *
    * Whether the tab bar is overflowing.
    *
-   * If set to %TRUE, all tabs cannot be displayed at once and require
+   * If set to `TRUE`, all tabs cannot be displayed at once and require
    * scrolling.
    *
    * Since: 1.2
@@ -660,17 +660,18 @@ hdy_tab_bar_class_init (HdyTabBarClass *klass)
 
   /**
    * HdyTabBar::extra-drag-data-received:
-   * @self: a #HdyTabBar
-   * @page: the #HdyTabPage matching the tab the content was dropped onto
+   * @self: a tab bar
+   * @page: the tab page matching the tab the content was dropped onto
    * @context: the drag context
    * @data: the received data
-   * @info: the info that has been registered with the target in the #GtkTargetList
+   * @info: the info that has been registered with the target in the
+   *   [struct@Gtk.TargetList]
    * @time: the timestamp at which the data was received
    *
-   * This signal is emitted when content allowed via
-   * #HdyTabBar:extra-drag-dest-targets is dropped onto a tab.
+   * Emitted when content allowed via [property@TabBar:extra-drag-dest-targets]
+   * is dropped onto a tab.
    *
-   * See #GtkWidget::drag-data-received.
+   * See [signal@Gtk.Widget::drag-data-received].
    *
    * Since: 1.2
    */
@@ -784,9 +785,9 @@ hdy_tab_bar_tabs_have_visible_focus (HdyTabBar *self)
 /**
  * hdy_tab_bar_new:
  *
- * Creates a new #HdyTabBar widget.
+ * Creates a new `HdyTabBar` widget.
  *
- * Returns: a new #HdyTabBar
+ * Returns: a new `HdyTabBar`
  *
  * Since: 1.2
  */
@@ -797,12 +798,12 @@ hdy_tab_bar_new (void)
 }
 
 /**
- * hdy_tab_bar_get_view:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_view: (attributes org.gtk.Method.get_property=view)
+ * @self: a tab bar
  *
- * Gets the #HdyTabView @self controls.
+ * Gets the [class@TabView] @self controls.
  *
- * Returns: (transfer none) (nullable): the #HdyTabView @self controls
+ * Returns: (transfer none) (nullable): the [class@TabView] @self controls
  *
  * Since: 1.2
  */
@@ -815,11 +816,11 @@ hdy_tab_bar_get_view (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_view:
- * @self: a #HdyTabBar
- * @view: (nullable): a #HdyTabView
+ * hdy_tab_bar_set_view: (attributes org.gtk.Method.set_property=view)
+ * @self: a tab bar
+ * @view: (nullable): a tab view
  *
- * Sets the #HdyTabView @self controls.
+ * Sets the [class@TabView] @self controls.
  *
  * Since: 1.2
  */
@@ -893,12 +894,12 @@ hdy_tab_bar_set_view (HdyTabBar  *self,
 }
 
 /**
- * hdy_tab_bar_get_start_action_widget:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_start_action_widget: (attributes org.gtk.Method.get_property=start-action-widget)
+ * @self: a tab bar
  *
  * Gets the widget shown before the tabs.
  *
- * Returns: (transfer none) (nullable): the widget shown before the tabs, or %NULL
+ * Returns: (transfer none) (nullable): the widget shown before the tabs
  *
  * Since: 1.2
  */
@@ -911,9 +912,9 @@ hdy_tab_bar_get_start_action_widget (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_start_action_widget:
- * @self: a #HdyTabBar
- * @widget: (transfer none) (nullable): the widget to show before the tabs, or %NULL
+ * hdy_tab_bar_set_start_action_widget: (attributes org.gtk.Method.set_property=start-action-widget)
+ * @self: a tab bar
+ * @widget: (transfer none) (nullable): the widget to show before the tabs
  *
  * Sets the widget to show before the tabs.
  *
@@ -945,12 +946,12 @@ hdy_tab_bar_set_start_action_widget (HdyTabBar *self,
 }
 
 /**
- * hdy_tab_bar_get_end_action_widget:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_end_action_widget: (attributes org.gtk.Method.get_property=end-action-widget)
+ * @self: a tab bar
  *
  * Gets the widget shown after the tabs.
  *
- * Returns: (transfer none) (nullable): the widget shown after the tabs, or %NULL
+ * Returns: (transfer none) (nullable): the widget shown after the tabs
  *
  * Since: 1.2
  */
@@ -963,9 +964,9 @@ hdy_tab_bar_get_end_action_widget (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_end_action_widget:
- * @self: a #HdyTabBar
- * @widget: (transfer none) (nullable): the widget to show after the tabs, or %NULL
+ * hdy_tab_bar_set_end_action_widget: (attributes org.gtk.Method.set_property=end-action-widget)
+ * @self: a tab bar
+ * @widget: (transfer none) (nullable): the widget to show after the tabs
  *
  * Sets the widget to show after the tabs.
  *
@@ -997,10 +998,10 @@ hdy_tab_bar_set_end_action_widget (HdyTabBar *self,
 }
 
 /**
- * hdy_tab_bar_get_autohide:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_autohide: (attributes org.gtk.Method.get_property=autohide)
+ * @self: a tab bar
  *
- * Gets whether the tabs automatically hide, see hdy_tab_bar_set_autohide().
+ * Gets whether the tabs automatically hide.
  *
  * Returns: whether the tabs automatically hide
  *
@@ -1015,18 +1016,19 @@ hdy_tab_bar_get_autohide (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_autohide:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_set_autohide: (attributes org.gtk.Method.set_property=autohide)
+ * @self: a tab bar
  * @autohide: whether the tabs automatically hide
  *
  * Sets whether the tabs automatically hide.
  *
- * If @autohide is %TRUE, the tab bar disappears when the associated #HdyTabView
- * has 0 or 1 tab, no pinned tabs, and no tab is being transferred.
+ * 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 #HdyTabBar:tabs-revealed.
+ * See [property@TabBar:tabs-revealed].
  *
  * Since: 1.2
  */
@@ -1049,10 +1051,10 @@ hdy_tab_bar_set_autohide (HdyTabBar *self,
 }
 
 /**
- * hdy_tab_bar_get_tabs_revealed:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_tabs_revealed: (attributes org.gtk.Method.get_property=tabs-revealed)
+ * @self: a tab bar
  *
- * Gets the value of the #HdyTabBar:tabs-revealed property.
+ * Gets the value of the [property@TabBar:tabs-revealed] property.
  *
  * Returns: whether the tabs are current revealed
  *
@@ -1067,10 +1069,10 @@ hdy_tab_bar_get_tabs_revealed (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_get_expand_tabs:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_expand_tabs: (attributes org.gtk.Method.get_property=expand-tabs)
+ * @self: a tab bar
  *
- * Gets whether tabs should expand, see hdy_tab_bar_set_expand_tabs().
+ * Gets whether tabs should expand.
  *
  * Returns: whether tabs should expand
  *
@@ -1085,13 +1087,13 @@ hdy_tab_bar_get_expand_tabs (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_expand_tabs:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_set_expand_tabs: (attributes org.gtk.Method.set_property=expand-tabs)
+ * @self: a tab bar
  * @expand_tabs: whether to expand tabs
  *
  * Sets whether tabs should expand.
  *
- * If @expand_tabs is %TRUE, the tabs will always vary width filling the whole
+ * 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.
  *
@@ -1116,10 +1118,10 @@ hdy_tab_bar_set_expand_tabs (HdyTabBar *self,
 }
 
 /**
- * hdy_tab_bar_get_inverted:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_inverted: (attributes org.gtk.Method.get_property=inverted)
+ * @self: a tab bar
  *
- * Gets whether tabs use inverted layout, see hdy_tab_bar_set_inverted().
+ * Gets whether tabs use inverted layout.
  *
  * Returns: whether tabs use inverted layout
  *
@@ -1134,13 +1136,13 @@ hdy_tab_bar_get_inverted (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_inverted:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_set_inverted: (attributes org.gtk.Method.set_property=inverted)
+ * @self: a tab bar
  * @inverted: whether tabs use inverted layout
  *
  * Sets whether tabs tabs use inverted layout.
  *
- * If @inverted is %TRUE, non-pinned tabs will have the close button at the
+ * 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.
  *
  * Since: 1.2
@@ -1162,13 +1164,12 @@ hdy_tab_bar_set_inverted (HdyTabBar *self,
 }
 
 /**
- * hdy_tab_bar_get_extra_drag_dest_targets:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_extra_drag_dest_targets: (attributes org.gtk.Method.get_property=extra-drag-dest-targets)
+ * @self: a tab bar
  *
- * Gets extra drag destination targets, see
- * hdy_tab_bar_set_extra_drag_dest_targets().
+ * Gets extra drag destination targets.
  *
- * Returns: (transfer none) (nullable): extra drag targets, or %NULL
+ * Returns: (transfer none) (nullable): extra drag targets
  *
  * Since: 1.2
  */
@@ -1181,9 +1182,9 @@ hdy_tab_bar_get_extra_drag_dest_targets (HdyTabBar *self)
 }
 
 /**
- * hdy_tab_bar_set_extra_drag_dest_targets:
- * @self: a #HdyTabBar
- * @extra_drag_dest_targets: (transfer none) (nullable): extra drag targets, or %NULL
+ * hdy_tab_bar_set_extra_drag_dest_targets: (attributes org.gtk.Method.set_property=extra-drag-dest-targets)
+ * @self: a tab bar
+ * @extra_drag_dest_targets: (transfer none) (nullable): extra drag targets
  *
  * Sets extra drag destination targets.
  *
@@ -1193,8 +1194,8 @@ hdy_tab_bar_get_extra_drag_dest_targets (HdyTabBar *self)
  * 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 #HdyTabBar::extra-drag-data-received signal can
- * be used to retrieve and process the drag data.
+ * After content is dropped, the [signal@TabBar::extra-drag-data-received]
+ * signal can be used to retrieve and process the drag data.
  *
  * Since: 1.2
  */
@@ -1222,8 +1223,8 @@ hdy_tab_bar_set_extra_drag_dest_targets (HdyTabBar     *self,
 }
 
 /**
- * hdy_tab_bar_get_is_overflowing:
- * @self: a #HdyTabBar
+ * hdy_tab_bar_get_is_overflowing: (attributes org.gtk.Method.get_property=is-overflowing)
+ * @self: a tab bar
  *
  * Gets whether @self is overflowing.
  *
diff --git a/src/hdy-tab-view.c b/src/hdy-tab-view.c
index c2c5eb9e..c8999498 100644
--- a/src/hdy-tab-view.c
+++ b/src/hdy-tab-view.c
@@ -19,46 +19,53 @@ static const GtkTargetEntry dst_targets [] = {
 };
 
 /**
- * SECTION:hdy-tab-view
- * @short_description: A dynamic tabbed container
- * @title: HdyTabView
- * @See_also: #HdyTabBar
+ * HdyTabView:
  *
- * #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 #HdyTabBar.
+ * A dynamic tabbed container.
  *
- * #HdyTabView maintains a #HdyTabPage object for each page,which holds
- * additional per-page properties. You can obtain the #HdyTabPage for a page
- * with hdy_tab_view_get_page(), and as return value for hdy_tab_view_append()
- * and other functions for adding children.
+ * `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 only aims to be useful for dynamic tabs in multi-window
+ * `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 #GtkNotebook for use cases
- * such as tabbed dialogs.
+ * 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 #GtkBuilder.
+ * adding children via [iface@Gtk.Buildable].
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyTabView has a main CSS node with the name tabview.
+ * `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.
  *
- * |[<!-- language="plain" -->
+ * ```
  * tabview
  * ╰── overlay
  *     ├── stack
  *     │   ╰── [ Children ]
  *     ╰── widget
- * ]|
+ * ```
  *
  * Since: 1.2
  */
 
+/**
+ * HdyTabPage:
+ *
+ * An auxiliary class used by [class@TabView].
+ *
+ * Since: 1.2
+ */
 struct _HdyTabPage
 {
   GObject parent_instance;
@@ -360,7 +367,7 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
   object_class->set_property = hdy_tab_page_set_property;
 
   /**
-   * HdyTabPage:child:
+   * HdyTabPage:child: (attributes org.gtk.Property.get=hdy_tab_page_get_child)
    *
    * The child of the page.
    *
@@ -374,12 +381,12 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
 
   /**
-   * HdyTabPage:parent:
+   * HdyTabPage:parent: (attributes org.gtk.Property.get=hdy_tab_page_get_parent)
    *
    * The parent page of the page.
    *
-   * See hdy_tab_view_add_page() and hdy_tab_view_close_page().
-
+   * See [method@TabView.add_page] and [method@TabView.close_page].
+   *
    * Since: 1.2
    */
   page_props[PAGE_PROP_PARENT] =
@@ -390,7 +397,7 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:selected:
+   * HdyTabPage:selected: (attributes org.gtk.Property.get=hdy_tab_page_get_selected)
    *
    * Whether the page is selected.
    *
@@ -404,9 +411,11 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:pinned:
+   * HdyTabPage:pinned: (attributes org.gtk.Property.get=hdy_tab_page_get_pinned)
+   *
+   * Whether the page is pinned.
    *
-   * Whether the page is pinned. See hdy_tab_view_set_page_pinned().
+   * See [method@TabView.set_page_pinned].
    *
    * Since: 1.2
    */
@@ -418,12 +427,12 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:title:
+   * HdyTabPage:title: (attributes org.gtk.Property.get=hdy_tab_page_get_title 
org.gtk.Property.set=hdy_tab_page_set_title)
    *
    * The title of the page.
    *
-   * #HdyTabBar will display it in the center of the tab unless it's pinned,
-   * and will use it as a tooltip unless #HdyTabPage:tooltip is set.
+   * [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.
    *
    * Since: 1.2
    */
@@ -435,11 +444,14 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:tooltip:
+   * HdyTabPage:tooltip: (attributes org.gtk.Property.get=hdy_tab_page_get_tooltip 
org.gtk.Property.set=hdy_tab_page_set_tooltip)
    *
-   * The tooltip of the page, marked up with the Pango text markup language.
+   * The tooltip of the page.
    *
-   * If not set, #HdyTabBar will use #HdyTabPage:title as a tooltip instead.
+   * 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.
    *
    * Since: 1.2
    */
@@ -451,12 +463,14 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:icon:
+   * HdyTabPage:icon: (attributes org.gtk.Property.get=hdy_tab_page_get_icon 
org.gtk.Property.set=hdy_tab_page_set_icon)
+   *
+   * The icon of the page.
    *
-   * The icon of the page, displayed next to the title.
+   * [class@TabBar] displays the icon next to the title.
    *
-   * #HdyTabBar will not show the icon if #HdyTabPage:loading is set to %TRUE,
-   * or if the page is pinned and #HdyTabPage:indicator-icon is set.
+   * 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.
    *
    * Since: 1.2
    */
@@ -468,14 +482,14 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:loading:
+   * HdyTabPage:loading: (attributes org.gtk.Property.get=hdy_tab_page_get_loading 
org.gtk.Property.set=hdy_tab_page_set_loading)
    *
    * Whether the page is loading.
    *
-   * If set to %TRUE, #HdyTabBar will display a spinner in place of icon.
+   * If set to `TRUE`, [class@TabBar] will display a spinner in place of icon.
    *
-   * If the page is pinned and #HdyTabPage:indicator-icon is set, the loading
-   * status will not be visible.
+   * If the page is pinned and [property@TabPage:indicator-icon] is set, the
+   * loading status will not be visible.
    *
    * Since: 1.2
    */
@@ -487,20 +501,20 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:indicator-icon:
+   * HdyTabPage:indicator-icon: (attributes org.gtk.Property.get=hdy_tab_page_get_indicator_icon 
org.gtk.Property.set=hdy_tab_page_set_indicator_icon)
    *
    * An indicator icon for the page.
    *
    * A common use case is an audio or camera indicator in a web browser.
    *
-   * #HdyTabPage will show it at the beginning of the tab, alongside icon
-   * representing #HdyTabPage:icon or loading spinner.
+   * [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 #HdyTabPage:indicator-activatable is set to %TRUE, the indicator icon
-   * can act as a button.
+   * If [property@TabPage:indicator-activatable] is set to `TRUE`, the indicator
+   * icon can act as a button.
    *
    * Since: 1.2
    */
@@ -512,14 +526,14 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:indicator-activatable:
+   * HdyTabPage:indicator-activatable: (attributes 
org.gtk.Property.get=hdy_tab_page_get_indicator_activatable 
org.gtk.Property.set=hdy_tab_page_set_indicator_activatable)
    *
    * Whether the indicator icon is activatable.
    *
-   * If set to %TRUE, #HdyTabView::indicator-activated will be emitted when
-   * the indicator icon is clicked.
+   * If set to `TRUE`, [signal@TabView::indicator-activated] will be emitted
+   * when the indicator icon is clicked.
    *
-   * If #HdyTabPage:indicator-icon is not set, does nothing.
+   * If [property@TabPage:indicator-icon] is not set, does nothing.
    *
    * Since: 1.2
    */
@@ -531,13 +545,13 @@ hdy_tab_page_class_init (HdyTabPageClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabPage:needs-attention:
+   * HdyTabPage:needs-attention: (attributes org.gtk.Property.get=hdy_tab_page_get_needs_attention 
org.gtk.Property.set=hdy_tab_page_set_needs_attention)
    *
    * Whether the page needs attention.
    *
-   * #HdyTabBar 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.
+   * [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.
    *
    * Since: 1.2
    */
@@ -1096,7 +1110,7 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
   object_class->set_property = hdy_tab_view_set_property;
 
   /**
-   * HdyTabView:n-pages:
+   * HdyTabView:n-pages: (attributes org.gtk.Property.get=hdy_tab_view_get_n_pages)
    *
    * The number of pages in the tab view.
    *
@@ -1110,11 +1124,11 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                       G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:n-pinned-pages:
+   * HdyTabView:n-pinned-pages: (attributes org.gtk.Property.get=hdy_tab_view_get_n_pinned_pages)
    *
    * The number of pinned pages in the tab view.
    *
-   * See hdy_tab_view_set_page_pinned().
+   * See [method@TabView.set_page_pinned].
    *
    * Since: 1.2
    */
@@ -1126,15 +1140,15 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                       G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:is-transferring-page:
+   * HdyTabView:is-transferring-page: (attributes org.gtk.Property.get=hdy_tab_view_get_is_transferring_page)
    *
    * Whether a page is being transferred.
    *
-   * This property will be set to %TRUE when a drag-n-drop tab transfer starts
-   * on any #HdyTabView, and to %FALSE after it ends.
+   * 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.
+   * During the transfer, children cannot receive pointer input and a tab can be
+   * safely dropped on the tab view.
    *
    * Since: 1.2
    */
@@ -1146,7 +1160,7 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                           G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:selected-page:
+   * HdyTabView:selected-page: (attributes org.gtk.Property.get=hdy_tab_view_get_selected_page 
org.gtk.Property.set=hdy_tab_view_set_selected_page)
    *
    * The currently selected page.
    *
@@ -1160,16 +1174,16 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:default-icon:
+   * HdyTabView:default-icon: (attributes org.gtk.Property.get=hdy_tab_view_get_default_icon 
org.gtk.Property.set=hdy_tab_view_set_default_icon)
    *
    * Default page icon.
    *
-   * If a page doesn't provide its own icon via #HdyTabPage:icon, default icon
-   * may be used instead for contexts where having an icon is necessary.
+   * 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.
    *
-   * #HdyTabBar 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@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.
    *
    * Since: 1.2
    */
@@ -1181,13 +1195,13 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:menu-model:
+   * HdyTabView:menu-model: (attributes org.gtk.Property.get=hdy_tab_view_get_menu_model 
org.gtk.Property.set=hdy_tab_view_set_menu_model)
    *
    * Tab context menu model.
    *
    * When a context menu is shown for a tab, it will be constructed from the
-   * provided menu model. Use #HdyTabView::setup-menu signal to set up the menu
-   * actions for the particular tab.
+   * provided menu model. Use [signal@TabView::setup-menu] signal to set up the
+   * menu actions for the particular tab.
    *
    * Since: 1.2
    */
@@ -1199,21 +1213,29 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyTabView:shortcut-widget:
-   *
-   * Tab shortcut widget, has the following shortcuts:
-   * * Ctrl+Page Up - switch to the previous page
-   * * Ctrl+Page Down - switch to the next page
-   * * Ctrl+Home - switch to the first page
-   * * Ctrl+End - switch to the last page
-   * * Ctrl+Shift+Page Up - move the current page backward
-   * * Ctrl+Shift+Page Down - move the current page forward
-   * * Ctrl+Shift+Home - move the current page at the start
-   * * Ctrl+Shift+End - move the current page at the end
-   * * Ctrl+Tab - switch to the next page, with looping
-   * * Ctrl+Shift+Tab - switch to the previous page, with looping
-   * * Alt+1-9 - switch to pages 1-9
-   * * Alt+0 - switch to page 10
+   * HdyTabView:shortcut-widget: (attributes org.gtk.Property.get=hdy_tab_view_get_shortcut_widget 
org.gtk.Property.set=hdy_tab_view_set_shortcut_widget)
+   *
+   * 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.
@@ -1231,12 +1253,11 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::page-attached:
-   * @self: a #HdyTabView
-   * @page: a page of @self
+   * @self: a tab view
+   * @page: a page of the view
    * @position: the position of the page, starting from 0
    *
-   * This signal is emitted when a page has been created or transferred to
-   * @self.
+   * 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.
@@ -1255,20 +1276,19 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::page-detached:
-   * @self: a #HdyTabView
-   * @page: a page of @self
+   * @self: a tab view
+   * @page: a page of the view
    * @position: the position of the removed page, starting from 0
    *
-   * This signal is emitted when a page has been removed or transferred to
-   * another view.
+   * 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 #HdyTabView::page-attached handler.
+   * 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
-   * hdy_tab_view_close_page_finish() calls.
+   * [method@TabView.close_page_finish] calls.
    *
    * Since: 1.2
    */
@@ -1284,8 +1304,8 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::page-reordered:
-   * @self: a #HdyTabView
-   * @page: a page of @self
+   * @self: a tab view
+   * @page: a page of the view
    * @position: the position @page was moved to, starting at 0
    *
    * This signal is emitted after @page has been reordered to @position.
@@ -1304,19 +1324,18 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::close-page:
-   * @self: a #HdyTabView
-   * @page: a page of @self
+   * @self: a tab view
+   * @page: a page of the view
    *
-   * This signal is emitted after hdy_tab_view_close_page() has been called for
-   * @page.
+   * Emitted after [method@TabView.close_page] has been called for @page.
    *
-   * The handler is expected to call hdy_tab_view_close_page_finish() to confirm
-   * or reject the closing.
+   * 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:
    *
-   * |[<!-- language="C" -->
+   * ```c
    * static gboolean
    * close_page_cb (HdyTabView *view,
    *                HdyTabPage *page,
@@ -1326,9 +1345,9 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
    *
    *   return GDK_EVENT_STOP;
    * }
-   * ]|
+   * ```
    *
-   * The hdy_tab_view_close_page_finish() doesn't have to happen during the
+   * 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.
    *
@@ -1350,11 +1369,12 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::setup-menu:
-   * @self: a #HdyTabView
-   * @page: a page of @self, or %NULL
+   * @self: a tab view
+   * @page: a page of @self
    *
-   * This signal is emitted before a context menu is opened for @page, and after
-   * it's closed, in the latter case the @page will be set to %NULL.
+   * 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.
@@ -1373,15 +1393,16 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::create-window:
-   * @self: a #HdyTabView
    *
-   * This signal is emitted when a tab is dropped onto desktop and should be
-   * transferred into a new window.
+   * 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.
+   * needed and return its `HdyTabView`that the page will be transferred into.
    *
-   * Returns: (transfer none) (nullable): the #HdyTabView from the new window
+   * Returns: (transfer none) (nullable): the [class@TabView] from the new
+   *   window
    *
    * Since: 1.2
    */
@@ -1397,12 +1418,13 @@ hdy_tab_view_class_init (HdyTabViewClass *klass)
 
   /**
    * HdyTabView::indicator-activated:
-   * @self: a #HdyTabView
-   * @page: a page of @self
+   * @self: a tab view
+   * @page: a page of the view
    *
-   * This signal is emitted after the indicator icon on @page has been activated.
+   * Emitted after the indicator icon on @page has been activated.
    *
-   * See #HdyTabPage:indicator-icon and #HdyTabPage:indicator-activatable.
+   * See [property@TabPage:indicator-icon] and
+   * [property@TabPage:indicator-activatable].
    *
    * Since: 1.2
    */
@@ -1462,8 +1484,8 @@ hdy_tab_view_init (HdyTabView *self)
 }
 
 /**
- * hdy_tab_page_get_child:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_child: (attributes org.gtk.Method.get_property=child)
+ * @self: a tab page
  *
  * Gets the child of @self.
  *
@@ -1480,14 +1502,12 @@ hdy_tab_page_get_child (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_get_parent:
- * @self: a #HdyTabPage
- *
- * Gets the parent page of @self, or %NULL if the @self does not have a parent.
+ * hdy_tab_page_get_parent: (attributes org.gtk.Method.get_property=parent)
+ * @self: a tab page
  *
- * See hdy_tab_view_add_page() and hdy_tab_view_close_page().
+ * Gets the parent page of @self.
  *
- * Returns: (transfer none) (nullable): the parent page of @self, or %NULL
+ * Returns: (transfer none) (nullable): the parent page of @self
  *
  * Since: 1.2
  */
@@ -1500,10 +1520,10 @@ hdy_tab_page_get_parent (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_get_selected:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_selected: (attributes org.gtk.Method.get_property=selected)
+ * @self: a tab page
  *
- * Gets whether @self is selected. See hdy_tab_view_set_selected_page().
+ * Gets whether @self is selected.
  *
  * Returns: whether @self is selected
  *
@@ -1518,10 +1538,10 @@ hdy_tab_page_get_selected (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_get_pinned:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_pinned: (attributes org.gtk.Method.get_property=pinned)
+ * @self: a tab page
  *
- * Gets whether @self is pinned. See hdy_tab_view_set_page_pinned().
+ * Gets whether @self is pinned.
  *
  * Returns: whether @self is pinned
  *
@@ -1536,10 +1556,10 @@ hdy_tab_page_get_pinned (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_get_title:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a tab page
  *
- * Gets the title of @self, see hdy_tab_page_set_title().
+ * Gets the title of @self.
  *
  * Returns: (nullable): the title of @self
  *
@@ -1554,16 +1574,12 @@ hdy_tab_page_get_title (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_title:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a tab page
  * @title: (nullable): the title of @self
  *
  * Sets the title of @self.
  *
- * #HdyTabBar will display it in the center of the tab representing @self
- * unless it's pinned, and will use it as a tooltip unless #HdyTabPage:tooltip
- * is set.
- *
  * Since: 1.2
  */
 void
@@ -1582,10 +1598,10 @@ hdy_tab_page_set_title (HdyTabPage  *self,
 }
 
 /**
- * hdy_tab_page_get_tooltip:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_tooltip: (attributes org.gtk.Method.get_property=tooltip)
+ * @self: a tab page
  *
- * Gets the tooltip of @self, see hdy_tab_page_set_tooltip().
+ * Gets the tooltip of @self.
  *
  * Returns: (nullable): the tooltip of @self
  *
@@ -1600,13 +1616,11 @@ hdy_tab_page_get_tooltip (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_tooltip:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_tooltip: (attributes org.gtk.Method.set_property=tooltip)
+ * @self: a tab page
  * @tooltip: (nullable): the tooltip of @self
  *
- * Sets the tooltip of @self, marked up with the Pango text markup language.
- *
- * If not set, #HdyTabBar will use #HdyTabPage:title as a tooltip instead.
+ * Sets the tooltip of @self.
  *
  * Since: 1.2
  */
@@ -1626,10 +1640,10 @@ hdy_tab_page_set_tooltip (HdyTabPage  *self,
 }
 
 /**
- * hdy_tab_page_get_icon:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_icon: (attributes org.gtk.Method.get_property=icon)
+ * @self: a tab page
  *
- * Gets the icon of @self, see hdy_tab_page_set_icon().
+ * Gets the icon of @self.
  *
  * Returns: (transfer none) (nullable): the icon of @self
  *
@@ -1644,14 +1658,11 @@ hdy_tab_page_get_icon (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_icon:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_icon: (attributes org.gtk.Method.set_property=icon)
+ * @self: a tab page
  * @icon: (nullable): the icon of @self
  *
- * Sets the icon of @self, displayed next to the title.
- *
- * #HdyTabBar will not show the icon if #HdyTabPage:loading is set to %TRUE,
- * or if @self is pinned and #HdyTabPage:indicator-icon is set.
+ * Sets the icon of @self.
  *
  * Since: 1.2
  */
@@ -1671,10 +1682,10 @@ hdy_tab_page_set_icon (HdyTabPage *self,
 }
 
 /**
- * hdy_tab_page_get_loading:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_loading: (attributes org.gtk.Method.get_property=loading)
+ * @self: a tab page
  *
- * Gets whether @self is loading, see hdy_tab_page_set_loading().
+ * Gets whether @self is loading.
  *
  * Returns: whether @self is loading
  *
@@ -1689,17 +1700,12 @@ hdy_tab_page_get_loading (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_loading:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_loading: (attributes org.gtk.Method.set_property=loading)
+ * @self: a tab page
  * @loading: whether @self is loading
  *
  * Sets wether @self is loading.
  *
- * If set to %TRUE, #HdyTabBar will display a spinner in place of icon.
- *
- * If @self is pinned and #HdyTabPage:indicator-icon is set, the loading status
- * will not be visible.
- *
  * Since: 1.2
  */
 void
@@ -1719,10 +1725,10 @@ hdy_tab_page_set_loading (HdyTabPage *self,
 }
 
 /**
- * hdy_tab_page_get_indicator_icon:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_indicator_icon: (attributes org.gtk.Method.get_property=indicator-icon)
+ * @self: a tab page
  *
- * Gets the indicator icon of @self, see hdy_tab_page_set_indicator_icon().
+ * Gets the indicator icon of @self.
  *
  * Returns: (transfer none) (nullable): the indicator icon of @self
  *
@@ -1737,22 +1743,12 @@ hdy_tab_page_get_indicator_icon (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_indicator_icon:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_indicator_icon: (attributes org.gtk.Method.set_property=indicator-icon)
+ * @self: a tab page
  * @indicator_icon: (nullable): the indicator icon of @self
  *
  * Sets the indicator icon of @self.
  *
- * A common use case is an audio or camera indicator in a web browser.
- *
- * #HdyTabPage will show it at the beginning of the tab, alongside icon
- * representing #HdyTabPage:icon or loading spinner.
- *
- * If the page is pinned, the indicator will be shown instead of icon or spinner.
- *
- * If #HdyTabPage:indicator-activatable is set to %TRUE, indicator icon
- * can act as a button.
- *
  * Since: 1.2
  */
 void
@@ -1771,12 +1767,10 @@ hdy_tab_page_set_indicator_icon (HdyTabPage *self,
 }
 
 /**
- * hdy_tab_page_get_indicator_activatable:
- * @self: a #HdyTabPage
- *
+ * hdy_tab_page_get_indicator_activatable: (attributes org.gtk.Method.get_property=indicator-activatable)
+ * @self: a tab page
  *
- * Gets whether the indicator of @self is activatable, see
- * hdy_tab_page_set_indicator_activatable().
+ * Gets whether the indicator of @self is activatable.
  *
  * Returns: whether the indicator is activatable
  *
@@ -1791,16 +1785,11 @@ hdy_tab_page_get_indicator_activatable (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_indicator_activatable:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_indicator_activatable: (attributes org.gtk.Method.set_property=indicator-activatable)
+ * @self: a tab page
  * @activatable: whether the indicator is activatable
  *
- * sets whether the indicator of @self is activatable.
- *
- * If set to %TRUE, #HdyTabView::indicator-activated will be emitted when
- * the indicator is clicked.
- *
- * If #HdyTabPage:indicator-icon is not set, does nothing.
+ * Sets whether the indicator of @self is activatable.
  *
  * Since: 1.2
  */
@@ -1821,10 +1810,10 @@ hdy_tab_page_set_indicator_activatable (HdyTabPage *self,
 }
 
 /**
- * hdy_tab_page_get_needs_attention:
- * @self: a #HdyTabPage
+ * hdy_tab_page_get_needs_attention: (attributes org.gtk.Method.get_property=needs-attention)
+ * @self: a tab page
  *
- * Gets whether @self needs attention, see hdy_tab_page_set_needs_attention().
+ * Gets whether @self needs attention.
  *
  * Returns: whether @self needs attention
  *
@@ -1839,16 +1828,12 @@ hdy_tab_page_get_needs_attention (HdyTabPage *self)
 }
 
 /**
- * hdy_tab_page_set_needs_attention:
- * @self: a #HdyTabPage
+ * hdy_tab_page_set_needs_attention: (attributes org.gtk.Method.set_property=needs-attention)
+ * @self: a tab page
  * @needs_attention: whether @self needs attention
  *
  * Sets whether @self needs attention.
  *
- * #HdyTabBar will display a glow under the tab representing @self if set to
- * %TRUE. If the tab is not visible, the corresponding edge of the tab bar will
- * be highlighted.
- *
  * Since: 1.2
  */
 void
@@ -1870,9 +1855,9 @@ hdy_tab_page_set_needs_attention (HdyTabPage *self,
 /**
  * hdy_tab_view_new:
  *
- * Creates a new #HdyTabView widget.
+ * Creates a new `HdyTabView`.
  *
- * Returns: a new #HdyTabView
+ * Returns: the newly created `HdyTabView`
  *
  * Since: 1.2
  */
@@ -1883,8 +1868,8 @@ hdy_tab_view_new (void)
 }
 
 /**
- * hdy_tab_view_get_n_pages:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_n_pages: (attributes org.gtk.Method.get_property=n-pages)
+ * @self: a tab view
  *
  * Gets the number of pages in @self.
  *
@@ -1901,12 +1886,12 @@ hdy_tab_view_get_n_pages (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_get_n_pinned_pages:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_n_pinned_pages: (attributes org.gtk.Method.get_property=n-pinned-pages)
+ * @self: a tab view
  *
  * Gets the number of pinned pages in @self.
  *
- * See hdy_tab_view_set_page_pinned().
+ * See [method@TabView.set_page_pinned].
  *
  * Returns: the number of pinned pages in @self
  *
@@ -1921,12 +1906,12 @@ hdy_tab_view_get_n_pinned_pages (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_get_is_transferring_page:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_is_transferring_page: (attributes org.gtk.Method.get_property=is-transferring-page)
+ * @self: a tab view
  *
  * Whether a page is being transferred.
  *
- * Gets the value of #HdyTabView:is-transferring-page property.
+ * Gets the value of [property@TabView:is-transferring-page] property.
  *
  * Returns: whether a page is being transferred
  *
@@ -1941,8 +1926,8 @@ hdy_tab_view_get_is_transferring_page (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_get_selected_page:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_selected_page: (attributes org.gtk.Method.get_property=selected-page)
+ * @self: a tab view
  *
  * Gets the currently selected page in @self.
  *
@@ -1959,8 +1944,8 @@ hdy_tab_view_get_selected_page (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_set_selected_page:
- * @self: a #HdyTabView
+ * hdy_tab_view_set_selected_page: (attributes org.gtk.Method.set_property=selected-page)
+ * @self: a tab view
  * @selected_page: a page in @self
  *
  * Sets the currently selected page in @self.
@@ -1999,13 +1984,13 @@ hdy_tab_view_set_selected_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_select_previous_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  *
  * Selects the page before the currently selected page.
  *
  * If the first page was already selected, this function does nothing.
  *
- * Returns: %TRUE if the selected page was changed, %FALSE otherwise
+ * Returns: whether the selected page was changed
  *
  * Since: 1.2
  */
@@ -2034,13 +2019,13 @@ hdy_tab_view_select_previous_page (HdyTabView *self)
 
 /**
  * hdy_tab_view_select_next_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  *
  * Selects the page after the currently selected page.
  *
  * If the last page was already selected, this function does nothing.
  *
- * Returns: %TRUE if the selected page was changed, %FALSE otherwise
+ * Returns: whether the selected page was changed
  *
  * Since: 1.2
  */
@@ -2126,12 +2111,12 @@ hdy_tab_view_select_last_page (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_get_default_icon:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_default_icon: (attributes org.gtk.Method.get_property=default-icon)
+ * @self: a tab view
  *
- * Gets default icon of @self, see hdy_tab_view_set_default_icon().
+ * Gets default icon of @self.
  *
- * Returns: (transfer none): the default icon of @self.
+ * Returns: (transfer none): the default icon of @self
  *
  * Since: 1.2
  */
@@ -2144,20 +2129,20 @@ hdy_tab_view_get_default_icon (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_set_default_icon:
- * @self: a #HdyTabView
+ * hdy_tab_view_set_default_icon: (attributes org.gtk.Method.set_property=default-icon)
+ * @self: a tab view
  * @default_icon: the default icon
  *
  * Sets default page icon for @self.
  *
- * If a page doesn't provide its own icon via #HdyTabPage:icon, default icon
- * may be used instead for contexts where having an icon is necessary.
+ * 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.
  *
- * #HdyTabBar will use default icon for pinned tabs in case the page is not
+ * [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.
+ * By default, `hdy-tab-icon-missing-symbolic` icon is used.
  *
  * Since: 1.2
  */
@@ -2177,10 +2162,10 @@ hdy_tab_view_set_default_icon (HdyTabView *self,
 }
 
 /**
- * hdy_tab_view_get_menu_model:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_menu_model: (attributes org.gtk.Method.get_property=menu-model)
+ * @self: a tab view
  *
- * Gets the tab context menu model for @self, see hdy_tab_view_set_menu_model().
+ * Gets the tab context menu model for @self.
  *
  * Returns: (transfer none) (nullable): the tab context menu model for @self
  *
@@ -2195,15 +2180,15 @@ hdy_tab_view_get_menu_model (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_set_menu_model:
- * @self: a #HdyTabView
+ * hdy_tab_view_set_menu_model: (attributes org.gtk.Method.set_property=menu-model)
+ * @self: a tab view
  * @menu_model: (nullable): a menu model
  *
  * 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 #HdyTabView::setup-menu signal to set up the menu
- * actions for the particular tab.
+ * provided menu model. Use [signal@TabView::setup-menu] signal to set up the
+ * menu actions for the particular tab.
  *
  * Since: 1.2
  */
@@ -2223,10 +2208,10 @@ hdy_tab_view_set_menu_model (HdyTabView *self,
 }
 
 /**
- * hdy_tab_view_get_shortcut_widget:
- * @self: a #HdyTabView
+ * hdy_tab_view_get_shortcut_widget: (attributes org.gtk.Method.get_property=shortcut-widget)
+ * @self: a tab view
  *
- * Gets the shortcut widget for @self, see hdy_tab_view_set_shortcut_widget().
+ * Gets the shortcut widget for @self.
  *
  * Returns: (transfer none) (nullable): the shortcut widget for @self
  *
@@ -2241,29 +2226,12 @@ hdy_tab_view_get_shortcut_widget (HdyTabView *self)
 }
 
 /**
- * hdy_tab_view_set_shortcut_widget:
- * @self: a #HdyTabView
+ * hdy_tab_view_set_shortcut_widget: (attributes org.gtk.Method.set_property=shortcut-widget)
+ * @self: a tab view
  * @widget: (nullable): a shortcut widget
  *
  * Sets the shortcut widget for @self.
  *
- * Registers the following shortcuts on @widget:
- * * Ctrl+Page Up - switch to the previous page
- * * Ctrl+Page Down - switch to the next page
- * * Ctrl+Home - switch to the first page
- * * Ctrl+End - switch to the last page
- * * Ctrl+Shift+Page Up - move the current page backward
- * * Ctrl+Shift+Page Down - move the current page forward
- * * Ctrl+Shift+Home - move the current page at the start
- * * Ctrl+Shift+End - move the current page at the end
- * * Ctrl+Tab - switch to the next page, with looping
- * * Ctrl+Shift+Tab - switch to the previous page, with looping
- * * Alt+1-9 - switch to pages 1-9
- * * Alt+0 - switch to page 10
- *
- * These shortcuts are always available on @self, this function is useful if
- * they should be available globally.
- *
  * Since: 1.2
  */
 void
@@ -2301,14 +2269,14 @@ hdy_tab_view_set_shortcut_widget (HdyTabView *self,
 
 /**
  * hdy_tab_view_set_page_pinned:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  * @pinned: whether @page should be pinned
  *
  * Pins or unpins @page.
  *
  * Pinned pages are guaranteed to be placed before all non-pinned pages; at any
- * given moment the first #HdyTabView:n-pinned-pages pages in @self are
+ * 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
@@ -2317,17 +2285,17 @@ hdy_tab_view_set_shortcut_widget (HdyTabView *self,
  *
  * Pinned pages can still be reordered between each other.
  *
- * #HdyTabBar will display pinned pages in a compact form, never showing the
+ * [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. #HdyTabPage:indicator-icon
- * 2. A spinner if #HdyTabPage:loading is %TRUE
- * 3. #HdyTabPage:icon
- * 4. #HdyTabView:default-icon
+ * 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 #HdyTabView::close-page for how
- * to override that behavior.
+ * Pinned pages cannot be closed by default, see [signal@TabView::close-page]
+ * for how to override that behavior.
  *
  * Since: 1.2
  */
@@ -2377,12 +2345,12 @@ hdy_tab_view_set_page_pinned (HdyTabView *self,
 
 /**
  * hdy_tab_view_get_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a child in @self
  *
- * Gets the #HdyTabPage object representing @child.
+ * Gets the [class@TabPage] object representing @child.
  *
- * Returns: (transfer none): the #HdyTabPage representing @child
+ * Returns: (transfer none): the [class@TabPage] representing @child
  *
  * Since: 1.2
  */
@@ -2408,10 +2376,10 @@ hdy_tab_view_get_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_get_nth_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @position: the index of the page in @self, starting from 0
  *
- * Gets the #HdyTabPage representing the child at @position.
+ * Gets the [class@TabPage] representing the child at @position.
  *
  * Returns: (transfer none): the page object at @position
  *
@@ -2434,7 +2402,7 @@ hdy_tab_view_get_nth_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_get_page_position:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Finds the position of @page in @self, starting from 0.
@@ -2465,17 +2433,17 @@ hdy_tab_view_get_page_position (HdyTabView *self,
 
 /**
  * hdy_tab_view_add_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
- * @parent: (nullable): a parent page for @child, or %NULL
+ * @parent: (nullable): a parent page for @child
  *
  * 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
- * hdy_tab_view_close_page()).
+ * [method@TabView.close_page].
  *
- * If @parent is %NULL, this function is equivalent to hdy_tab_view_append().
+ * If @parent is `NULL`, this function is equivalent to [method@TabView.append].
  *
  * Returns: (transfer none): the page object representing @child
  *
@@ -2519,14 +2487,14 @@ hdy_tab_view_add_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_insert:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  * @position: the position to add @child at, starting from 0
  *
  * Inserts a non-pinned page at @position.
  *
  * It's an error to try to insert a page before a pinned page, in that case
- * hdy_tab_view_insert_pinned() should be used instead.
+ * [method@TabView.insert_pinned] should be used instead.
  *
  * Returns: (transfer none): the page object representing @child
  *
@@ -2547,7 +2515,7 @@ hdy_tab_view_insert (HdyTabView *self,
 
 /**
  * hdy_tab_view_prepend:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  *
  * Inserts @child as the first non-pinned page.
@@ -2568,7 +2536,7 @@ hdy_tab_view_prepend (HdyTabView *self,
 
 /**
  * hdy_tab_view_append:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  *
  * Inserts @child as the last non-pinned page.
@@ -2589,14 +2557,14 @@ hdy_tab_view_append (HdyTabView *self,
 
 /**
  * hdy_tab_view_insert_pinned:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  * @position: 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 hdy_tab_view_insert() should be used instead.
+ * 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.
  *
  * Returns: (transfer none): the page object representing @child
  *
@@ -2617,7 +2585,7 @@ hdy_tab_view_insert_pinned (HdyTabView *self,
 
 /**
  * hdy_tab_view_prepend_pinned:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  *
  * Inserts @child as the first pinned page.
@@ -2638,7 +2606,7 @@ hdy_tab_view_prepend_pinned (HdyTabView *self,
 
 /**
  * hdy_tab_view_append_pinned:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @child: a widget to add
  *
  * Inserts @child as the last pinned page.
@@ -2659,31 +2627,31 @@ hdy_tab_view_append_pinned (HdyTabView *self,
 
 /**
  * hdy_tab_view_close_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Requests to close @page.
  *
- * Calling this function will result in #HdyTabView::close-page signal being
- * emitted for @page. Closing the page can then be confirmed or denied via
- * hdy_tab_view_close_page_finish().
+ * 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 hdy_tab_view_close_page_finish() call, this
+ * If the page is waiting for a [method@TabView.close_page_finish] call, this
  * function will do nothing.
  *
- * The default handler for #HdyTabView::close-page will immediately confirm
+ * 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 #HdyTabPage: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 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.
+ * 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.
  *
  * Since: 1.2
  */
@@ -2706,18 +2674,18 @@ hdy_tab_view_close_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_close_page_finish:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  * @confirm: whether to confirm or deny closing @page
  *
- * Completes a hdy_tab_view_close_page() call for @page.
+ * 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 hdy_tab_view_close_page() can be called
+ * 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
- * #HdyTabView::close-page is used.
+ * [signal@TabView::close-page] is used.
  *
  * Since: 1.2
  */
@@ -2739,7 +2707,7 @@ hdy_tab_view_close_page_finish (HdyTabView *self,
 
 /**
  * hdy_tab_view_close_other_pages:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Requests to close all pages other than @page.
@@ -2768,7 +2736,7 @@ hdy_tab_view_close_other_pages (HdyTabView *self,
 
 /**
  * hdy_tab_view_close_pages_before:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Requests to close all pages before @page.
@@ -2796,7 +2764,7 @@ hdy_tab_view_close_pages_before (HdyTabView *self,
 
 /**
  * hdy_tab_view_close_pages_after:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Requests to close all pages after @page.
@@ -2824,7 +2792,7 @@ hdy_tab_view_close_pages_after (HdyTabView *self,
 
 /**
  * hdy_tab_view_reorder_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  * @position: the position to insert the page at, starting at 0
  *
@@ -2833,7 +2801,7 @@ hdy_tab_view_close_pages_after (HdyTabView *self,
  * 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.
  *
- * Returns: %TRUE if @page was moved, %FALSE otherwise
+ * Returns: whether @page was moved
  *
  * Since: 1.2
  */
@@ -2880,12 +2848,12 @@ hdy_tab_view_reorder_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_reorder_backward:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Reorders @page to before its previous page if possible.
  *
- * Returns: %TRUE if @page was moved, %FALSE otherwise
+ * Returns: whether @page was moved
  *
  * Since: 1.2
  */
@@ -2913,12 +2881,12 @@ hdy_tab_view_reorder_backward (HdyTabView *self,
 
 /**
  * hdy_tab_view_reorder_forward:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Reorders @page to after its next page if possible.
  *
- * Returns: %TRUE if @page was moved, %FALSE otherwise
+ * Returns: whether @page was moved
  *
  * Since: 1.2
  */
@@ -2946,12 +2914,12 @@ hdy_tab_view_reorder_forward (HdyTabView *self,
 
 /**
  * hdy_tab_view_reorder_first:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Reorders @page to the first possible position.
  *
- * Returns: %TRUE if @page was moved, %FALSE otherwise
+ * Returns: whether @page was moved
  *
  * Since: 1.2
  */
@@ -2974,12 +2942,12 @@ hdy_tab_view_reorder_first (HdyTabView *self,
 
 /**
  * hdy_tab_view_reorder_last:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  *
  * Reorders @page to the last possible position.
  *
- * Returns: %TRUE if @page was moved, %FALSE otherwise
+ * Returns: whether @page was moved
  *
  * Since: 1.2
  */
@@ -3037,12 +3005,14 @@ hdy_tab_view_attach_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_transfer_page:
- * @self: a #HdyTabView
+ * @self: a tab view
  * @page: a page of @self
  * @other_view: the tab view to transfer the page to
  * @position: the position to insert the page at, starting at 0
  *
- * Transfers @page from @self to @other_view. The @page object will be reused.
+ * 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.
@@ -3075,10 +3045,11 @@ hdy_tab_view_transfer_page (HdyTabView *self,
 
 /**
  * hdy_tab_view_get_pages:
- * @self: a #HdyTabView
+ * @self: a tab view
+ *
+ * Returns a [iface@Gio.ListModel] containing the pages of @self.
  *
- * Returns a #GListModel containing the pages of @self. This model can be used
- * to keep an up to date view of the pages.
+ * This model can be used to keep an up to date view of the pages.
  *
  * Returns: (transfer none): the model containing pages of @self
  *
diff --git a/src/hdy-title-bar.c b/src/hdy-title-bar.c
index a80bce48..fac803a1 100644
--- a/src/hdy-title-bar.c
+++ b/src/hdy-title-bar.c
@@ -12,24 +12,26 @@
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 
 /**
- * SECTION:hdy-title-bar
- * @short_description: A simple title bar container.
- * @Title: HdyTitleBar
+ * HdyTitleBar:
  *
- * 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 GtkHeaderBar but it
- * won't force a widget layout on you: you can put whatever widget you want in
- * it, including a GtkHeaderBar.
+ * A simple title bar container.
  *
- * HdyTitleBar becomes really useful when you want to animate header bars, like
- * an adaptive application using #HdyLeaflet would do.
+ * `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 has been deprecated, header bars can be animated without it
- * when placed inside #HdyWindow or #HdyApplicationWindow.
+ * `HdyTitleBar` becomes really useful when you want to animate header bars,
+ * like an adaptive application using [class@Leaflet] would do.
  *
- * # CSS nodes
+ * `HdyTitleBar` has been deprecated, header bars can be animated without it
+ * when placed inside [class@Window] or [class@ApplicationWindow].
  *
- * #HdyTitleBar has a single CSS node with name headerbar.
+ * ## CSS nodes
+ *
+ * `HdyTitleBar` has a single CSS node with name `headerbar`.
+ *
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
@@ -52,12 +54,14 @@ G_DEFINE_TYPE (HdyTitleBar, hdy_title_bar, GTK_TYPE_BIN)
 static GParamSpec *props[LAST_PROP];
 
 /**
- * hdy_title_bar_set_selection_mode:
- * @self: a #HdyTitleBar
- * @selection_mode: %TRUE to enable the selection mode
+ * hdy_title_bar_set_selection_mode:  (attributes org.gtk.Method.set_property=selection-mode)
+ * @self: a title bar
+ * @selection_mode: `TRUE` to enable the selection mode
  *
  * Sets whether @self is in selection mode.
  *
+ * Since: 1.0
+ *
  * Deprecated: 1.4
  */
 void
@@ -86,12 +90,14 @@ hdy_title_bar_set_selection_mode (HdyTitleBar *self,
 }
 
 /**
- * hdy_title_bar_get_selection_mode:
- * @self: a #HdyTitleBar
+ * hdy_title_bar_get_selection_mode:  (attributes org.gtk.Method.get_property=selection-mode)
+ * @self: a title bar
  *
  * Returns whether whether @self is in selection mode.
  *
- * Returns: %TRUE if the title bar is in selection mode
+ * Returns: `TRUE` if the title bar is in selection mode
+ *
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
@@ -310,9 +316,11 @@ hdy_title_bar_class_init (HdyTitleBarClass *klass)
   widget_class->size_allocate = hdy_title_bar_size_allocate;
 
   /**
-   * HdyTitleBar:selection_mode:
+   * HdyTitleBar:selection-mode: (attributes org.gtk.Property.get=hdy_title_bar_set_selection_mode 
org.gtk.Property.set=hdy_title_bar_set_selection_mode)
+   *
+   * Whether or not the title bar is in selection mode.
    *
-   * %TRUE if the title bar is in selection mode.
+   * Since: 1.0
    *
    * Deprecated: 1.4
    */
@@ -349,9 +357,11 @@ hdy_title_bar_init (HdyTitleBar *self)
 /**
  * hdy_title_bar_new:
  *
- * Creates a new #HdyTitleBar.
+ * Creates a new `HdyTitleBar`.
+ *
+ * Returns: a new `HdyTitleBar`
  *
- * Returns: a new #HdyTitleBar
+ * Since: 1.0
  *
  * Deprecated: 1.4
  */
diff --git a/src/hdy-value-object.c b/src/hdy-value-object.c
index e929675a..d1a7dbc7 100644
--- a/src/hdy-value-object.c
+++ b/src/hdy-value-object.c
@@ -10,14 +10,14 @@
 #include "hdy-value-object.h"
 
 /**
- * SECTION:hdy-value-object
- * @short_description: An object representing a #GValue.
- * @Title: HdyValueObject
+ * HdyValueObject:
  *
- * The #HdyValueObject object represents a #GValue, allowing it to be
- * used with #GListModel.
+ * An object representing a [struct@GObject.Value].
  *
- * Since: 0.0.8
+ * The `HdyValueObject` object represents a [struct@GObject.Value], allowing it
+ * to be used with [iface@Gio.ListModel].
+ *
+ * Since: 1.0
  */
 
 struct _HdyValueObject
@@ -39,12 +39,13 @@ static GParamSpec *props [N_PROPS];
 
 /**
  * hdy_value_object_new:
- * @value: the #GValue to store
+ * @value: the value to store
+ *
+ * Creates a new `HdyValueObject`.
  *
- * Create a new #HdyValueObject.
+ * Returns: a new `HdyValueObject`
  *
- * Returns: a new #HdyValueObject
- * Since: 0.0.8
+ * Since: 1.0
  */
 HdyValueObject *
 hdy_value_object_new (const GValue *value)
@@ -56,14 +57,17 @@ hdy_value_object_new (const GValue *value)
 
 /**
  * hdy_value_object_new_collect: (skip)
- * @type: the #GType of the value
+ * @type: the type of the value
  * @...: the value to store
  *
- * Creates a new #HdyValueObject. This is a convenience method which uses
- * the G_VALUE_COLLECT() macro internally.
+ * Creates a new `HdyValueObject`.
+ *
+ * This is a convenience method which uses the `G_VALUE_COLLECT` macro
+ * internally.
  *
- * Returns: a new #HdyValueObject
- * Since: 0.0.8
+ * Returns: a new `HdyValueObject`
+ *
+ * Since: 1.0
  */
 HdyValueObject*
 hdy_value_object_new_collect (GType type, ...)
@@ -90,11 +94,14 @@ hdy_value_object_new_collect (GType type, ...)
  * hdy_value_object_new_string: (skip)
  * @string: (transfer none): the string to store
  *
- * Creates a new #HdyValueObject. This is a convenience method to create a
- * #HdyValueObject that stores a string.
+ * Creates a new `HdyValueObject`.
+ *
+ * This is a convenience method to create a [class@ValueObject] that stores a
+ * string.
+ *
+ * Returns: a new `HdyValueObject`
  *
- * Returns: a new #HdyValueObject
- * Since: 0.0.8
+ * Since: 1.0
  */
 HdyValueObject*
 hdy_value_object_new_string (const gchar *string)
@@ -110,11 +117,14 @@ hdy_value_object_new_string (const gchar *string)
  * hdy_value_object_new_take_string: (skip)
  * @string: (transfer full): the string to store
  *
- * Creates a new #HdyValueObject. This is a convenience method to create a
- * #HdyValueObject that stores a string taking ownership of it.
+ * Creates a new `HdyValueObject`.
  *
- * Returns: a new #HdyValueObject
- * Since: 0.0.8
+ * This is a convenience method to create a [class@ValueObject] that stores a
+ * string taking ownership of it.
+ *
+ * Returns: a new `HdyValueObject`
+ *
+ * Since: 1.0
  */
 HdyValueObject*
 hdy_value_object_new_take_string (gchar *string)
@@ -187,6 +197,13 @@ hdy_value_object_class_init (HdyValueObjectClass *klass)
   object_class->get_property = hdy_value_object_get_property;
   object_class->set_property = hdy_value_object_set_property;
 
+  /**
+   * HdyValueObject:value: (attributes org.gtk.Property.get=hdy_value_object_get_value)
+   *
+   * The contained value.
+   *
+   * Since: 1.0
+   */
   props[PROP_VALUE] =
     g_param_spec_boxed ("value", C_("HdyValueObjectClass", "Value"),
                         C_("HdyValueObjectClass", "The contained value"),
@@ -204,13 +221,14 @@ hdy_value_object_init (HdyValueObject *self)
 }
 
 /**
- * hdy_value_object_get_value:
- * @value: the #HdyValueObject
+ * hdy_value_object_get_value: (attributes org.gtk.Method.get_property=value)
+ * @value: the value
  *
  * Return the contained value.
  *
- * Returns: (transfer none): the contained #GValue
- * Since: 0.0.8
+ * Returns: (transfer none): the contained [struct@GObject.Value]
+ *
+ * Since: 1.0
  */
 const GValue*
 hdy_value_object_get_value (HdyValueObject *value)
@@ -220,12 +238,12 @@ hdy_value_object_get_value (HdyValueObject *value)
 
 /**
  * hdy_value_object_copy_value:
- * @value: the #HdyValueObject
- * @dest: #GValue with correct type to copy into
+ * @value: the value
+ * @dest: value with correct type to copy into
  *
- * Copy data from the contained #GValue into @dest.
+ * Copy data from the contained [struct@GObject.Value] into @dest.
  *
- * Since: 0.0.8
+ * Since: 1.0
  */
 void
 hdy_value_object_copy_value (HdyValueObject *value,
@@ -236,12 +254,13 @@ hdy_value_object_copy_value (HdyValueObject *value,
 
 /**
  * hdy_value_object_get_string:
- * @value: the #HdyValueObject
+ * @value: the value
  *
- * Returns the contained string if the value is of type #G_TYPE_STRING.
+ * Returns the contained string if the value is of type `G_TYPE_STRING`.
  *
  * Returns: (transfer none): the contained string
- * Since: 0.0.8
+ *
+ * Since: 1.0
  */
 const gchar*
 hdy_value_object_get_string (HdyValueObject *value)
@@ -251,17 +270,16 @@ hdy_value_object_get_string (HdyValueObject *value)
 
 /**
  * hdy_value_object_dup_string:
- * @value: the #HdyValueObject
+ * @value: the value
  *
- * Returns a copy of the contained string if the value is of type
- * #G_TYPE_STRING.
+ * Gets a copy of the contained string if the value is of type `G_TYPE_STRING`.
  *
  * Returns: (transfer full): a copy of the contained string
- * Since: 0.0.8
+ *
+ * Since: 1.0
  */
 gchar*
 hdy_value_object_dup_string (HdyValueObject *value)
 {
   return g_value_dup_string (&value->value);
 }
-
diff --git a/src/hdy-version.h.in b/src/hdy-version.h.in
index b9de78f9..5eef5263 100644
--- a/src/hdy-version.h.in
+++ b/src/hdy-version.h.in
@@ -10,38 +10,31 @@
 #error "Only <handy.h> can be included directly."
 #endif
 
-/**
- * SECTION:hdy-version
- * @short_description: Handy version checking.
- *
- * Handy provides macros to check the version of the library at compile-time.
- */
-
 /**
  * HDY_MAJOR_VERSION:
  *
- * Hdy major version component (e.g. 1 if %HDY_VERSION is 1.2.3)
+ * Handy major version component (e.g. 1 if the version is 1.2.3).
  */
 #define HDY_MAJOR_VERSION              (@HDY_MAJOR_VERSION@)
 
 /**
  * HDY_MINOR_VERSION:
  *
- * Hdy minor version component (e.g. 2 if %HDY_VERSION is 1.2.3)
+ * Handy minor version component (e.g. 2 if the version is 1.2.3).
  */
 #define HDY_MINOR_VERSION              (@HDY_MINOR_VERSION@)
 
 /**
  * HDY_MICRO_VERSION:
  *
- * Hdy micro version component (e.g. 3 if %HDY_VERSION is 1.2.3)
+ * Handy micro version component (e.g. 3 if the version is 1.2.3).
  */
 #define HDY_MICRO_VERSION              (@HDY_MICRO_VERSION@)
 
 /**
- * HDY_VERSION
+ * HDY_VERSION:
  *
- * Hdy version.
+ * Handy version (e.g. 1.2.3).
  */
 #define HDY_VERSION                    (@HDY_VERSION@)
 
@@ -71,7 +64,7 @@
  * @minor: required minor version
  * @micro: required micro version
  *
- * Compile-time version checking. Evaluates to %TRUE if the version
+ * Compile-time version checking. Evaluates to `TRUE` if the version
  * of handy is greater than the required one.
  */
 #define HDY_CHECK_VERSION(major,minor,micro)   \
diff --git a/src/hdy-view-switcher-bar.c b/src/hdy-view-switcher-bar.c
index 335bfc2f..ac7abce8 100644
--- a/src/hdy-view-switcher-bar.c
+++ b/src/hdy-view-switcher-bar.c
@@ -12,22 +12,24 @@
 #include "hdy-view-switcher-bar.h"
 
 /**
- * SECTION:hdy-view-switcher-bar
- * @short_description: A view switcher action bar.
- * @title: HdyViewSwitcherBar
- * @See_also: #HdyViewSwitcher, #HdyViewSwitcherTitle
+ * HdyViewSwitcherBar:
+ *
+ * A view switcher action bar.
  *
  * An action bar letting you switch between multiple views offered by a
- * #GtkStack, via an #HdyViewSwitcher. 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.
+ * [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].
  *
- * You can conveniently bind the #HdyViewSwitcherBar:reveal property to
- * #HdyViewSwitcherTitle:title-visible to automatically reveal the view switcher
- * bar when the title label is displayed in place of the view switcher.
+ * 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:
  *
- * An example of the UI definition for a common use case:
- * |[
+ * ```xml
  * <object class="GtkWindow"/>
  *   <child type="titlebar">
  *     <object class="HdyHeaderBar">
@@ -57,13 +59,13 @@
  *     </object>
  *   </child>
  * </object>
- * ]|
+ * ```
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyViewSwitcherBar has a single CSS node with name viewswitcherbar.
+ * `HdyViewSwitcherBar` has a single CSS node with name `viewswitcherbar`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 
 enum {
@@ -166,12 +168,11 @@ hdy_view_switcher_bar_class_init (HdyViewSwitcherBarClass *klass)
   object_class->set_property = hdy_view_switcher_bar_set_property;
 
   /**
-   * HdyViewSwitcherBar:policy:
+   * HdyViewSwitcherBar:policy: (attributes org.gtk.Property.get=hdy_view_switcher_bar_get_policy 
org.gtk.Property.set=hdy_view_switcher_bar_set_policy)
    *
-   * The #HdyViewSwitcherPolicy the #HdyViewSwitcher should use to determine
-   * which mode to use.
+   * The policy used to determine which mode to use.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_POLICY] =
     g_param_spec_enum ("policy",
@@ -181,11 +182,11 @@ hdy_view_switcher_bar_class_init (HdyViewSwitcherBarClass *klass)
                        G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherBar:stack:
+   * HdyViewSwitcherBar:stack: (attributes org.gtk.Property.get=hdy_view_switcher_bar_get_stack 
org.gtk.Property.set=hdy_view_switcher_bar_set_stack)
    *
-   * The #GtkStack the #HdyViewSwitcher controls.
+   * The [class@Gtk.Stack] the [class@ViewSwitcher] controls.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_STACK] =
     g_param_spec_object ("stack",
@@ -195,11 +196,11 @@ hdy_view_switcher_bar_class_init (HdyViewSwitcherBarClass *klass)
                          G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherBar:reveal:
+   * HdyViewSwitcherBar:reveal: (attributes org.gtk.Property.get=hdy_view_switcher_bar_get_reveal 
org.gtk.Property.set=hdy_view_switcher_bar_set_reveal)
    *
    * Whether the bar should be revealed or hidden.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_REVEAL] =
     g_param_spec_boolean ("reveal",
@@ -236,11 +237,11 @@ hdy_view_switcher_bar_init (HdyViewSwitcherBar *self)
 /**
  * hdy_view_switcher_bar_new:
  *
- * Creates a new #HdyViewSwitcherBar widget.
+ * Creates a new `HdyViewSwitcherBar`.
  *
- * Returns: a new #HdyViewSwitcherBar
+ * Returns: the newly created `HdyViewSwitcherBar`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_view_switcher_bar_new (void)
@@ -249,14 +250,14 @@ hdy_view_switcher_bar_new (void)
 }
 
 /**
- * hdy_view_switcher_bar_get_policy:
- * @self: a #HdyViewSwitcherBar
+ * hdy_view_switcher_bar_get_policy: (attributes org.gtk.Method.get_property=policy)
+ * @self: a view switcher bar
  *
  * Gets the policy of @self.
  *
  * Returns: the policy of @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 HdyViewSwitcherPolicy
 hdy_view_switcher_bar_get_policy (HdyViewSwitcherBar *self)
@@ -267,13 +268,13 @@ hdy_view_switcher_bar_get_policy (HdyViewSwitcherBar *self)
 }
 
 /**
- * hdy_view_switcher_bar_set_policy:
- * @self: a #HdyViewSwitcherBar
+ * hdy_view_switcher_bar_set_policy: (attributes org.gtk.Method.set_property=policy)
+ * @self: a view switcher bar
  * @policy: the new policy
  *
  * Sets the policy of @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_bar_set_policy (HdyViewSwitcherBar    *self,
@@ -292,14 +293,14 @@ hdy_view_switcher_bar_set_policy (HdyViewSwitcherBar    *self,
 }
 
 /**
- * hdy_view_switcher_bar_get_stack:
- * @self: a #HdyViewSwitcherBar
+ * hdy_view_switcher_bar_get_stack: (attributes org.gtk.Method.get_property=stack)
+ * @self: a view switcher bar
  *
- * Get the #GtkStack being controlled by the #HdyViewSwitcher.
+ * Get the [class@Gtk.Stack] being controlled by the [class@ViewSwitcher].
  *
- * Returns: (nullable) (transfer none): the #GtkStack, or %NULL if none has been set
+ * Returns: (nullable) (transfer none): the stack
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkStack *
 hdy_view_switcher_bar_get_stack (HdyViewSwitcherBar *self)
@@ -310,13 +311,13 @@ hdy_view_switcher_bar_get_stack (HdyViewSwitcherBar *self)
 }
 
 /**
- * hdy_view_switcher_bar_set_stack:
- * @self: a #HdyViewSwitcherBar
- * @stack: (nullable): a #GtkStack
+ * hdy_view_switcher_bar_set_stack: (attributes org.gtk.Method.set_property=stack)
+ * @self: a view switcher bar
+ * @stack: (nullable): a stack
  *
- * Sets the #GtkStack to control.
+ * Sets the [class@Gtk.Stack] to control.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_bar_set_stack (HdyViewSwitcherBar *self,
@@ -348,14 +349,14 @@ hdy_view_switcher_bar_set_stack (HdyViewSwitcherBar *self,
 }
 
 /**
- * hdy_view_switcher_bar_get_reveal:
- * @self: a #HdyViewSwitcherBar
+ * hdy_view_switcher_bar_get_reveal: (attributes org.gtk.Method.get_property=reveal)
+ * @self: a view switcher bar
  *
- * Gets whether @self should be revealed or not.
+ * Gets whether @self should be revealed or hidden.
  *
- * Returns: %TRUE if @self is revealed, %FALSE if not.
+ * Returns: whether @self is revealed
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 gboolean
 hdy_view_switcher_bar_get_reveal (HdyViewSwitcherBar *self)
@@ -366,13 +367,13 @@ hdy_view_switcher_bar_get_reveal (HdyViewSwitcherBar *self)
 }
 
 /**
- * hdy_view_switcher_bar_set_reveal:
- * @self: a #HdyViewSwitcherBar
- * @reveal: %TRUE to reveal @self
+ * hdy_view_switcher_bar_set_reveal: (attributes org.gtk.Method.set_property=reveal)
+ * @self: a view switcher bar
+ * @reveal: `TRUE` to reveal @self
  *
  * Sets whether @self should be revealed or not.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_bar_set_reveal (HdyViewSwitcherBar *self,
diff --git a/src/hdy-view-switcher-button.c b/src/hdy-view-switcher-button.c
index c6d3caad..6d9a178e 100644
--- a/src/hdy-view-switcher-button.c
+++ b/src/hdy-view-switcher-button.c
@@ -11,16 +11,14 @@
 #include "hdy-view-switcher-button-private.h"
 
 /**
- * PRIVATE:hdy-view-switcher-button
- * @short_description: Button used in #HdyViewSwitcher.
- * @title: HdyViewSwitcherButton
- * @See_also: #HdyViewSwitcher
- * @stability: Private
+ * HdyViewSwitcherButton:
  *
- * #HdyViewSwitcherButton represents an application's view. It is designed to be
- * used exclusively internally by #HdyViewSwitcher.
+ * Button used in [class@ViewSwitcher].
  *
- * Since: 0.0.10
+ * [class@ViewSwitcherButton] represents an application's view. It is designed
+ * to be used exclusively internally by [class@ViewSwitcher].
+ *
+ * Since: 1.0
  */
 
 enum {
@@ -194,9 +192,9 @@ hdy_view_switcher_button_class_init (HdyViewSwitcherButtonClass *klass)
   /**
    * HdyViewSwitcherButton:icon-name:
    *
-   * The icon name representing the view, or %NULL for no icon.
+   * The icon name representing the view, or `NULL` for no icon.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_ICON_NAME] =
     g_param_spec_string ("icon-name",
@@ -210,7 +208,7 @@ hdy_view_switcher_button_class_init (HdyViewSwitcherButtonClass *klass)
    *
    * The icon size.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_ICON_SIZE] =
     g_param_spec_int ("icon-size",
@@ -227,7 +225,7 @@ hdy_view_switcher_button_class_init (HdyViewSwitcherButtonClass *klass)
    * corresponding button when a view needs attention and it is not the current
    * one.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_NEEDS_ATTENTION] =
     g_param_spec_boolean ("needs-attention",
@@ -280,11 +278,11 @@ hdy_view_switcher_button_init (HdyViewSwitcherButton *self)
 /**
  * hdy_view_switcher_button_new:
  *
- * Creates a new #HdyViewSwitcherButton widget.
+ * Creates a new [class@ViewSwitcherButton] widget.
  *
- * Returns: a new #HdyViewSwitcherButton
+ * Returns: a new [class@ViewSwitcherButton]
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_view_switcher_button_new (void)
@@ -294,13 +292,13 @@ hdy_view_switcher_button_new (void)
 
 /**
  * hdy_view_switcher_button_get_icon_name:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  *
- * Gets the icon name representing the view, or %NULL is no icon is set.
+ * Gets the icon name representing the view, or `NULL` is no icon is set.
  *
- * Returns: (transfer none) (nullable): the icon name, or %NULL
+ * Returns: (transfer none) (nullable): the icon name
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 const gchar *
 hdy_view_switcher_button_get_icon_name (HdyViewSwitcherButton *self)
@@ -312,12 +310,12 @@ hdy_view_switcher_button_get_icon_name (HdyViewSwitcherButton *self)
 
 /**
  * hdy_view_switcher_button_set_icon_name:
- * @self: a #HdyViewSwitcherButton
- * @icon_name: (nullable): an icon name or %NULL
+ * @self: a view switcher button
+ * @icon_name: (nullable): an icon name
  *
- * Sets the icon name representing the view, or %NULL to disable the icon.
+ * Sets the icon name representing the view, or `NULL` to disable the icon.
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 void
 hdy_view_switcher_button_set_icon_name (HdyViewSwitcherButton *self,
@@ -336,13 +334,13 @@ hdy_view_switcher_button_set_icon_name (HdyViewSwitcherButton *self,
 
 /**
  * hdy_view_switcher_button_get_icon_size:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  *
  * Gets the icon size used by @self.
  *
  * Returns: the icon size used by @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 GtkIconSize
 hdy_view_switcher_button_get_icon_size (HdyViewSwitcherButton *self)
@@ -354,12 +352,12 @@ hdy_view_switcher_button_get_icon_size (HdyViewSwitcherButton *self)
 
 /**
  * hdy_view_switcher_button_set_icon_size:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  * @icon_size: the new icon size
  *
  * Sets the icon size used by @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_button_set_icon_size (HdyViewSwitcherButton *self,
@@ -377,13 +375,14 @@ hdy_view_switcher_button_set_icon_size (HdyViewSwitcherButton *self,
 
 /**
  * hdy_view_switcher_button_get_needs_attention:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  *
  * Gets whether the view represented by @self requires the user attention.
  *
- * Returns: %TRUE if the view represented by @self requires the user attention, %FALSE otherwise
+ * Returns: `TRUE` if the view represented by @self requires the user attention,
+ *   `FALSE` otherwise
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 gboolean
 hdy_view_switcher_button_get_needs_attention (HdyViewSwitcherButton *self)
@@ -399,12 +398,12 @@ hdy_view_switcher_button_get_needs_attention (HdyViewSwitcherButton *self)
 
 /**
  * hdy_view_switcher_button_set_needs_attention:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  * @needs_attention: the new icon size
  *
  * Sets whether the view represented by @self requires the user attention.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_button_set_needs_attention (HdyViewSwitcherButton *self,
@@ -430,13 +429,13 @@ hdy_view_switcher_button_set_needs_attention (HdyViewSwitcherButton *self,
 
 /**
  * hdy_view_switcher_button_get_label:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  *
  * Gets the label representing the view.
  *
- * Returns: (transfer none) (nullable): the label, or %NULL
+ * Returns: (transfer none) (nullable): the label
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 const gchar *
 hdy_view_switcher_button_get_label (HdyViewSwitcherButton *self)
@@ -448,12 +447,12 @@ hdy_view_switcher_button_get_label (HdyViewSwitcherButton *self)
 
 /**
  * hdy_view_switcher_button_set_label:
- * @self: a #HdyViewSwitcherButton
- * @label: (nullable): a label or %NULL
+ * @self: a view switcher button
+ * @label: (nullable): a label
  *
  * Sets the label representing the view.
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 void
 hdy_view_switcher_button_set_label (HdyViewSwitcherButton *self,
@@ -472,13 +471,13 @@ hdy_view_switcher_button_set_label (HdyViewSwitcherButton *self,
 
 /**
  * hdy_view_switcher_button_set_narrow_ellipsize:
- * @self: a #HdyViewSwitcherButton
- * @mode: a #PangoEllipsizeMode
+ * @self: a view switcher button
+ * @mode: a [enum@Pango.EllipsizeMode]
  *
- * Set the mode used to ellipsize the text in narrow mode if there is not
- * enough space to render the entire string.
+ * Set the mode used to ellipsize the text in narrow mode if there is not enough
+ * space to render the entire string.
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 void
 hdy_view_switcher_button_set_narrow_ellipsize (HdyViewSwitcherButton *self,
@@ -493,7 +492,7 @@ hdy_view_switcher_button_set_narrow_ellipsize (HdyViewSwitcherButton *self,
 
 /**
  * hdy_view_switcher_button_get_size:
- * @self: a #HdyViewSwitcherButton
+ * @self: a view switcher button
  * @h_min_width: (out) (nullable): the minimum width when horizontal
  * @h_nat_width: (out) (nullable): the natural width when horizontal
  * @v_min_width: (out) (nullable): the minimum width when vertical
@@ -501,7 +500,7 @@ hdy_view_switcher_button_set_narrow_ellipsize (HdyViewSwitcherButton *self,
  *
  * Measure the size requests in both horizontal and vertical modes.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_button_get_size (HdyViewSwitcherButton *self,
diff --git a/src/hdy-view-switcher-title.c b/src/hdy-view-switcher-title.c
index af459c93..c0f21628 100644
--- a/src/hdy-view-switcher-title.c
+++ b/src/hdy-view-switcher-title.c
@@ -12,23 +12,26 @@
 #include "hdy-squeezer.h"
 
 /**
- * SECTION:hdy-view-switcher-title
- * @short_description: A view switcher title.
- * @title: HdyViewSwitcherTitle
- * @See_also: #HdyHeaderBar, #HdyViewSwitcher, #HdyViewSwitcherBar
- *
- * A widget letting you switch between multiple views offered by a #GtkStack,
- * via an #HdyViewSwitcher. It is designed to be used as the title widget of a
- * #HdyHeaderBar, 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.
- *
- * You can conveniently bind the #HdyViewSwitcherBar:reveal property to
- * #HdyViewSwitcherTitle:title-visible to automatically reveal the view switcher
- * bar when the title label is displayed in place of the view switcher.
- *
- * An example of the UI definition for a common use case:
- * |[
+ * HdyViewSwitcherTitle:
+ *
+ * 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">
@@ -58,11 +61,11 @@
  *     </object>
  *   </child>
  * </object>
- * ]|
+ * ```
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyViewSwitcherTitle has a single CSS node with name viewswitchertitle.
+ * `HdyViewSwitcherTitle` has a single CSS node with name `viewswitchertitle`.
  *
  * Since: 1.0
  */
@@ -218,10 +221,9 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
   object_class->set_property = hdy_view_switcher_title_set_property;
 
   /**
-   * HdyViewSwitcherTitle:policy:
+   * HdyViewSwitcherTitle:policy: (attributes org.gtk.Property.get=hdy_view_switcher_title_get_policy 
org.gtk.Property.set=hdy_view_switcher_title_set_policy)
    *
-   * The #HdyViewSwitcherPolicy the #HdyViewSwitcher should use to determine
-   * which mode to use.
+   * The policy used to determine which mode to use.
    *
    * Since: 1.0
    */
@@ -233,9 +235,9 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
                        G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherTitle:stack:
+   * HdyViewSwitcherTitle:stack: (attributes org.gtk.Property.get=hdy_view_switcher_title_get_stack 
org.gtk.Property.set=hdy_view_switcher_title_set_stack)
    *
-   * The #GtkStack the #HdyViewSwitcher controls.
+   * The [class@Gtk.Stack] the [class@ViewSwitcher] controls.
    *
    * Since: 1.0
    */
@@ -247,9 +249,12 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
                          G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherTitle:title:
+   * HdyViewSwitcherTitle:title: (attributes org.gtk.Property.get=hdy_view_switcher_title_get_title 
org.gtk.Property.set=hdy_view_switcher_title_set_title)
    *
-   * The title of the #HdyViewSwitcher.
+   * The title of the [class@ViewSwitcher].
+   *
+   * The title should give a user additional details. A good title should not
+   * include the application name.
    *
    * Since: 1.0
    */
@@ -261,9 +266,11 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
                          G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherTitle:subtitle:
+   * HdyViewSwitcherTitle:subtitle: (attributes org.gtk.Property.get=hdy_view_switcher_title_get_subtitle 
org.gtk.Property.set=hdy_view_switcher_title_set_subtitle)
+   *
+   * The subtitle of the [class@ViewSwitcher].
    *
-   * The subtitle of the #HdyViewSwitcher.
+   * The subtitle should give a user additional details.
    *
    * Since: 1.0
    */
@@ -275,10 +282,17 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
                          G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherTitle:view-switcher-enabled:
+   * HdyViewSwitcherTitle:view-switcher-enabled: (attributes 
org.gtk.Property.get=hdy_view_switcher_title_get_view_switcher_enabled 
org.gtk.Property.set=hdy_view_switcher_title_set_view_switcher_enabled)
    *
    * 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.
+   *
    * Since: 1.0
    */
   props[PROP_VIEW_SWITCHER_ENABLED] =
@@ -289,7 +303,7 @@ hdy_view_switcher_title_class_init (HdyViewSwitcherTitleClass *klass)
                          G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcherTitle:title-visible:
+   * HdyViewSwitcherTitle:title-visible: (attributes 
org.gtk.Property.get=hdy_view_switcher_title_get_title_visible)
    *
    * Whether the bar should be revealed or hidden.
    *
@@ -333,9 +347,9 @@ hdy_view_switcher_title_init (HdyViewSwitcherTitle *self)
 /**
  * hdy_view_switcher_title_new:
  *
- * Creates a new #HdyViewSwitcherTitle widget.
+ * Creates a new `HdyViewSwitcherTitle`.
  *
- * Returns: a new #HdyViewSwitcherTitle
+ * Returns: the newly created `HdyViewSwitcherTitle`
  *
  * Since: 1.0
  */
@@ -346,8 +360,8 @@ hdy_view_switcher_title_new (void)
 }
 
 /**
- * hdy_view_switcher_title_get_policy:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_policy: (attributes org.gtk.Method.get_property=policy)
+ * @self: a view switcher title
  *
  * Gets the policy of @self.
  *
@@ -364,8 +378,8 @@ hdy_view_switcher_title_get_policy (HdyViewSwitcherTitle *self)
 }
 
 /**
- * hdy_view_switcher_title_set_policy:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_set_policy: (attributes org.gtk.Method.set_property=policy)
+ * @self: a view switcher title
  * @policy: the new policy
  *
  * Sets the policy of @self.
@@ -389,12 +403,12 @@ hdy_view_switcher_title_set_policy (HdyViewSwitcherTitle  *self,
 }
 
 /**
- * hdy_view_switcher_title_get_stack:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_stack: (attributes org.gtk.Method.get_property=stack)
+ * @self: a view switcher title
  *
- * Get the #GtkStack being controlled by the #HdyViewSwitcher.
+ * Gets the stack controlled by @self.
  *
- * Returns: (nullable) (transfer none): the #GtkStack, or %NULL if none has been set
+ * Returns: (nullable) (transfer none): the stack
  *
  * Since: 1.0
  */
@@ -407,11 +421,11 @@ hdy_view_switcher_title_get_stack (HdyViewSwitcherTitle *self)
 }
 
 /**
- * hdy_view_switcher_title_set_stack:
- * @self: a #HdyViewSwitcherTitle
- * @stack: (nullable): a #GtkStack
+ * hdy_view_switcher_title_set_stack: (attributes org.gtk.Method.set_property=policy)
+ * @self: a view switcher title
+ * @stack: (nullable): a stack
  *
- * Sets the #GtkStack to control.
+ * Sets the [class@Gtk.Stack] to control.
  *
  * Since: 1.0
  */
@@ -445,12 +459,12 @@ hdy_view_switcher_title_set_stack (HdyViewSwitcherTitle *self,
 }
 
 /**
- * hdy_view_switcher_title_get_title:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_title: (attributes org.gtk.Method.get_property=title)
+ * @self: a view switcher title
  *
- * Gets the title of @self. See hdy_view_switcher_title_set_title().
+ * Gets the title of @self.
  *
- * Returns: (transfer none) (nullable): the title of @self, or %NULL.
+ * Returns: (transfer none) (nullable): the title of @self
  *
  * Since: 1.0
  */
@@ -463,12 +477,11 @@ hdy_view_switcher_title_get_title (HdyViewSwitcherTitle *self)
 }
 
 /**
- * hdy_view_switcher_title_set_title:
- * @self: a #HdyViewSwitcherTitle
- * @title: (nullable): a title, or %NULL
+ * hdy_view_switcher_title_set_title: (attributes org.gtk.Method.set_property=title)
+ * @self: a view switcher title
+ * @title: (nullable): a title
  *
- * Sets the title of @self. The title should give a user additional details. A
- * good title should not include the application name.
+ * Sets the title of @self.
  *
  * Since: 1.0
  */
@@ -488,12 +501,12 @@ hdy_view_switcher_title_set_title (HdyViewSwitcherTitle *self,
 }
 
 /**
- * hdy_view_switcher_title_get_subtitle:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_subtitle: (attributes org.gtk.Method.get_property=subtitle)
+ * @self: a view switcher title
  *
- * Gets the subtitle of @self. See hdy_view_switcher_title_set_subtitle().
+ * Gets the subtitle of @self.
  *
- * Returns: (transfer none) (nullable): the subtitle of @self, or %NULL.
+ * Returns: (transfer none) (nullable): the subtitle of @self
  *
  * Since: 1.0
  */
@@ -506,12 +519,11 @@ hdy_view_switcher_title_get_subtitle (HdyViewSwitcherTitle *self)
 }
 
 /**
- * hdy_view_switcher_title_set_subtitle:
- * @self: a #HdyViewSwitcherTitle
- * @subtitle: (nullable): a subtitle, or %NULL
+ * hdy_view_switcher_title_set_subtitle: (attributes org.gtk.Method.set_property=subtitle)
+ * @self: a view switcher title
+ * @subtitle: (nullable): a subtitle
  *
- * Sets the subtitle of @self. The subtitle should give a user additional
- * details.
+ * Sets the subtitle of @self.
  *
  * Since: 1.0
  */
@@ -531,14 +543,12 @@ hdy_view_switcher_title_set_subtitle (HdyViewSwitcherTitle *self,
 }
 
 /**
- * hdy_view_switcher_title_get_view_switcher_enabled:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_view_switcher_enabled: (attributes 
org.gtk.Method.get_property=view-switcher-enabled)
+ * @self: a view switcher title
  *
  * Gets whether @self's view switcher is enabled.
  *
- * See hdy_view_switcher_title_set_view_switcher_enabled().
- *
- * Returns: %TRUE if the view switcher is enabled, %FALSE otherwise.
+ * Returns: whether the view switcher is enabled
  *
  * Since: 1.0
  */
@@ -551,16 +561,11 @@ hdy_view_switcher_title_get_view_switcher_enabled (HdyViewSwitcherTitle *self)
 }
 
 /**
- * hdy_view_switcher_title_set_view_switcher_enabled:
- * @self: a #HdyViewSwitcherTitle
- * @enabled: %TRUE to enable the view switcher, %FALSE to disable it
- *
- * Make @self enable or disable its view switcher. If it is disabled, the title
- * will be displayed instead. This allows to programmatically and prematurely
- * hide the view switcher of @self even if it fits in the available space.
+ * hdy_view_switcher_title_set_view_switcher_enabled: (attributes 
org.gtk.Method.set_property=view-switcher-enabled)
+ * @self: a view switcher title
+ * @enabled: `TRUE` to enable the view switcher, `FALSE` to disable it
  *
- * 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.
+ * Sets whether @self's view switcher is enabled.
  *
  * Since: 1.0
  */
@@ -582,12 +587,12 @@ hdy_view_switcher_title_set_view_switcher_enabled (HdyViewSwitcherTitle *self,
 }
 
 /**
- * hdy_view_switcher_title_get_title_visible:
- * @self: a #HdyViewSwitcherTitle
+ * hdy_view_switcher_title_get_title_visible: (attributes org.gtk.Method.get_property=title-visible)
+ * @self: a view switcher title
  *
- * Get whether the title label of @self is visible.
+ * Gets whether the title of @self is currently visible.
  *
- * Returns: %TRUE if the title label of @self is visible, %FALSE if not.
+ * Returns: whether the title of @self is currently visible
  *
  * Since: 1.0
  */
diff --git a/src/hdy-view-switcher.c b/src/hdy-view-switcher.c
index 323ab79d..e0525b0c 100644
--- a/src/hdy-view-switcher.c
+++ b/src/hdy-view-switcher.c
@@ -17,27 +17,28 @@
 #include "hdy-view-switcher-button-private.h"
 
 /**
- * SECTION:hdy-view-switcher
- * @short_description: An adaptive view switcher.
- * @title: HdyViewSwitcher
+ * HdyViewSwitcher:
+ *
+ * An adaptive view switcher.
  *
  * An adaptive view switcher, designed to switch between multiple views in a
- * similar fashion than a #GtkStackSwitcher.
+ * 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 #GtkHeaderBar, #HdyHeaderBar doesn't force a vertical
- * alignment on its title widget, so we recommend it over #GtkHeaderBar.
+ * 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
+ * ## CSS nodes
  *
- * #HdyViewSwitcher has a single CSS node with name viewswitcher.
+ * `HdyViewSwitcher` has a single CSS node with name `viewswitcher`.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 
 /**
@@ -45,6 +46,10 @@
  * @HDY_VIEW_SWITCHER_POLICY_AUTO: Automatically adapt to the best fitting mode
  * @HDY_VIEW_SWITCHER_POLICY_NARROW: Force the narrow mode
  * @HDY_VIEW_SWITCHER_POLICY_WIDE: Force the wide mode
+ *
+ * Describes the adaptive modes of [class@ViewSwitcher].
+ *
+ * Since: 1.0
  */
 
 #define MIN_NAT_BUTTON_WIDTH 100
@@ -500,12 +505,11 @@ hdy_view_switcher_class_init (HdyViewSwitcherClass *klass)
   widget_class->drag_leave = hdy_view_switcher_drag_leave;
 
   /**
-   * HdyViewSwitcher:policy:
+   * HdyViewSwitcher:policy: (attributes org.gtk.Property.get=hdy_view_switcher_get_policy 
org.gtk.Property.set=hdy_view_switcher_set_policy)
    *
-   * The #HdyViewSwitcherPolicy the view switcher should use to determine which
-   * mode to use.
+   * The policy to determine which mode to use.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_POLICY] =
     g_param_spec_enum ("policy",
@@ -515,17 +519,18 @@ hdy_view_switcher_class_init (HdyViewSwitcherClass *klass)
                        G_PARAM_EXPLICIT_NOTIFY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
   /**
-   * HdyViewSwitcher:narrow-ellipsize:
+   * HdyViewSwitcher:narrow-ellipsize: (attributes 
org.gtk.Property.get=hdy_view_switcher_get_narrow_ellipsize 
org.gtk.Property.set=hdy_view_switcher_set_narrow_ellipsize)
    *
-   * 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
-   * #PangoEllipsizeMode.
+   * The preferred place to ellipsize the string.
    *
-   * 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.
+   * If the narrow mode label does not have enough room to display the entire
+   * string, specified as a [enum@Pango.EllipsizeMode].
    *
-   * Since: 0.0.10
+   * 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.
+   *
+   * Since: 1.0
    */
   props[PROP_NARROW_ELLIPSIZE] =
     g_param_spec_enum ("narrow-ellipsize",
@@ -536,11 +541,11 @@ hdy_view_switcher_class_init (HdyViewSwitcherClass *klass)
                        G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
 
   /**
-   * HdyViewSwitcher:stack:
+   * HdyViewSwitcher:stack: (attributes org.gtk.Property.get=hdy_view_switcher_get_stack 
org.gtk.Property.set=hdy_view_switcher_set_stack)
    *
-   * The #GtkStack the view switcher controls.
+   * The [class@Gtk.Stack] the view switcher controls.
    *
-   * Since: 0.0.10
+   * Since: 1.0
    */
   props[PROP_STACK] =
     g_param_spec_object ("stack",
@@ -573,11 +578,11 @@ hdy_view_switcher_init (HdyViewSwitcher *self)
 /**
  * hdy_view_switcher_new:
  *
- * Creates a new #HdyViewSwitcher widget.
+ * Creates a new `HdyViewSwitcher`.
  *
- * Returns: a new #HdyViewSwitcher
+ * Returns: the newly created `HdyViewSwitcher`
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkWidget *
 hdy_view_switcher_new (void)
@@ -586,14 +591,14 @@ hdy_view_switcher_new (void)
 }
 
 /**
- * hdy_view_switcher_get_policy:
- * @self: a #HdyViewSwitcher
+ * hdy_view_switcher_get_policy: (attributes org.gtk.Method.get_property=policy)
+ * @self: a view switcher
  *
  * Gets the policy of @self.
  *
  * Returns: the policy of @self
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 HdyViewSwitcherPolicy
 hdy_view_switcher_get_policy (HdyViewSwitcher *self)
@@ -604,13 +609,13 @@ hdy_view_switcher_get_policy (HdyViewSwitcher *self)
 }
 
 /**
- * hdy_view_switcher_set_policy:
- * @self: a #HdyViewSwitcher
+ * hdy_view_switcher_set_policy: (attributes org.gtk.Method.set_property=policy)
+ * @self: a view switcher
  * @policy: the new policy
  *
  * Sets the policy of @self.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_set_policy (HdyViewSwitcher       *self,
@@ -629,15 +634,14 @@ hdy_view_switcher_set_policy (HdyViewSwitcher       *self,
 }
 
 /**
- * hdy_view_switcher_get_narrow_ellipsize:
- * @self: a #HdyViewSwitcher
+ * hdy_view_switcher_get_narrow_ellipsize: (attributes org.gtk.Method.get_property=narrow-ellipsize)
+ * @self: a view switcher
  *
- * Get the ellipsizing position of the narrow mode label. See
- * hdy_view_switcher_set_narrow_ellipsize().
+ * Get the ellipsizing position of the narrow mode label.
  *
- * Returns: #PangoEllipsizeMode
+ * Returns: a [enum@Pango.EllipsizeMode]
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 PangoEllipsizeMode
 hdy_view_switcher_get_narrow_ellipsize (HdyViewSwitcher *self)
@@ -648,14 +652,13 @@ hdy_view_switcher_get_narrow_ellipsize (HdyViewSwitcher *self)
 }
 
 /**
- * hdy_view_switcher_set_narrow_ellipsize:
- * @self: a #HdyViewSwitcher
- * @mode: a #PangoEllipsizeMode
+ * hdy_view_switcher_set_narrow_ellipsize: (attributes org.gtk.Method.set_property=narrow-ellipsize)
+ * @self: a view switcher
+ * @mode: a [enum@Pango.EllipsizeMode]
  *
- * Set the mode used to ellipsize the text in narrow mode if there is not
- * enough space to render the entire string.
+ * Sets the mode used to ellipsize the text in narrow mode.
  *
- * Since: 0.0.10
+ * Since: 1.0
  **/
 void
 hdy_view_switcher_set_narrow_ellipsize (HdyViewSwitcher    *self,
@@ -680,16 +683,14 @@ hdy_view_switcher_set_narrow_ellipsize (HdyViewSwitcher    *self,
 }
 
 /**
- * hdy_view_switcher_get_stack:
- * @self: a #HdyViewSwitcher
- *
- * Get the #GtkStack being controlled by the #HdyViewSwitcher.
+ * hdy_view_switcher_get_stack: (attributes org.gtk.Method.get_property=stack)
+ * @self: a view switcher
  *
- * See: hdy_view_switcher_set_stack()
+ * Gets the stack controlled by @self.
  *
- * Returns: (nullable) (transfer none): the #GtkStack, or %NULL if none has been set
+ * Returns: (nullable) (transfer none): the stack
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 GtkStack *
 hdy_view_switcher_get_stack (HdyViewSwitcher *self)
@@ -700,13 +701,13 @@ hdy_view_switcher_get_stack (HdyViewSwitcher *self)
 }
 
 /**
- * hdy_view_switcher_set_stack:
- * @self: a #HdyViewSwitcher
- * @stack: (nullable): a #GtkStack
+ * hdy_view_switcher_set_stack: (attributes org.gtk.Method.set_property=stack)
+ * @self: a view switcher
+ * @stack: (nullable): a stack
  *
- * Sets the #GtkStack to control.
+ * Sets the [class@Gtk.Stack] to control.
  *
- * Since: 0.0.10
+ * Since: 1.0
  */
 void
 hdy_view_switcher_set_stack (HdyViewSwitcher *self,
diff --git a/src/hdy-window-handle-controller.c b/src/hdy-window-handle-controller.c
index 538718b2..49d9e06a 100644
--- a/src/hdy-window-handle-controller.c
+++ b/src/hdy-window-handle-controller.c
@@ -34,16 +34,14 @@
 #include <glib/gi18n-lib.h>
 
 /**
- * PRIVATE:hdy-window-handle-controller
- * @short_description: An oblect that makes widgets behave like titlebars.
- * @Title: HdyWindowHandleController
- * @See_also: #HdyHeaderBar, #HdyWindowHandle
- * @stability: Private
+ * HdyWindowHandleController:
+ *
+ * An oblect that makes widgets behave like titlebars.
  *
  * When HdyWindowHandleController is added to the widget, dragging that widget
  * will move the window, and right click, double click and middle click will be
  * handled as if that widget was a titlebar. Currently it's used to implement
- * these properties in #HdyWindowHandle and #HdyHeaderBar
+ * these properties in [class@WindowHandle] and [class@HeaderBar]
  *
  * Since: 1.0
  */
@@ -472,11 +470,11 @@ hdy_window_handle_controller_init (HdyWindowHandleController *self)
 
 /**
  * hdy_window_handle_controller_new:
- * @widget: The widget to create a controller for
+ * @widget: the widget to create a controller for
  *
- * Creates a new #HdyWindowHandleController for @widget.
+ * Creates a new `HdyWindowHandleController` for @widget.
  *
- * Returns: (transfer full): a newly created #HdyWindowHandleController
+ * Returns: the newly created `HdyWindowHandleController`
  *
  * Since: 1.0
  */
diff --git a/src/hdy-window-handle.c b/src/hdy-window-handle.c
index 1f8c904c..5823c23f 100644
--- a/src/hdy-window-handle.c
+++ b/src/hdy-window-handle.c
@@ -10,23 +10,22 @@
 #include "hdy-window-handle-controller-private.h"
 
 /**
- * SECTION:hdy-window-handle
- * @short_description: A bin that acts like a titlebar.
- * @Title: HdyWindowHandle
- * @See_also: #HdyApplicationWindow, #HdyHeaderBar, #HdyWindow
+ * HdyWindowHandle:
  *
- * HdyWindowHandle is a #GtkBin subclass that can be dragged to move its
- * #GtkWindow, and handles right click, middle click and double click as
- * expected from a titlebar. This is particularly useful with #HdyWindow or
- * #HdyApplicationWindow.
+ * A bin that acts like a titlebar.
  *
- * It isn't necessary to use #HdyWindowHandle if you use #HdyHeaderBar.
+ * `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
+ * ## CSS nodes
  *
- * #HdyWindowHandle has a single CSS node with name windowhandle.
+ * `HdyWindowHandle` has a single CSS node with name `windowhandle`.
  *
  * Since: 1.0
  */
@@ -70,9 +69,9 @@ hdy_window_handle_init (HdyWindowHandle *self)
 /**
  * hdy_window_handle_new:
  *
- * Creates a new #HdyWindowHandle.
+ * Creates a new `HdyWindowHandle`.
  *
- * Returns: (transfer full): a newly created #HdyWindowHandle
+ * Returns: the newly created `HdyWindowHandle`
  *
  * Since: 1.0
  */
diff --git a/src/hdy-window-mixin.c b/src/hdy-window-mixin.c
index cb4eb6ed..4bade07c 100644
--- a/src/hdy-window-mixin.c
+++ b/src/hdy-window-mixin.c
@@ -20,16 +20,15 @@ typedef enum {
 } HdyCorner;
 
 /**
- * PRIVATE:hdy-window-mixin
- * @short_description: A helper object for #HdyWindow and #HdyApplicationWindow
- * @title: HdyWindowMixin
- * @See_also: #HdyApplicationWindow, #HdyWindow
- * @stability: Private
+ * HdyWindowMixin:
  *
- * The HdyWindowMixin object contains the implementation of the HdyWindow and
- * HdyApplicationWindow classes, providing a way to make a GtkWindow subclass
- * that has masked window corners on all sides and no titlebar by default,
- * allowing for more freedom with how to handle the titlebar for applications.
+ * A helper object for [class@Window] and [class@ApplicationWindow]
+ *
+ * The [class@WindowMixin] object contains the implementation of the
+ * [class@Window] and [class@ApplicationWindow] classes, providing a way to make
+ * a [class@Gtk.Window] subclass that has masked window corners on all sides and
+ * no titlebar by default, allowing for more freedom with how to handle the
+ * titlebar for applications.
  *
  * Since: 1.0
  */
diff --git a/src/hdy-window.c b/src/hdy-window.c
index 7ca9c12e..1c3dd12f 100644
--- a/src/hdy-window.c
+++ b/src/hdy-window.c
@@ -10,17 +10,16 @@
 #include "hdy-window-mixin-private.h"
 
 /**
- * SECTION:hdy-window
- * @short_description: A freeform window.
- * @title: HdyWindow
- * @See_also: #HdyApplicationWindow, #HdyHeaderBar, #HdyWindowHandle
+ * HdyWindow:
  *
- * The HdyWindow widget is a subclass of #GtkWindow 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:
+ * 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">
@@ -33,40 +32,40 @@
  *         </object>
  *       </child>
  *       <child>
- *         ...
+ *         <!-- ... -->
  *       </child>
  *     </object>
  *   </child>
  * </object>
- * ]|
+ * ```
  *
- * It's recommended to use #HdyHeaderBar with #HdyWindow, as unlike
- * #GtkHeaderBar it remains draggable inside the window. Otherwise,
- * #HdyWindowHandle can be used.
+ * 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 #GtkRevealer, and to show titlebar above content by
- * putting it into a #GtkOverlay instead of #GtkBox.
+ * `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 #GtkGLArea, it may bring a slight performance regression
- * when the window is not fullscreen, tiled or maximized.
+ * 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 gtk_window_get_titlebar() and gtk_window_set_titlebar() is not
- * supported and will result in a crash.
+ * Using [method@Gtk.Window.get_titlebar] and [method@Gtk.Window.set_titlebar]
+ * is not supported and will result in a crash.
  *
- * # CSS nodes
+ * ## CSS nodes
  *
- * #HdyWindow has a main CSS node with the name window and style classes
- * .background, .csd and .unified.
+ * `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
+ * 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.
+ * `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
+ * decoration-overlay for the sheen on top of the window, `widget.titlebar`, and
  * deck, which contains the child inside the window.
  *
  * Since: 1.0
@@ -180,9 +179,9 @@ hdy_window_buildable_init (GtkBuildableIface *iface)
 /**
  * hdy_window_new:
  *
- * Creates a new #HdyWindow.
+ * Creates a new `HdyWindow`.
  *
- * Returns: (transfer full): a newly created #HdyWindow
+ * Returns: the newly created `HdyWindow`
  *
  * Since: 1.0
  */
diff --git a/subprojects/gi-docgen.wrap b/subprojects/gi-docgen.wrap
new file mode 100644
index 00000000..98cd9211
--- /dev/null
+++ b/subprojects/gi-docgen.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+directory=gi-docgen
+url=https://gitlab.gnome.org/GNOME/gi-docgen.git
+push-url=ssh://git gitlab gnome org:GNOME/gi-docgen.git
+revision=main
+depth=1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]