signals:
void windowAdded(QVariant window);
void windowDestroyed(QVariant window);
+ void windowResized(QVariant window);
public slots:
void destroyWindow(QVariant window) {
WaylandSurface *surface = qobject_cast<WaylandSurface *>(sender());
surface->setGeometry(rect);
- if (!m_windowMap.contains(surface)) {
+ if (m_windowMap.contains(surface)) {
+ WaylandSurfaceItem *item = m_windowMap.value(surface);
+ item->setWidth(rect.width());
+ item->setHeight(rect.height());
+ emit windowResized(QVariant::fromValue(static_cast<QSGItem *>(item)));
+ } else {
WaylandSurfaceItem *item = new WaylandSurfaceItem(surface, rootObject());
connect(surface, SIGNAL(destroyed(QObject *)), this, SLOT(surfaceDestroyed(QObject *)));
emit windowAdded(QVariant::fromValue(static_cast<QSGItem *>(item)));
QObject::connect(&compositor, SIGNAL(windowAdded(QVariant)), compositor.rootObject(), SLOT(windowAdded(QVariant)));
QObject::connect(&compositor, SIGNAL(windowDestroyed(QVariant)), compositor.rootObject(), SLOT(windowDestroyed(QVariant)));
+ QObject::connect(&compositor, SIGNAL(windowResized(QVariant)), compositor.rootObject(), SLOT(windowResized(QVariant)));
return app.exec();
windowContainer.chrome = windowChrome;
}
+ function windowResized(window) {
+ var windowContainer = window.parent;
+ windowContainer.width = window.width;
+ windowContainer.height = window.height;
+
+ CompositorLogic.relayout();
+ }
+
function windowDestroyed(window) {
var windowContainer = window.parent;
windowContainer.runDestroyAnimation();