stupid clients think it's relevant to withdraw other states
when going fullscreen, this means we trigger an
nmaximization animation and when that's done, the
window is fullscreen...
Unfortunately one of the stupid clients is QWidget and also
the window could get other, *legit*, resizes during the
animation, so we cancel it on occasion
BUG: 336467
FIXED-IN: 5.5
REVIEW: 125989
a) close to pointless
b) the target resolution texture is invalid if the resize effect is enabled (as the window was not actually resized)
REVIEW: 123901
geometryChanged is always executed before maximizeChanged, so we
store the last changed geometry (through regular resize - the current
geometry) and the second last one (used exclusively so far) which is
the old geometry we want to use if the geometry change was caused
by the maximize change
CCBUG: 335023
Forward port of 3c8506992d3a05daa3f0752cc0f5e844acf2a8e2 from kde-workspace
Cross fading with previous pixmap is achieved by referencing the old
window pixmap. WindowPaintData has a cross-fade-factor which interpolates
between 0.0 (completely old pixmap) to 1.0 (completely new pixmap).
If a cross fading factor is set and a previous pixmap is valid this one
is rendered on top of the current pixmap with opacity adjusted. This
results in a smoother fading.
To simplify the setup the AnimationEffect is extended and also takes care
about correctly (un)referencing the previous window pixmap. The maximize
effect is adjusted to make use of this new capabilities.
Unfortunately this setup has a huge problem with the case that the window
decoration gets smaller (e.g. from normal to maximized state). In this
situation it can happen that the old window is rendered with parts outside
the content resulting in video garbage being shown. To prevent this a set
of new WindowQuads is generated with normalized texture coordinates in
the safe area which contains real content.
For OpenGL2Window a PreviousContentLeaf is added which is only set up in
case the crass fading factor is set.
REVIEW: 110578