Class HeaderBar

All Implemented Interfaces:
PointerInterface

public class HeaderBar extends Widget
A title bar widget.

<picture>
<source srcset="header-bar-dark.png" media="(prefers-color-scheme: dark)">
<img src="header-bar.png" alt="header-bar">
</picture>

`AdwHeaderBar` is similar to [class@Gtk.HeaderBar], but provides additional
features compared to it. Refer to `GtkHeaderBar` for details.

[property@HeaderBar:centering-policy] allows to enforce strict centering of
the title widget, this is useful for [class@ViewSwitcherTitle].

[property@HeaderBar:show-start-title-buttons] and
[property@HeaderBar:show-end-title-buttons] allow to easily create split
header bar layouts using [class@Leaflet], as follows:

```xml
<object class="AdwLeaflet" id="leaflet">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="AdwHeaderBar">
<binding name="show-end-title-buttons">
<lookup name="folded">leaflet</lookup>
</binding>
</object>
</child>
<!-- ... -->
</object>
</child>
<!-- ... -->
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<property name="hexpand">True</property>
<child>
<object class="AdwHeaderBar">
<binding name="show-start-title-buttons">
<lookup name="folded">leaflet</lookup>
</binding>
</object>
</child>
<!-- ... -->
</object>
</child>
</object>
```

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

## CSS nodes

```
headerbar
╰── windowhandle
╰── box
├── widget
│ ╰── box.start
│ ├── windowcontrols.start
│ ╰── [other children]
├── [Title Widget]
╰── widget
╰── box.end
├── [other children]
╰── windowcontrols.end
```

`AdwHeaderBar`'s CSS node is called `headerbar`. It contains a `windowhandle`
subnode, which contains a `box` subnode, which contains two `widget` subnodes
at the start and end of the header bar, each of which contains a `box`
subnode with the `.start` and `.end` style classes respectively, as well as a
center node that represents the title.

Each of the boxes contains a `windowcontrols` subnode, see
[class@Gtk.WindowControls] for details, as well as other children.

## Accessibility

`AdwHeaderBar` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.

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

  • Constructor Details

    • HeaderBar

      public HeaderBar(PointerContainer pointer)
    • HeaderBar

      public HeaderBar()
      Creates a new `AdwHeaderBar`.
  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • getCenteringPolicy

      public int getCenteringPolicy()
      Gets the policy for aligning the center widget.
      Returns:
      the centering policy
    • getDecorationLayout

      public Str getDecorationLayout()
      Gets the decoration layout for @self.
      Returns:
      the decoration layout
    • getShowEndTitleButtons

      public boolean getShowEndTitleButtons()
      Gets whether to show title buttons at the end of @self.
      Returns:
      `TRUE` if title buttons at the end are shown
    • getShowStartTitleButtons

      public boolean getShowStartTitleButtons()
      Gets whether to show title buttons at the start of @self.
      Returns:
      `TRUE` if title buttons at the start are shown
    • getTitleWidget

      public Widget getTitleWidget()
      Gets the title widget widget of @self.
      Returns:
      the title widget
    • packEnd

      public void packEnd(@Nonnull Widget child)
      Adds @child to @self, packed with reference to the end of @self.
      Parameters:
      child - the widget to be added to @self
    • packStart

      public void packStart(@Nonnull Widget child)
      Adds @child to @self, packed with reference to the start of the @self.
      Parameters:
      child - the widget to be added to @self
    • remove

      public void remove(@Nonnull Widget child)
      Removes a child from @self.

      The child must have been added with [method@HeaderBar.pack_start],
      [method@HeaderBar.pack_end] or [property@HeaderBar:title-widget].
      Parameters:
      child - the child to remove
    • setCenteringPolicy

      public void setCenteringPolicy(int centering_policy)
      Sets the policy for aligning the center widget.
      Parameters:
      centering_policy - the centering policy
    • setDecorationLayout

      public void setDecorationLayout(@Nullable Str layout)
      Sets the decoration layout for @self.

      If this property is not set, the
      [property@Gtk.Settings:gtk-decoration-layout] setting is used.

      The format of the string is button names, separated by commas. A colon
      separates the buttons that should appear at the start from those at the end.
      Recognized button names are minimize, maximize, close and icon (the window
      icon).

      For example, “icon:minimize,maximize,close” specifies an icon at the start,
      and minimize, maximize and close buttons at the end.
      Parameters:
      layout - a decoration layout
    • setDecorationLayout

      public void setDecorationLayout(String layout)
      Sets the decoration layout for @self.

      If this property is not set, the
      [property@Gtk.Settings:gtk-decoration-layout] setting is used.

      The format of the string is button names, separated by commas. A colon
      separates the buttons that should appear at the start from those at the end.
      Recognized button names are minimize, maximize, close and icon (the window
      icon).

      For example, “icon:minimize,maximize,close” specifies an icon at the start,
      and minimize, maximize and close buttons at the end.
      Parameters:
      layout - a decoration layout
    • setShowEndTitleButtons

      public void setShowEndTitleButtons(boolean setting)
      Sets whether to show title buttons at the end of @self.

      See [property@HeaderBar:show-start-title-buttons] for the other side.

      Which buttons are actually shown and where is determined by the
      [property@HeaderBar:decoration-layout] property, and by the state of the
      window (e.g. a close button will not be shown if the window can't be closed).
      Parameters:
      setting - `TRUE` to show standard title buttons
    • setShowStartTitleButtons

      public void setShowStartTitleButtons(boolean setting)
      Sets whether to show title buttons at the start of @self.

      See [property@HeaderBar:show-end-title-buttons] for the other side.

      Which buttons are actually shown and where is determined by the
      [property@HeaderBar:decoration-layout] property, and by the state of the
      window (e.g. a close button will not be shown if the window can't be closed).
      Parameters:
      setting - `TRUE` to show standard title buttons
    • setTitleWidget

      public void setTitleWidget(@Nullable Widget title_widget)
      Sets the title widget for @self.

      When set to `NULL`, the header bar will display the title of the window it
      is contained in.

      To use a different title, use [class@WindowTitle]:

      ```xml
      <object class="AdwHeaderBar">
      <property name="title-widget">
      <object class="AdwWindowTitle">
      <property name="title" translatable="yes">Title</property>
      </object>
      </property>
      </object>
      ```
      Parameters:
      title_widget - a widget to use for a title
    • asAccessible

      public Accessible asAccessible()
      Implements interface Accessible. Call this to get access to interface functions.
      Overrides:
      asAccessible in class Widget
      Returns:
      Accessible
    • asBuildable

      public Buildable asBuildable()
      Implements interface Buildable. Call this to get access to interface functions.
      Overrides:
      asBuildable in class Widget
      Returns:
      Buildable
    • asConstraintTarget

      public ConstraintTarget asConstraintTarget()
      Implements interface ConstraintTarget. Call this to get access to interface functions.
      Overrides:
      asConstraintTarget in class Widget
      Returns:
      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()