forked from quickshell/quickshell
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
2 changed files with 14 additions and 21 deletions
|
@ -287,16 +287,23 @@ QuickshellScreenInfo* ProxyWindowBase::screen() const {
|
||||||
return QuickshellTracked::instance()->screenInfo(qscreen);
|
return QuickshellTracked::instance()->screenInfo(qscreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor ProxyWindowBase::color() const {
|
QColor ProxyWindowBase::color() const { return this->mColor; }
|
||||||
if (this->window == nullptr) return this->mColor;
|
|
||||||
else return this->window->color();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ProxyWindowBase::setColor(QColor color) {
|
void ProxyWindowBase::setColor(QColor color) {
|
||||||
|
this->mColor = color;
|
||||||
|
|
||||||
if (this->window == nullptr) {
|
if (this->window == nullptr) {
|
||||||
this->mColor = color;
|
if (color != this->mColor) emit this->colorChanged();
|
||||||
emit this->colorChanged();
|
} else {
|
||||||
} else this->window->setColor(color);
|
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; }
|
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).
|
/// along with map[To|From]Item (which is not reactive).
|
||||||
Q_PROPERTY(QObject* windowTransform READ windowTransform NOTIFY windowTransformChanged);
|
Q_PROPERTY(QObject* windowTransform READ windowTransform NOTIFY windowTransformChanged);
|
||||||
/// The background color of the window. Defaults to white.
|
/// 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);
|
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged);
|
||||||
/// The clickthrough mask. Defaults to null.
|
/// The clickthrough mask. Defaults to null.
|
||||||
///
|
///
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue