Class NavigationSplitView

All Implemented Interfaces:
Accessible, Buildable, ConstraintTarget, Proxy

@Generated("org.javagi.JavaGI") public final class NavigationSplitView extends Widget implements Accessible, Buildable, ConstraintTarget

A widget presenting sidebar and content side by side or as a navigation view.

navigation-split-view navigation-split-view-collapsed

AdwNavigationSplitView has two NavigationPage children: sidebar and content, and displays them side by side.

When NavigationSplitView:collapsed is set to TRUE, it instead puts both children inside an NavigationView. The NavigationSplitView:show-content controls which child is visible while collapsed.

See also OverlaySplitView.

AdwNavigationSplitView is typically used together with an Breakpoint setting the collapsed property to TRUE on small widths, as follows:

<object class="AdwWindow">
  <property name="default-width">800</property>
  <property name="default-height">800</property>
  <child>
    <object class="AdwBreakpoint">
      <condition>max-width: 400sp</condition>
      <setter object="split_view" property="collapsed">True</setter>
    </object>
  </child>
  <property name="content">
    <object class="AdwNavigationSplitView" id="split_view">
      <property name="sidebar">
        <object class="AdwNavigationPage">
          <property name="title" translatable="yes">Sidebar</property>
          <property name="child">
            <!-- ... -->
          </property>
        </object>
      </property>
      <property name="content">
        <object class="AdwNavigationPage">
          <property name="title" translatable="yes">Content</property>
          <property name="child">
            <!-- ... -->
          </property>
        </object>
      </property>
    </object>
  </property>
</object>

Sizing

When not collapsed, AdwNavigationSplitView changes the sidebar width depending on its own width.

If possible, it tries to allocate a fraction of the total width, controlled with the NavigationSplitView:sidebar-width-fraction property.

The sidebar also has minimum and maximum sizes, controlled with the NavigationSplitView:min-sidebar-width and NavigationSplitView:max-sidebar-width properties.

The minimum and maximum sizes are using the length unit specified with the NavigationSplitView:sidebar-width-unit.

By default, sidebar is using 25% of the total width, with 180sp as the minimum size and 280sp as the maximum size.

Header Bar Integration

When used inside AdwNavigationSplitView, HeaderBar will automatically hide the window buttons in the middle.

When collapsed, it also displays a back button for the content widget, as well as the page titles. See NavigationView documentation for details.

Actions

AdwNavigationSplitView defines the same actions as AdwNavigationView, but they can be used even when the split view is not collapsed:

  • navigation.push takes a string parameter specifying the tag of the page to push. If it matches the tag of the content widget, it sets NavigationSplitView:show-content to TRUE.

  • navigation.pop doesn't take any parameters and sets NavigationSplitView:show-content to FALSE.

AdwNavigationSplitView as GtkBuildable

The AdwNavigationSplitView implementation of the Buildable interface supports setting the sidebar widget by specifying “sidebar” as the “type” attribute of a <child> element, Specifying “content” child type or omitting it results in setting the content widget.

CSS nodes

AdwNavigationSplitView has a single CSS node with the name navigation-split-view.

When collapsed, it contains a child node with the name navigation-view containing both children.

navigation-split-view
╰── navigation-view
    ├── [sidebar child]
    ╰── [content child]

When not collapsed, it contains two nodes with the name widget, one with the .sidebar-pane style class, the other one with .content-view style class, containing the sidebar and content children respectively.

navigation-split-view
├── widget.sidebar-pane
│   ╰── [sidebar child]
╰── widget.content-pane
    ╰── [content child]

Accessibility

AdwNavigationSplitView uses the Gtk.AccessibleRole.group role.

