core/window: premultiply background colors
Apparently these are supposed to be premultiplied. Some docs would be nice.
This commit is contained in:
parent
2c485e415d
commit
19d74595d6
|
@ -287,16 +287,23 @@ QuickshellScreenInfo* ProxyWindowBase::screen() const {
|
|||
return QuickshellTracked::instance()->screenInfo(qscreen);
|
||||
}
|
||||
|
||||
QColor ProxyWindowBase::color() const {
|
||||
if (this->window == nullptr) return this->mColor;
|
||||
else return this->window->color();
|
||||
}
|
||||
QColor ProxyWindowBase::color() const { return this->mColor; }
|
||||
|
||||
void ProxyWindowBase::setColor(QColor color) {
|
||||
this->mColor = color;
|
||||
|
||||
if (this->window == nullptr) {
|
||||
this->mColor = color;
|
||||
emit this->colorChanged();
|
||||
} else this->window->setColor(color);
|
||||
if (color != this->mColor) emit this->colorChanged();
|
||||
} else {
|
||||
auto premultiplied = QColor::fromRgbF(
|
||||
color.redF() * color.alphaF(),
|
||||
color.greenF() * color.alphaF(),
|
||||
color.blueF() * color.alphaF(),
|
||||
color.alphaF()
|
||||
);
|
||||
|
||||
this->window->setColor(premultiplied);
|
||||
}
|
||||
}
|
||||
|
||||
PendingRegion* ProxyWindowBase::mask() const { return this->mMask; }
|
||||
|
|
|
@ -46,20 +46,6 @@ class WindowInterface: public Reloadable {
|
|||
/// along with map[To|From]Item (which is not reactive).
|
||||
Q_PROPERTY(QObject* windowTransform READ windowTransform NOTIFY windowTransformChanged);
|
||||
/// The background color of the window. Defaults to white.
|
||||
///
|
||||
/// > [!WARNING] This seems to behave weirdly when using transparent colors on some systems.
|
||||
/// > Using a colored content item over a transparent window is the recommended way to work around this:
|
||||
/// > ```qml
|
||||
/// > ProxyWindow {
|
||||
/// > color: "transparent"
|
||||
/// > Rectangle {
|
||||
/// > anchors.fill: parent
|
||||
/// > color: "#20ffffff"
|
||||
/// >
|
||||
/// > // your content here
|
||||
/// > }
|
||||
/// > }
|
||||
/// > ```
|
||||
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged);
|
||||
/// The clickthrough mask. Defaults to null.
|
||||
///
|
||||
|
|
Loading…
Reference in a new issue