forked from quickshell/quickshell
		
	core/window: fix attached property prior to backer creation
This commit is contained in:
		
							parent
							
								
									e48af44607
								
							
						
					
					
						commit
						6367b56f55
					
				
					 2 changed files with 11 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -26,6 +26,7 @@ ProxyWindowBase::ProxyWindowBase(QObject* parent)
 | 
			
		|||
    , mContentItem(new QQuickItem()) {
 | 
			
		||||
	QQmlEngine::setObjectOwnership(this->mContentItem, QQmlEngine::CppOwnership);
 | 
			
		||||
	this->mContentItem->setParent(this);
 | 
			
		||||
	this->mContentItem->setProperty("__qs_proxywindow", QVariant::fromValue(this));
 | 
			
		||||
 | 
			
		||||
	// clang-format off
 | 
			
		||||
	QObject::connect(this, &ProxyWindowBase::widthChanged, this, &ProxyWindowBase::onWidthChanged);
 | 
			
		||||
| 
						 | 
				
			
			@ -124,8 +125,6 @@ void ProxyWindowBase::connectWindow() {
 | 
			
		|||
		generation->registerIncubationController(this->window->incubationController());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this->window->setProperty("__qs_proxywindow", QVariant::fromValue(this));
 | 
			
		||||
 | 
			
		||||
	// clang-format off
 | 
			
		||||
	QObject::connect(this->window, &QWindow::visibilityChanged, this, &ProxyWindowBase::visibleChanged);
 | 
			
		||||
	QObject::connect(this->window, &QWindow::xChanged, this, &ProxyWindowBase::xChanged);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,11 +7,16 @@
 | 
			
		|||
#include "proxywindow.hpp"
 | 
			
		||||
 | 
			
		||||
QsWindowAttached* WindowInterface::qmlAttachedProperties(QObject* object) {
 | 
			
		||||
	auto* item = qobject_cast<QQuickItem*>(object);
 | 
			
		||||
	if (!item) return nullptr;
 | 
			
		||||
	auto* window = item->window();
 | 
			
		||||
	if (!window) return nullptr;
 | 
			
		||||
	auto* proxy = window->property("__qs_proxywindow").value<ProxyWindowBase*>();
 | 
			
		||||
	auto* visualRoot = qobject_cast<QQuickItem*>(object);
 | 
			
		||||
 | 
			
		||||
	ProxyWindowBase* proxy = nullptr;
 | 
			
		||||
	while (visualRoot != nullptr) {
 | 
			
		||||
		proxy = visualRoot->property("__qs_proxywindow").value<ProxyWindowBase*>();
 | 
			
		||||
 | 
			
		||||
		if (proxy) break;
 | 
			
		||||
		visualRoot = visualRoot->parentItem();
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	if (!proxy) return nullptr;
 | 
			
		||||
 | 
			
		||||
	auto v = proxy->property("__qs_window_attached");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue