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) {
 | 
				
			||||||
	if (this->window == nullptr) {
 | 
					 | 
				
			||||||
	this->mColor = color;
 | 
						this->mColor = color;
 | 
				
			||||||
		emit this->colorChanged();
 | 
					
 | 
				
			||||||
	} else this->window->setColor(color);
 | 
						if (this->window == nullptr) {
 | 
				
			||||||
 | 
							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; }
 | 
					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