Class NavigationSplitView
- All Implemented Interfaces:
Accessible, Buildable, ConstraintTarget, Proxy
A widget presenting sidebar and content side by side or as a navigation view.
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.pushtakes a string parameter specifying the tag of the page to push. If it matches the tag of the content widget, it setsNavigationSplitView:show-contenttoTRUE. -
navigation.popdoesn't take any parameters and setsNavigationSplitView:show-contenttoFALSE.
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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classInner class implementing a builder pattern to construct a GObject with properties.static classNested classes/interfaces inherited from class Widget
Widget.DestroyCallback, Widget.DirectionChangedCallback, Widget.HideCallback, Widget.KeynavFailedCallback, Widget.MapCallback, Widget.MnemonicActivateCallback, Widget.MoveFocusCallback, Widget.QueryTooltipCallback, Widget.RealizeCallback, Widget.ShowCallback, Widget.StateFlagsChangedCallback, Widget.UnmapCallback, Widget.UnrealizeCallback, Widget.Widget$Impl, Widget.WidgetClassNested classes/interfaces inherited from class InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClassNested classes/interfaces inherited from class GObject
GObject.NotifyCallback, GObject.ObjectClassNested classes/interfaces inherited from interface Accessible
Accessible.Accessible$Impl, Accessible.AccessibleInterfaceNested classes/interfaces inherited from interface Buildable
Buildable.Buildable$Impl, Buildable.BuildableIfaceNested classes/interfaces inherited from interface ConstraintTarget
ConstraintTarget.ConstraintTarget$Impl, ConstraintTarget.ConstraintTargetInterface -
Constructor Summary
ConstructorsConstructorDescriptionCreate a new NavigationSplitView.NavigationSplitView(MemorySegment address) Create a NavigationSplitView instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected NavigationSplitViewasParent()Return this instance as if it were its parent type.static NavigationSplitView.Builder<? extends NavigationSplitView.Builder> builder()ANavigationSplitView.Builderobject constructs aNavigationSplitViewwith the specified properties.booleanGets whether this NavigationSplitView is collapsed.@Nullable NavigationPageSets the content widget forself.doubleGets the maximum sidebar width forself.static MemoryLayoutThe memory layout of the native struct.doubleGets the minimum sidebar width forself.booleanGets which page is visible when this NavigationSplitView is collapsed.@Nullable NavigationPageGets the sidebar widget forself.Gets the sidebar position forself.doubleGets the preferred sidebar width fraction forself.Gets the length unit for minimum and maximum sidebar widths.static @Nullable TypegetType()Get the GType of the NavigationSplitView class.voidsetCollapsed(boolean collapsed) Sets whether this NavigationSplitView is collapsed.voidsetContent(@Nullable NavigationPage content) Sets the content widget forself.voidsetMaxSidebarWidth(double width) Sets the maximum sidebar width forself.voidsetMinSidebarWidth(double width) Sets the minimum sidebar width forself.voidsetShowContent(boolean showContent) Sets which page is visible when this NavigationSplitView is collapsed.voidsetSidebar(@Nullable NavigationPage sidebar) Sets the sidebar widget forself.voidsetSidebarPosition(PackType position) Sets the sidebar position forself.voidsetSidebarWidthFraction(double fraction) Sets the preferred sidebar width as a fraction of the total width ofself.voidSets the length unit for minimum and maximum sidebar widths.Methods inherited from class Widget
actionSetEnabled, activateActionIfExists, activateDefault, activateWidget, addController, addCssClass, addMnemonicLabel, addTickCallback, allocate, childFocus, computeBounds, computeExpand, computeExpand, computePoint, computeTransform, contains, createPangoContext, createPangoLayout, cssChanged, directionChanged, disposeTemplate, dragCheckThreshold, emitDestroy, emitDirectionChanged, emitHide, emitKeynavFailed, emitMap, emitMnemonicActivate, emitMoveFocus, emitQueryTooltip, emitRealize, emitShow, emitStateFlagsChanged, emitUnmap, emitUnrealize, errorBell, focus, getAllocatedBaseline, getAllocatedHeight, getAllocatedWidth, getAllocation, getAncestor, getBaseline, getCanFocus, getCanTarget, getChildVisible, getClipboard, getColor, getCssClasses, getCssName, getCursor, getDefaultDirection, getDirection, getDisplay, getFirstChild, getFocusable, getFocusChild, getFocusOnClick, getFontMap, getFontOptions, getFrameClock, getHalign, getHasTooltip, getHeight, getHexpand, getHexpandSet, getLastChild, getLayoutManager, getLimitEvents, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getName, getNative, getNextSibling, getOpacity, getOverflow, getPangoContext, getParent, getPreferredSize, getPrevSibling, getPrimaryClipboard, getRealized, getReceivesDefault, getRequestMode, getRoot, getScaleFactor, getSensitive, getSettings, getSize, getSizeRequest, getStateFlags, getStyleContext, getTemplateChild, getTooltipMarkup, getTooltipText, getValign, getVexpand, getVexpandSet, getVisible, getWidth, grabFocus, hasCssClass, hasDefault, hasFocus, hasVisibleFocus, hide, inDestruction, initTemplate, insertActionGroup, insertAfter, insertBefore, isAncestor, isDrawable, isFocus, isSensitive, isVisible, keynavFailed, listMnemonicLabels, map, measure, mnemonicActivate, moveFocus, observeChildren, observeControllers, onDestroy, onDirectionChanged, onHide, onKeynavFailed, onMap, onMnemonicActivate, onMoveFocus, onQueryTooltip, onRealize, onShow, onStateFlagsChanged, onUnmap, onUnrealize, pick, pick, queryTooltip, queueAllocate, queueDraw, queueResize, realize, removeController, removeCssClass, removeMnemonicLabel, removeTickCallback, root, setCanFocus, setCanTarget, setChildVisible, setCssClasses, setCursor, setCursorFromName, setDefaultDirection, setDirection, setFocusable, setFocusChild, setFocusOnClick, setFontMap, setFontOptions, setHalign, setHasTooltip, setHexpand, setHexpandSet, setLayoutManager, setLimitEvents, setMarginBottom, setMarginEnd, setMarginStart, setMarginTop, setName, setOpacity, setOverflow, setParent, setReceivesDefault, setSensitive, setSizeRequest, setStateFlags, setStateFlags, setTooltipMarkup, setTooltipText, setValign, setVexpand, setVexpandSet, setVisible, shouldLayout, show, sizeAllocate, sizeAllocate, snapshot, snapshotChild, stateFlagsChanged, systemSettingChanged, translateCoordinates, triggerTooltipQuery, unmap, unparent, unrealize, unroot, unsetStateFlags, unsetStateFlagsMethods inherited from class GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newv, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withPropertiesMethods inherited from class TypeInstance
callParent, callParent, cast, getPrivate, readGClass, writeGClassMethods inherited from class ProxyInstance
equals, handle, hashCodeMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface Accessible
announce, getAccessibleId, getAccessibleParent, getAccessibleRole, getAtContext, getBounds, getFirstAccessibleChild, getNextAccessibleSibling, getPlatformState, resetProperty, resetRelation, resetState, setAccessibleParent, updateNextAccessibleSibling, updatePlatformState, updateProperty, updateRelation, updateStateMethods inherited from interface Buildable
getBuildableId
-
Constructor Details
-
NavigationSplitView
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
Get the GType of the NavigationSplitView class.- Returns:
- the GType
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Return this instance as if it were its parent type. Comparable to the Javasuperkeyword, but ensures the parent typeclass is also used in native code. -
getCollapsed
public boolean getCollapsed()Gets whether this NavigationSplitView is collapsed.- Returns:
- whether this NavigationSplitView is collapsed
- Since:
- 1.4
-
getContent
Sets the content widget forself.- Returns:
- the content widget
- Since:
- 1.4
-
getMaxSidebarWidth
public double getMaxSidebarWidth()Gets the maximum sidebar width forself.- Returns:
- the maximum width
- Since:
- 1.4
-
getMinSidebarWidth
public double getMinSidebarWidth()Gets the minimum sidebar width forself.- 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
Gets the sidebar widget forself.- Returns:
- the sidebar widget
- Since:
- 1.4
-
getSidebarPosition
Gets the sidebar position forself.- Returns:
- the sidebar position for this NavigationSplitView
- Since:
- 1.7
-
getSidebarWidthFraction
public double getSidebarWidthFraction()Gets the preferred sidebar width fraction forself.- Returns:
- the preferred width fraction
- Since:
- 1.4
-
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-contentcontrols which child is visible while collapsed.- Parameters:
collapsed- whether this NavigationSplitView is collapsed- 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 whenNavigationSplitView:collapsedisTRUE; 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
-
setSidebarPosition
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-widthandNavigationSplitView: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
Sets the length unit for minimum and maximum sidebar widths.
See
NavigationSplitView:min-sidebar-widthandNavigationSplitView:max-sidebar-width.- Parameters:
unit- the length unit- Since:
- 1.4
-
builder
ANavigationSplitView.Builderobject constructs aNavigationSplitViewwith the specified properties. Use the variousset...()methods to set properties, and finish construction withNavigationSplitView.Builder.build().- Returns:
- the builder object
-