diff --git a/src/track.cpp b/src/track.cpp index 3dd7b602..ad2aac6f 100644 --- a/src/track.cpp +++ b/src/track.cpp @@ -339,3 +339,26 @@ void Track::drawBackground(QPainter *painter, const QRectF &rect) painter->drawPixmap(tp, t.pixmap()); } } + +void Track::resizeEvent(QResizeEvent *e) +{ + if (_tracks.isEmpty()) + return; + + QRectF br = trackBoundingRect(); + QRectF ba = br.adjusted(-TILE_SIZE, -TILE_SIZE, TILE_SIZE, TILE_SIZE); + + if (ba.width() < e->size().width()) { + qreal diff = e->size().width() - ba.width(); + ba.adjust(-diff/2, 0, diff/2, 0); + } + if (ba.height() < e->size().height()) { + qreal diff = e->size().height() - ba.height(); + ba.adjust(0, -diff/2, 0, diff/2); + } + + _scene->setSceneRect(ba); + + centerOn(br.center()); + resetCachedContent(); +} diff --git a/src/track.h b/src/track.h index 0e91c0a2..c30acd67 100644 --- a/src/track.h +++ b/src/track.h @@ -51,6 +51,7 @@ private: void wheelEvent(QWheelEvent *event); void drawBackground(QPainter *painter, const QRectF &rect); + void resizeEvent(QResizeEvent *e); QGraphicsScene *_scene; QList > _tracks;