Client: Fix incorrect damage region for window decorations
The previous implementation had gaps in several places. [ChangeLog][QPA plugin] Fixed a bug where the window decoration's damaged area didn't cover the entire decoration. This meant some compositors would not redraw those areas. Change-Id: Ic72663dde301936635b2a1cfa90570a53227e8ea Fixes: QTBUG-74341 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
This commit is contained in:
parent
f07397208c
commit
11e0fc58b6
@ -100,14 +100,19 @@ void QWaylandAbstractDecoration::setWaylandWindow(QWaylandWindow *window)
|
|||||||
d->m_wayland_window = window;
|
d->m_wayland_window = window;
|
||||||
}
|
}
|
||||||
|
|
||||||
// \a size is without margins
|
// Creates regions like this on the outside of a rectangle with inner size \a size
|
||||||
|
// -----
|
||||||
|
// | |
|
||||||
|
// -----
|
||||||
|
// I.e. the top and bottom extends into the corners
|
||||||
static QRegion marginsRegion(const QSize &size, const QMargins &margins)
|
static QRegion marginsRegion(const QSize &size, const QMargins &margins)
|
||||||
{
|
{
|
||||||
QRegion r;
|
QRegion r;
|
||||||
r += QRect(0, 0, size.width(), margins.top()); // top
|
const int widthWithMargins = margins.left() + size.width() + margins.right();
|
||||||
r += QRect(0, size.height()+margins.top(), size.width(), margins.bottom()); //bottom
|
r += QRect(0, 0, widthWithMargins, margins.top()); // top
|
||||||
r += QRect(0, 0, margins.left(), size.height()); //left
|
r += QRect(0, size.height()+margins.top(), widthWithMargins, margins.bottom()); //bottom
|
||||||
r += QRect(size.width()+margins.left(), 0, margins.right(), size.height()); // right
|
r += QRect(0, margins.top(), margins.left(), size.height()); //left
|
||||||
|
r += QRect(size.width()+margins.left(), margins.top(), margins.right(), size.height()); // right
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user