Class NavigationSplitView
- All Implemented Interfaces:
Proxy
,Accessible
,Buildable
,ConstraintTarget
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="width-request">280</property>
<property name="height-request">200</property>
<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 setsNavigationSplitView:show-content
toTRUE
.
navigation.pop
doesn't take any parameters and setsNavigationSplitView:show-content
toFALSE
.
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_ACCESSIBLE_ROLE_GROUP
role.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Inner class implementing a builder pattern to construct a GObject with properties.static class
Nested classes/interfaces inherited from class org.gnome.gtk.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.WidgetClass, Widget.WidgetImpl
Nested classes/interfaces inherited from class org.gnome.gobject.InitiallyUnowned
InitiallyUnowned.InitiallyUnownedClass
Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
Nested classes/interfaces inherited from interface org.gnome.gtk.Accessible
Accessible.AccessibleImpl, Accessible.AccessibleInterface
Nested classes/interfaces inherited from interface org.gnome.gtk.Buildable
Buildable.BuildableIface, Buildable.BuildableImpl
Nested classes/interfaces inherited from interface org.gnome.gtk.ConstraintTarget
ConstraintTarget.ConstraintTargetImpl, ConstraintTarget.ConstraintTargetInterface
-
Constructor Summary
ConstructorDescriptionCreates a newAdwNavigationSplitView
.NavigationSplitView
(MemorySegment address) Create a NavigationSplitView proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected NavigationSplitView
asParent()
Returns this instance as if it were its parent type.static NavigationSplitView.Builder
<? extends NavigationSplitView.Builder> builder()
ANavigationSplitView.Builder
object constructs aNavigationSplitView
with the specified properties.boolean
Gets whether this NavigationSplitView is collapsed.Sets the content widget for this NavigationSplitView.double
Gets the maximum sidebar width for this NavigationSplitView.double
Gets the minimum sidebar width for this NavigationSplitView.boolean
Gets which page is visible when this NavigationSplitView is collapsed.Gets the sidebar widget for this NavigationSplitView.double
Gets the preferred sidebar width fraction for this NavigationSplitView.Gets the length unit for minimum and maximum sidebar widths.static Type
getType()
Get the GType of the NavigationSplitView classvoid
setCollapsed
(boolean collapsed) Sets whether this NavigationSplitView is collapsed.void
setContent
(@Nullable NavigationPage content) Sets the content widget for this NavigationSplitView.void
setMaxSidebarWidth
(double width) Sets the maximum sidebar width for this NavigationSplitView.void
setMinSidebarWidth
(double width) Sets the minimum sidebar width for this NavigationSplitView.void
setShowContent
(boolean showContent) Sets which page is visible when this NavigationSplitView is collapsed.void
setSidebar
(@Nullable NavigationPage sidebar) Sets the sidebar widget for this NavigationSplitView.void
setSidebarWidthFraction
(double fraction) Sets the preferred sidebar width as a fraction of the total width of this NavigationSplitView.void
Sets the length unit for minimum and maximum sidebar widths.Methods inherited from class org.gnome.gtk.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, getMapped, getMarginBottom, getMarginEnd, getMarginStart, getMarginTop, getMemoryLayout, 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, 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, unsetStateFlags
Methods inherited from class org.gnome.gobject.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, 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, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.gnome.gtk.Accessible
announce, getAccessibleParent, getAccessibleRole, getAtContext, getBounds, getFirstAccessibleChild, getNextAccessibleSibling, getPlatformState, resetProperty, resetRelation, resetState, setAccessibleParent, updateNextAccessibleSibling, updateProperty, updateRelation, updateState
Methods inherited from interface org.gnome.gtk.Buildable
getBuildableId
-
Constructor Details
-
NavigationSplitView
Create a NavigationSplitView proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
NavigationSplitView
public NavigationSplitView()Creates a newAdwNavigationSplitView
.
-
-
Method Details
-
getType
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type. -
getCollapsed
public boolean getCollapsed()Gets whether this NavigationSplitView is collapsed.- Returns:
- whether this NavigationSplitView is collapsed
-
getContent
Sets the content widget for this NavigationSplitView.- Returns:
- the content widget
-
getMaxSidebarWidth
public double getMaxSidebarWidth()Gets the maximum sidebar width for this NavigationSplitView.- Returns:
- the maximum width
-
getMinSidebarWidth
public double getMinSidebarWidth()Gets the minimum sidebar width for this NavigationSplitView.- Returns:
- the minimum width
-
getShowContent
public boolean getShowContent()Gets which page is visible when this NavigationSplitView is collapsed.- Returns:
- whether to show content when collapsed
-
getSidebar
Gets the sidebar widget for this NavigationSplitView.- Returns:
- the sidebar widget
-
getSidebarWidthFraction
public double getSidebarWidthFraction()Gets the preferred sidebar width fraction for this NavigationSplitView.- Returns:
- the preferred width fraction
-
getSidebarWidthUnit
Gets the length unit for minimum and maximum sidebar widths.- Returns:
- the length unit
-
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
-
setMaxSidebarWidth
public void setMaxSidebarWidth(double width) Sets the maximum sidebar width for this NavigationSplitView.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
-
setMinSidebarWidth
public void setMinSidebarWidth(double width) Sets the minimum sidebar width for this NavigationSplitView.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
-
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:collapsed
isTRUE
; 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
-
setSidebarWidthFraction
public void setSidebarWidthFraction(double fraction) Sets the preferred sidebar width as a fraction of the total width of this NavigationSplitView.The preferred width is additionally limited by
NavigationSplitView:min-sidebar-width
andNavigationSplitView: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
-
setSidebarWidthUnit
Sets the length unit for minimum and maximum sidebar widths.See
NavigationSplitView:min-sidebar-width
andNavigationSplitView:max-sidebar-width
.- Parameters:
unit
- the length unit
-
builder
ANavigationSplitView.Builder
object constructs aNavigationSplitView
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withNavigationSplitView.Builder.build()
.
-