Since:
1.4
  • Constructor Details

    • NavigationSplitView

      public NavigationSplitView(MemorySegment address)
      Create a NavigationSplitView instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • NavigationSplitView

      public NavigationSplitView()
      Create a new NavigationSplitView.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the NavigationSplitView class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected NavigationSplitView asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class Widget
      Returns:
      the instance as if it were its parent type
    • getCollapsed

      public boolean getCollapsed()
      Gets whether this NavigationSplitView is collapsed.
      Returns:
      whether this NavigationSplitView is collapsed
      Since:
      1.4
    • getContent

      public @Nullable NavigationPage getContent()
      Sets the content widget for self.
      Returns:
      the content widget
      Since:
      1.4
    • getMaxSidebarWidth

      public double getMaxSidebarWidth()
      Gets the maximum sidebar width for self.
      Returns:
      the maximum width
      Since:
      1.4
    • getMinSidebarWidth

      public double getMinSidebarWidth()
      Gets the minimum sidebar width for self.
      Returns:
      the minimum width
      Since:
      1.4
    • getShowContent

      public boolean getShowContent()
      Gets which page is visible when this NavigationSplitView is collapsed.
      Returns:
      whether to show content when collapsed
      Since:
      1.4
    • getSidebar

      public @Nullable NavigationPage getSidebar()
      Gets the sidebar widget for self.
      Returns:
      the sidebar widget
      Since:
      1.4
    • getSidebarPosition

      public PackType getSidebarPosition()
      Gets the sidebar position for self.
      Returns:
      the sidebar position for this NavigationSplitView
      Since:
      1.7
    • getSidebarWidthFraction

      public double getSidebarWidthFraction()
      Gets the preferred sidebar width fraction for self.
      Returns:
      the preferred width fraction
      Since:
      1.4
    • getSidebarWidthUnit

      public LengthUnit getSidebarWidthUnit()
      Gets the length unit for minimum and maximum sidebar widths.
      Returns:
      the length unit
      Since:
      1.4
    • setCollapsed

      public void setCollapsed(boolean collapsed)

      Sets whether this NavigationSplitView is collapsed.

      When collapsed, the children are put inside an NavigationView, otherwise they are displayed side by side.

      The NavigationSplitView:show-content controls which child is visible while collapsed.

      Parameters:
      collapsed - whether this NavigationSplitView is collapsed
      Since:
      1.4
    • setContent

      public void setContent(@Nullable NavigationPage content)
      Sets the content widget for self.
      Parameters:
      content - the content widget
      Since:
      1.4
    • setMaxSidebarWidth

      public void setMaxSidebarWidth(double width)

      Sets the maximum sidebar width for self.

      Maximum width is affected by NavigationSplitView:sidebar-width-unit.

      The sidebar widget can still be allocated with larger width if its own minimum width exceeds it.

      Parameters:
      width - the maximum width
      Since:
      1.4
    • setMinSidebarWidth

      public void setMinSidebarWidth(double width)

      Sets the minimum sidebar width for self.

      Minimum width is affected by NavigationSplitView:sidebar-width-unit.

      The sidebar widget can still be allocated with larger width if its own minimum width exceeds it.

      Parameters:
      width - the minimum width
      Since:
      1.4
    • setShowContent

      public void setShowContent(boolean showContent)

      Sets which page is visible when this NavigationSplitView is collapsed.

      If set to TRUE, the content widget will be the visible page when NavigationSplitView:collapsed is TRUE; otherwise the sidebar widget will be visible.

      If the split view is already collapsed, the visible page changes immediately.

      Parameters:
      showContent - whether to show content when collapsed
      Since:
      1.4
    • setSidebar

      public void setSidebar(@Nullable NavigationPage sidebar)
      Sets the sidebar widget for self.
      Parameters:
      sidebar - the sidebar widget
      Since:
      1.4
    • setSidebarPosition

      public void setSidebarPosition(PackType position)

      Sets the sidebar position for self.

      If set to Gtk.PackType.start, the sidebar is displayed before the content, and the sidebar will be the root page when collapsed.

      If set to Gtk.PackType.end, the sidebar is displayed after the content, and the content will be the root page.

      Parameters:
      position - the new position
      Since:
      1.7
    • setSidebarWidthFraction

      public void setSidebarWidthFraction(double fraction)

      Sets the preferred sidebar width as a fraction of the total width of self.

      The preferred width is additionally limited by NavigationSplitView:min-sidebar-width and NavigationSplitView:max-sidebar-width.

      The sidebar widget can be allocated with larger width if its own minimum width exceeds the preferred width.

      Parameters:
      fraction - the preferred width fraction
      Since:
      1.4
    • setSidebarWidthUnit

      public void setSidebarWidthUnit(LengthUnit unit)

      Sets the length unit for minimum and maximum sidebar widths.

      See NavigationSplitView:min-sidebar-width and NavigationSplitView:max-sidebar-width.

      Parameters:
      unit - the length unit
      Since:
      1.4
    • builder

      public static NavigationSplitView.Builder<? extends NavigationSplitView.Builder> builder()
      A NavigationSplitView.Builder object constructs a NavigationSplitView with the specified properties. Use the various set...() methods to set properties, and finish construction with NavigationSplitView.Builder.build().
      Returns:
      the builder object