- setMatrix(matrix);
- m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), m_tracksHeight * m_document->tracksCount() * verticalScale);
+ bool adjust = false;
+ if (verticalScale != matrix().m22()) adjust = true;
+ setMatrix(newmatrix);
+ if (adjust) {
+ double newHeight = m_tracksHeight * m_document->tracksCount() * matrix().m22();
+ m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), newHeight);
+ for (int i = 0; i < m_guides.count(); i++) {
+ QLineF l = m_guides.at(i)->line();
+ l.setP2(QPointF(l.x2(), newHeight));
+ m_guides.at(i)->setLine(l);
+ }
+ setSceneRect(0, 0, sceneRect().width(), m_tracksHeight * m_document->tracksCount());
+ }
+