### Class

# Adw NavigationView

since: 1.4

#### Description [src]

    final class Adw.NavigationView : Gtk.Widget
      implements Adw.Swipeable, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
      /* No available fields */
    }

A page-based navigation container.

`AdwNavigationView` presents one child at a time, similar to `GtkStack`.

`AdwNavigationView` can only contain `AdwNavigationPage` children.

It maintains a navigation stack that can be controlled with `adw_navigation_view_push()` and `adw_navigation_view_pop()`. The whole navigation stack can also be replaced using `adw_navigation_view_replace()`.

`AdwNavigationView` allows to manage pages statically or dynamically.

Static pages can be added using the `adw_navigation_view_add()` method. The `AdwNavigationView` will keep a reference to these pages, but they aren’t accessible to the user until `adw_navigation_view_push()` is called (except for the first page, which is pushed automatically). Use the `adw_navigation_view_remove()` method to remove them. This is useful for applications that have a small number of unique pages and just need navigation between them.

Dynamic pages are automatically destroyed once they are popped off the navigation stack. To add a page like this, push it using the `adw_navigation_view_push()` method without calling `adw_navigation_view_add()` first.

## Tags

Static pages, as well as any pages in the navigation stack, can be accessed by their `AdwNavigationPage:tag`. For example, `adw_navigation_view_push_by_tag()` can be used to push a static page that’s not in the navigation stack without having to keep a reference to it manually.

## Header Bar Integration

When used inside `AdwNavigationView`, `AdwHeaderBar` will automatically display a back button that can be used to go back to the previous page when possible. The button also has a context menu, allowing to pop multiple pages at once, potentially across multiple navigation views.

Set `AdwHeaderBar:show-back-button` to `FALSE` to disable this behavior in rare scenarios where it’s unwanted.

`AdwHeaderBar` will also display the title of the `AdwNavigationPage` it’s placed into, so most applications shouldn’t need to customize it at all.

## Shortcuts and Gestures

`AdwNavigationView` supports the following shortcuts for going to the previous page:

- `Escape` (unless `AdwNavigationView:pop-on-escape` is set to `FALSE`)
- `Alt`+`←`
- Back mouse button

Additionally, it supports interactive gestures:

- One-finger swipe towards the right on touchscreens
- Scrolling towards the right on touchpads (usually two-finger swipe)

These gestures have transitions enabled regardless of the `AdwNavigationView:animate-transitions` value.

Applications can also enable shortcuts for pushing another page onto the navigation stack via connecting to the `AdwNavigationView::get-next-page` signal, in that case the following shortcuts are supported:

- `Alt`+`→`
- Forward mouse button
- Swipe/scrolling towards the left

For right-to-left locales, the gestures and shortcuts are reversed.

`AdwNavigationPage:can-pop` can be used to disable them, along with the header bar back buttons.

## Actions

`AdwNavigationView` defines actions for controlling the navigation stack. actions for controlling the navigation stack:

- `navigation.push` takes a string parameter specifying the tag of the page to push, and is equivalent to calling `adw_navigation_view_push_by_tag()`.

- `navigation.pop` doesn’t take any parameters and pops the current page from the navigation stack, equivalent to calling `adw_navigation_view_pop()`.

## `AdwNavigationView` as `GtkBuildable`

`AdwNavigationView` allows to add pages as children, equivalent to using the `adw_navigation_view_add()` method.

Example of an `AdwNavigationView` UI definition:

    <object class="AdwNavigationView">
      <child>
        <object class="AdwNavigationPage">
          <property name="title" translatable="yes">Page 1</property>
          <property name="child">
            <object class="AdwToolbarView">
              <child type="top">
                <object class="AdwHeaderBar"/>
              </child>
              <property name="content">
                <object class="GtkButton">
                  <property name="label" translatable="yes">Open Page 2</property>
                  <property name="halign">center</property>
                  <property name="valign">center</property>
                  <property name="action-name">navigation.push</property>
                  <property name="action-target">'page-2'</property>
                  <style>
                    <class name="pill"/>
                   </style>
                </object>
              </property>
            </object>
          </property>
        </object>
      </child>
      <child>
        <object class="AdwNavigationPage">
          <property name="title" translatable="yes">Page 2</property>
          <property name="tag">page-2</property>
          <property name="child">
            <object class="AdwToolbarView">
              <child type="top">
                <object class="AdwHeaderBar"/>
              </child>
              <property name="content">
                <!-- put your content here -->
              </property>
            </object>
          </property>
        </object>
      </child>
    </object>

## CSS nodes

`AdwNavigationView` has a single CSS node with the name `navigation-view`.

## Accessibility

