void windowAdded(QVariant window);
void windowDestroyed(QVariant window);
+public slots:
+ void destroyWindow(QVariant window) {
+ qvariant_cast<QObject *>(window)->deleteLater();
+ }
+
private slots:
void surfaceMapped(const QRect &rect) {
WaylandSurface *surface = qobject_cast<WaylandSurface *>(sender());
void surfaceDestroyed(QObject *object) {
WindowItem *item = m_windowMap.take(object);
emit windowDestroyed(QVariant::fromValue(static_cast<QSGItem *>(item)));
- item->deleteLater();
setInputFocus(0);
}
y: 0;
opacity: 0
- property variant chrome: null;
property variant child: null;
+ property variant chrome: null;
property bool animationsEnabled: false;
property int index;
NumberAnimation { easing.type: Easing.Linear; duration: 200; }
}
}
+
+ transform: Scale { id: scaleTransform; origin.x: container.width / 2; origin.y: container.height / 2; xScale: 1; yScale: 1 }
+
+ SequentialAnimation {
+ id: destroyAnimation
+ NumberAnimation { target: scaleTransform; property: "yScale"; easing.type: Easing.Linear; to: 0.01; duration: 200; }
+ NumberAnimation { target: scaleTransform; property: "xScale"; easing.type: Easing.Linear; to: 0.01; duration: 150; }
+ NumberAnimation { target: container; property: "opacity"; easing.type: Easing.Linear; to: 0.0; duration: 150; }
+ ScriptAction { script: container.parent.removeWindow(child); }
+ }
+
+ function runDestroyAnimation() {
+ destroyAnimation.start();
+ }
}
}
function windowDestroyed(window) {
- CompositorLogic.removeWindow(window.parent);
var windowContainer = window.parent;
+ windowContainer.runDestroyAnimation();
+ }
+
+ function removeWindow(window) {
+ var windowContainer = window.parent;
+ CompositorLogic.removeWindow(windowContainer);
windowContainer.chrome.destroy();
windowContainer.destroy();
+ compositor.destroyWindow(window);
}
}