The Borders element provides the four properties:
* left
* right
* top
* bottom
And is used directly in Decoration for all the different kind of settings
following this pattern:
* normal borders
* maximized borders
* padding
* extended borders
These properties replace the existing used borderLeft & co. This makes
the code in the C++ side easier as the various border elements can now be
read with a shared implementation.
The Borders provide some convenient methods to set the sizes of the
borders. E.g. it's possible to just set the side borders to a specific
value. This should simplify the implementation of the no-side-borders
feature in new decoration.
The aurorae qml and plastik are adjusted to use the new way. Existing
3rd party decorations would break, but there's a good reason why there's
no documentation for QML based decorations ;-)
REVIEW: 108436
BorderNoSides is what is known from Oxygen as "No Side Borders". The name
should indicate that there is only a border at the bottom. BorderNone is
a mode with no borders at all.
The new enums are added to KDecoration and the KCM so that all decos can
make use of it.
Aurorae is adjusted to support the new sizes for QML themes (it breaks
the old svg based themes) and Plastik makes use of it, by rendering a
one-pixel border around the window, which illustrates that it's still up
to the decoration to decide how to make use of the setting.
REVIEW: 108164
Aurorae Themes can make use of the extended borders feature to allow
resizing outside the window decoration area. So far only Plastik makes
use of it in the Tiny border case.
This should be extended in future by adding generic NoSideBorders and
NoBorders sizes as used by Oxygen.
FEATURE: 308992
FIXED-IN: 4.11
REVIEW: 107936
A decoration can provide the AbilityAnnounceAlphaChannel in addition to
AbilityUsesAlphaChannel. If this ability is provided the decoration can
enable/disable the use of the alpha channel through setAlphaEnabled().
The base idea behind this mechanism is to be able to tell the compositor
that currently alpha is not needed. An example is the maximized state in
which the decoration is fully opaque so that there is no need to use the
translucency code path which would render all windows behind the deco.
In addition also the blur effect honors this setting so that behind a
known opaque decoration no blurring is performed.
Oxygen is adjusted to disable translucency in maximized state and Aurorae
is adjusted to allow themes to enable/disable translucency. For Plastik
translucency and with that also blurring is disabled.
REVIEW: 106810
Disable animations till the decoration is completel loaded. This
ensures that the buttons do not flicker because of the animation from
black to their respective color.
A component has the advantage that the width property can depend from
other properties. This does not work with the previous on the fly
construction as the width does not update when the referenced property
changes.
In the maximized state the enabled borders were still enabled causing
the actual borders to be still shown. In addition the padding is not
adjusted to be 0. This is done in the C++ part is it does not make any
sense to have shadows being thrown to another screen for a maximized
window.
REVIEW: 106576
BUG: 307365
FIXED-IN: 4.9.2