`AdwNavigationView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.

Available since: 1.4

#### Ancestors

- GtkWidget
- GInitiallyUnowned
- GObject

#### Implements

- AdwSwipeable
- GtkAccessible
- GtkBuildable
- GtkConstraintTarget

#### Constructors

###### adw_navigation_view_new

Creates a new `AdwNavigationView`.

since: 1.4

#### Instance methods

###### adw_navigation_view_add

Permanently adds `page` to `self`.

since: 1.4

###### adw_navigation_view_find_page

Finds a page in `self` by its tag.

since: 1.4

###### adw_navigation_view_get_animate_transitions

Gets whether `self` animates page transitions.

since: 1.4

###### adw_navigation_view_get_hhomogeneous

Gets whether `self` is horizontally homogeneous.

since: 1.7

###### adw_navigation_view_get_navigation_stack

Returns a `GListModel` that contains the pages in navigation stack.

since: 1.4

###### adw_navigation_view_get_pop_on_escape

Gets whether pressing Escape pops the current page on `self`.

since: 1.4

###### adw_navigation_view_get_previous_page

Gets the previous page for `page`.

since: 1.4

###### adw_navigation_view_get_vhomogeneous

Gets whether `self` is vertically homogeneous.

since: 1.7

###### adw_navigation_view_get_visible_page

Gets the currently visible page in `self`.

since: 1.4

###### adw_navigation_view_get_visible_page_tag

Gets the tag of the currently visible page in `self`.

since: 1.7

###### adw_navigation_view_pop

Pops the visible page from the navigation stack.

since: 1.4

###### adw_navigation_view_pop_to_page

Pops pages from the navigation stack until `page` is visible.

since: 1.4

###### adw_navigation_view_pop_to_tag

Pops pages from the navigation stack until page with the tag `tag` is visible.

since: 1.4

###### adw_navigation_view_push

Pushes `page` onto the navigation stack.

since: 1.4

###### adw_navigation_view_push_by_tag

Pushes the page with the tag `tag` onto the navigation stack.

since: 1.4

###### adw_navigation_view_remove

Removes `page` from `self`.

since: 1.4

###### adw_navigation_view_replace

Replaces the current navigation stack with `pages`.

since: 1.4

###### adw_navigation_view_replace_with_tags

Replaces the current navigation stack with pages with the tags `tags`.

since: 1.4

###### adw_navigation_view_set_animate_transitions

Sets whether `self` should animate page transitions.

since: 1.4

###### adw_navigation_view_set_hhomogeneous

Sets `self` to be horizontally homogeneous or not.

since: 1.7

###### adw_navigation_view_set_pop_on_escape

Sets whether pressing Escape pops the current page on `self`.

since: 1.4

###### adw_navigation_view_set_vhomogeneous

Sets `self` to be vertically homogeneous or not.

since: 1.7

##### Methods inherited from GtkWidget (164)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from AdwSwipeable (5)

###### adw_swipeable_get_cancel_progress

Gets the progress `self` will snap back to after the gesture is canceled.

###### adw_swipeable_get_distance

Gets the swipe distance of `self`.

###### adw_swipeable_get_progress

Gets the current progress of `self`.

###### adw_swipeable_get_snap_points

Gets the snap points of `self`.

###### adw_swipeable_get_swipe_area

Gets the area `self` can start a swipe from for the given direction and gesture type.

##### Methods inherited from GtkAccessible (21)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

###### gtk_accessible_get_accessible_id

Retrieves the accessible identifier for the accessible object.

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the implementation for the given accessible object.

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

###### gtk_accessible_get_platform_state

Queries a platform state, such as focus.

###### gtk_accessible_reset_property

Resets the accessible property to its default value.

###### gtk_accessible_reset_relation

Resets the accessible relation to its default value.

###### gtk_accessible_reset_state

Resets the accessible state to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling.

###### gtk_accessible_update_platform_state

Informs ATs that the platform state has changed.

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

#### Properties

###### Adw.NavigationView:animate-transitions

Whether to animate page transitions.

since: 1.4

###### Adw.NavigationView:hhomogeneous

Whether the view is horizontally homogeneous.

since: 1.7

###### Adw.NavigationView:navigation-stack

A list model that contains the pages in navigation stack.

since: 1.4

###### Adw.NavigationView:pop-on-escape

Whether pressing Escape pops the current page.

since: 1.4

###### Adw.NavigationView:vhomogeneous

Whether the view is vertically homogeneous.

since: 1.7

###### Adw.NavigationView:visible-page

The currently visible page.

since: 1.4

###### Adw.NavigationView:visible-page-tag

The tag of the currently visible page.

since: 1.7

##### Properties inherited from GtkWidget (35)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the `GtkWidget::query-tooltip` signal on `widget`.

###### Gtk.Widget:height-request

Overrides for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:limit-events

Makes this widget act like a modal dialog, with respect to event delivery.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Overrides for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

#### Signals

###### Adw.NavigationView::get-next-page

Emitted when a push shortcut or a gesture is triggered.

since: 1.4

###### Adw.NavigationView::popped

Emitted after `page` has been popped from the navigation stack.

since: 1.4

###### Adw.NavigationView::pushed

Emitted after a page has been pushed to the navigation stack.

since: 1.4

###### Adw.NavigationView::replaced

Emitted after the navigation stack has been replaced.

since: 1.4

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct AdwNavigationViewClass {
      GtkWidgetClass parent_class;

    }

No description available.

###### Class members

`parent_class: GtkWidgetClass`

  No description available.