forked from quickshell/quickshell
core/proxywindow: remove blank frame when destroying window
Removes the blank frame caused by removing the content item from the window. Fixes an issue with hyprland's window exit animations.
This commit is contained in:
parent
2c0e46cedb
commit
0dd19d4a18
2 changed files with 9 additions and 7 deletions
|
@ -44,7 +44,7 @@ ProxyWindowBase::ProxyWindowBase(QObject* parent)
|
|||
// clang-format on
|
||||
}
|
||||
|
||||
ProxyWindowBase::~ProxyWindowBase() { this->deleteWindow(); }
|
||||
ProxyWindowBase::~ProxyWindowBase() { this->deleteWindow(true); }
|
||||
|
||||
void ProxyWindowBase::onReload(QObject* oldInstance) {
|
||||
this->window = this->retrieveWindow(oldInstance);
|
||||
|
@ -90,9 +90,9 @@ void ProxyWindowBase::createWindow() {
|
|||
emit this->windowConnected();
|
||||
}
|
||||
|
||||
void ProxyWindowBase::deleteWindow() {
|
||||
void ProxyWindowBase::deleteWindow(bool keepItemOwnership) {
|
||||
if (this->window != nullptr) emit this->windowDestroyed();
|
||||
if (auto* window = this->disownWindow()) {
|
||||
if (auto* window = this->disownWindow(keepItemOwnership)) {
|
||||
if (auto* generation = EngineGeneration::findObjectGeneration(this)) {
|
||||
generation->deregisterIncubationController(window->incubationController());
|
||||
}
|
||||
|
@ -101,12 +101,14 @@ void ProxyWindowBase::deleteWindow() {
|
|||
}
|
||||
}
|
||||
|
||||
QQuickWindow* ProxyWindowBase::disownWindow() {
|
||||
QQuickWindow* ProxyWindowBase::disownWindow(bool keepItemOwnership) {
|
||||
if (this->window == nullptr) return nullptr;
|
||||
|
||||
QObject::disconnect(this->window, nullptr, this, nullptr);
|
||||
|
||||
this->mContentItem->setParentItem(nullptr);
|
||||
if (!keepItemOwnership) {
|
||||
this->mContentItem->setParentItem(nullptr);
|
||||
}
|
||||
|
||||
auto* window = this->window;
|
||||
this->window = nullptr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue