Klasse OverlaySplitView

Alle implementierten Schnittstellen:
PointerInterface

public class OverlaySplitView extends Widget
A widget presenting sidebar and content side by side or as an overlay.

<picture>
<source srcset="overlay-split-view-dark.png" media="(prefers-color-scheme: dark)">
<img src="overlay-split-view.png" alt="overlay-split-view">
</picture>
<picture>
<source srcset="overlay-split-view-collapsed-dark.png" media="(prefers-color-scheme: dark)">
<img src="overlay-split-view-collapsed.png" alt="overlay-split-view-collapsed">
</picture>

`AdwOverlaySplitView` has two children: sidebar and content, and displays
them side by side.

When [property@OverlaySplitView:collapsed] is set to `TRUE`, the sidebar is
instead shown as an overlay above the content widget.

The sidebar can be hidden or shown using the
[property@OverlaySplitView:show-sidebar] property.

Sidebar can be displayed before or after the content, this can be controlled
with the [property@OverlaySplitView:sidebar-position] property.

Collapsing the split view automatically hides the sidebar widget, and
uncollapsing it shows the sidebar. If this behavior is not desired, the
[property@OverlaySplitView:pin-sidebar] property can be used to override it.

`AdwOverlaySplitView` supports an edge swipe gesture for showing the sidebar,
and a swipe from the sidebar for hiding it. Gestures are only supported on
touchscreen, but not touchpad. Gestures can be controlled with the
[property@OverlaySplitView:enable-show-gesture] and
[property@OverlaySplitView:enable-hide-gesture] properties.

See also [class@NavigationSplitView].

`AdwOverlaySplitView` is typically used together with an [class@Breakpoint]
setting the `collapsed` property to `TRUE` on small widths, as follows:

```xml
<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="AdwOverlaySplitView" id="split_view">
<property name="sidebar">
<!-- ... -->
</property>
<property name="content">
<!-- ... -->
</property>
</object>
</property>
</object>
```

`AdwOverlaySplitView` is often used for implementing the
[utility pane](https://developer.gnome.org/hig/patterns/containers/utility-panes.html)
pattern.

## Sizing

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

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

The sidebar also has minimum and maximum sizes, controlled with the
[property@OverlaySplitView:min-sidebar-width] and
[property@OverlaySplitView:max-sidebar-width] properties.

The minimum and maximum sizes are using the length unit specified with the
[property@OverlaySplitView: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.

When collapsed, the preferred width fraction is ignored and the sidebar uses
[property@OverlaySplitView:max-sidebar-width] when possible.

## Header Bar Integration

When used inside `AdwOverlaySplitView`, [class@HeaderBar] will automatically
hide the window buttons in the middle.

## `AdwOverlaySplitView` as `GtkBuildable`

The `AdwOverlaySplitView` implementation of the [iface@Gtk.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

`AdwOverlaySplitView` has a single CSS node with the name
`overlay-split-view`.

It contains two nodes with the name `widget`, containing the sidebar and
content children.

When not collapsed, they have the `.sidebar-view` and `.content-view` style
classes respectively.

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

When collapsed, the one containing the sidebar child has the `.background`
style class and the other one has no style classes.

```
overlay-split-view
├── widget.background
│ ╰── [sidebar child]
╰── widget
╰── [content child]
```

## Accessibility

`AdwOverlaySplitView` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.

https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html

  • Konstruktordetails

    • OverlaySplitView

      public OverlaySplitView(PointerContainer pointer)
    • OverlaySplitView

      public OverlaySplitView()
      Creates a new `AdwOverlaySplitView`.
  • Methodendetails

    • getClassHandler

      public static ClassHandler getClassHandler()
    • getCollapsed

      public boolean getCollapsed()
      Gets whether @self is collapsed.
      Gibt zurück:
      whether @self is collapsed
    • getContent

      public Widget getContent()
      Gets the content widget for @self.
      Gibt zurück:
      the content widget for @self
    • getEnableHideGesture

      public boolean getEnableHideGesture()
      Gets whether @self can be closed with a swipe gesture.
      Gibt zurück:
      `TRUE` if @self can be closed with a swipe gesture
    • getEnableShowGesture

      public boolean getEnableShowGesture()
      Gets whether @self can be opened with an edge swipe gesture.
      Gibt zurück:
      `TRUE` if @self can be opened with a swipe gesture
    • getMaxSidebarWidth

      public double getMaxSidebarWidth()
      Gets the maximum sidebar width for @self.
      Gibt zurück:
      the maximum width
    • getMinSidebarWidth

      public double getMinSidebarWidth()
      Gets the minimum sidebar width for @self.
      Gibt zurück:
      the minimum width
    • getPinSidebar

      public boolean getPinSidebar()
      Gets whether the sidebar widget is pinned for @self.
      Gibt zurück:
      whether if the sidebar widget is pinned
    • getShowSidebar

      public boolean getShowSidebar()
      Gets whether the sidebar widget is shown for @self.
      Gibt zurück:
      `TRUE` if the sidebar widget is shown
    • getSidebar

      public Widget getSidebar()
      Gets the sidebar widget for @self.
      Gibt zurück:
      the sidebar widget for @self
    • getSidebarPosition

      public int getSidebarPosition()
      Gets the sidebar position for @self.
      Gibt zurück:
      the sidebar position for @self
    • getSidebarWidthFraction

      public double getSidebarWidthFraction()
      Gets the preferred sidebar width fraction for @self.
      Gibt zurück:
      the preferred width fraction
    • getSidebarWidthUnit

      public int getSidebarWidthUnit()
      Gets the length unit for minimum and maximum sidebar widths.
      Gibt zurück:
      the length unit
    • setCollapsed

      public void setCollapsed(boolean collapsed)
      Sets whether @self view is collapsed.

      When collapsed, the sidebar widget is presented as an overlay above the
      content widget, otherwise they are displayed side by side.
      Parameter:
      collapsed - whether @self is collapsed
    • setContent

      public void setContent(@Nullable Widget content)
      Sets the content widget for @self.
      Parameter:
      content - the content widget
    • setEnableHideGesture

      public void setEnableHideGesture(boolean enable_hide_gesture)
      Sets whether @self can be closed with a swipe gesture.

      Only touchscreen swipes are supported.
      Parameter:
      enable_hide_gesture - whether @self can be closed with a swipe gesture
    • setEnableShowGesture

      public void setEnableShowGesture(boolean enable_show_gesture)
      Sets whether @self can be opened with an edge swipe gesture.

      Only touchscreen swipes are supported.
      Parameter:
      enable_show_gesture - whether @self can be opened with a swipe gesture
    • setMaxSidebarWidth

      public void setMaxSidebarWidth(double width)
      Sets the maximum sidebar width for @self.

      Maximum width is affected by [property@OverlaySplitView:sidebar-width-unit].

      The sidebar widget can still be allocated with larger width if its own
      minimum width exceeds it.
      Parameter:
      width - the maximum width
    • setMinSidebarWidth

      public void setMinSidebarWidth(double width)
      Sets the minimum sidebar width for @self.

      Minimum width is affected by [property@OverlaySplitView:sidebar-width-unit].

      The sidebar widget can still be allocated with larger width if its own
      minimum width exceeds it.
      Parameter:
      width - the minimum width
    • setPinSidebar

      public void setPinSidebar(boolean pin_sidebar)
      Sets whether the sidebar widget is pinned for @self.

      By default, collapsing @self automatically hides the sidebar widget, and
      uncollapsing it shows the sidebar. If set to `TRUE`, sidebar visibility never
      changes on its own.
      Parameter:
      pin_sidebar - whether to pin the sidebar widget
    • setShowSidebar

      public void setShowSidebar(boolean show_sidebar)
      Sets whether the sidebar widget is shown for @self.
      Parameter:
      show_sidebar - whether to show the sidebar widget
    • setSidebar

      public void setSidebar(@Nullable Widget sidebar)
      Sets the sidebar widget for @self.
      Parameter:
      sidebar - the sidebar widget
    • setSidebarPosition

      public void setSidebarPosition(int position)
      Sets the sidebar position for @self.

      If it's set to `GTK_PACK_START`, the sidebar is displayed before the content,
      if `GTK_PACK_END`, it's displayed after the content.
      Parameter:
      position - the new position
    • 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
      [property@OverlaySplitView:min-sidebar-width] and
      [property@OverlaySplitView:max-sidebar-width].

      The sidebar widget can be allocated with larger width if its own minimum
      width exceeds the preferred width.
      Parameter:
      fraction - the preferred width fraction
    • setSidebarWidthUnit

      public void setSidebarWidthUnit(int unit)
      Sets the length unit for minimum and maximum sidebar widths.

      See [property@OverlaySplitView:min-sidebar-width] and
      [property@OverlaySplitView:max-sidebar-width].
      Parameter:
      unit - the length unit
    • asSwipeable

      public Swipeable asSwipeable()
      Implements interface Swipeable. Call this to get access to interface functions.
      Gibt zurück:
      Swipeable
    • asAccessible

      public Accessible asAccessible()
      Implements interface Accessible. Call this to get access to interface functions.
      Setzt außer Kraft:
      asAccessible in Klasse Widget
      Gibt zurück:
      Accessible
    • asBuildable

      public Buildable asBuildable()
      Implements interface Buildable. Call this to get access to interface functions.
      Setzt außer Kraft:
      asBuildable in Klasse Widget
      Gibt zurück:
      Buildable
    • asConstraintTarget

      public ConstraintTarget asConstraintTarget()
      Implements interface ConstraintTarget. Call this to get access to interface functions.
      Setzt außer Kraft:
      asConstraintTarget in Klasse Widget
      Gibt zurück:
      ConstraintTarget
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()