When applying a layout we raise all floating views to prevent them from being
covered up by the tiles. There is currently a missing check for hidden views
which should not get raised.
Xwayland views need to know their layout coordinates communicated to them via a
configure. Detaching an output changes the layout coordinate system and we
therefore need to re-configure all Xwayland views once the layout has changed.
Not doing this can lead to Xwayland views being placed outside the viewport
since they assume the wrong layout coordinates.
Evacuating forced views needs to take into account that forced visible views are
not linked to the workspace related lists. With hidden visible views it is the
other way around. This needs to be handled when evacuating views in the case of
an output getting destroyed. Hidden forced views need to be removed from lists
and added correctly and vice versa.
We now assert being in normal mode when calling `hikari_workspace_focus_view`.
This should prevent `hikari` from exiting protected modes (e.g. lock mode) when
something forces a focus change.
With recent changes view migration became more of an operation of its own. This
led to evacuation breaking. To fix this evacuation is no longer a special case
of view pinning but rather a separate operation.
Merging output configurations with each other leads to all `background` pointers
referencing the same string which leads to multiple free operations on cleanup.
Sheet pinning could also function as view migration. This is now removed since
it leads to two possible code paths for migration. We now decide at the call
site if we are doing a migration or a different operation (e.g. pinning,
moving).
Vertically and horizontally maximized views should be resizable along their
unmaximized axis. This resizing should also propagate to the original view
geometry.
Shutting down `hikari` now sends a `quit` action to each active view. And waits
for all of them to quit before exiting. Sending a quit again during shutdown
will terminate `hikari` right away.
Currently we are assuming that the usable area covers the entire screen which is
only correct when there are no layers present. Once a layer with an exclusive
area has been added this changes.
Prevents from generating header files that are not used for a specific build as
well as excluding unnecessary object files. The `clean` target automatically
assumes all features being enabled to clean up all potential files.
`inherit` can be used to configure child view properties, strings are used to
indicate copied properties and objects can be used to overwrite them. Not
stating a property indicates that the default value should be used.
This lays the foundation for separate view properties for child views. Currently
`hikari` treats all views with the same app id the same. This can lead to
unwanted behavior for e.g. dialogs.
This patch adds layout registers `0` to `9` which correspond to default layout.
These are currently only useful when restacking a sheet that does not have a
layout applied. If this is the case the default layout will be used to arrange
the current sheet.
Indicator bars now store their current color. This fixes issues where bars get
updated and need to figure out which mode `hikari` is in so they can color
themselves correctly. This way the bar just "knows" the right color.
wlroots 0.11.0 added an assertion to check if `surface` is NULL. We now check
this in `input-grab-mode` before informing the seat about new pointer
information.