]> git.sesse.net Git - kdenlive/commitdiff
Fix track labels not correctly updated on track size change
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 18 Jun 2009 22:58:42 +0000 (22:58 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 18 Jun 2009 22:58:42 +0000 (22:58 +0000)
svn path=/trunk/kdenlive/; revision=3585

src/customtrackview.cpp
src/headertrack.cpp
src/headertrack.h
src/trackview.cpp
src/trackview.h

index 23b3bac0ea569d3126940d7dde5730434bf811fe..c35ecbabb491ae58217fb5253c28812de3b4cfca 100644 (file)
@@ -1868,7 +1868,7 @@ void CustomTrackView::addTrack(TrackInfo type, int ix)
     }
     m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), maxHeight);
     setSceneRect(0, 0, sceneRect().width(), maxHeight);
-    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged(false)));
+    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged()));
     viewport()->update();
     //setFixedHeight(50 * m_tracksCount);
 }
@@ -1933,7 +1933,7 @@ void CustomTrackView::removeTrack(int ix)
     }
     m_cursorLine->setLine(m_cursorLine->line().x1(), 0, m_cursorLine->line().x1(), maxHeight);
     setSceneRect(0, 0, sceneRect().width(), maxHeight);
-    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged(false)));
+    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged()));
     viewport()->update();
 }
 
@@ -1942,7 +1942,7 @@ void CustomTrackView::changeTrack(int ix, TrackInfo type)
     int tracknumber = m_document->tracksCount() - ix;
     m_document->setTrackType(tracknumber - 1, type);
     m_document->renderer()->mltChangeTrackState(tracknumber, m_document->trackInfoAt(tracknumber - 1).isMute, m_document->trackInfoAt(tracknumber - 1).isBlind);
-    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged(false)));
+    QTimer::singleShot(300, this, SIGNAL(trackHeightChanged()));
     viewport()->update();
 }
 
index c158ba04c78ab7edc39db2e640ae9d7d60fecde7..3cb935ddcae331749c90995d87837b4cf4d81c7c 100644 (file)
@@ -89,6 +89,16 @@ HeaderTrack::~HeaderTrack()
 {
 }
 
+void HeaderTrack::adjustSize(int height)
+{
+    // Don't show track buttons if size is too small
+    bool smallTracks = height < 40;
+    if (m_type == VIDEOTRACK) m_view.buttonVideo->setHidden(smallTracks);
+    m_view.buttonAudio->setHidden(smallTracks);
+    m_view.buttonLock->setHidden(smallTracks);
+    setFixedHeight(height);
+}
+
 void HeaderTrack::switchVideo()
 {
     if (m_view.buttonVideo->isChecked()) {
index 70bcd8a7c3e58ac2f186e7b033e6fb94d4602601..8ff6f2c7049352430865e228d6dae1f942228040 100644 (file)
@@ -34,6 +34,7 @@ public:
     HeaderTrack(int index, TrackInfo info, int height, QWidget *parent = 0);
     ~HeaderTrack();
     void setLock(bool lock);
+    void adjustSize(int height);
 
 private:
     int m_index;
index de7dffaa1358e765705113985ddd4b4af80ae924..e5acd82dfb5788b85969c82ecdd461b7fc17cab8 100644 (file)
@@ -429,10 +429,10 @@ void TrackView::refresh()
 
 void TrackView::slotRebuildTrackHeaders()
 {
-    // If the slot was triggered by a change in default track size, reset vertical zoom
     QList <TrackInfo> list = m_doc->tracksList();
     QLayoutItem *child;
     while ((child = m_headersLayout->takeAt(0)) != 0) {
+        if (child->widget()) delete child->widget();
         delete child;
     }
     int max = list.count();
@@ -448,10 +448,19 @@ void TrackView::slotRebuildTrackHeaders()
         connect(header, SIGNAL(changeTrack(int)), this, SIGNAL(changeTrack(int)));
         m_headersLayout->addWidget(header);
     }
-    //m_view.headers_container->adjustSize();
 }
 
 
+void TrackView::adjustTrackHeaders()
+{
+    int height = KdenliveSettings::trackheight() * m_scene->scale().y();
+    QLayoutItem *child;
+    for (int i = 0; i < m_headersLayout->count(); i++) {
+        child = m_headersLayout->itemAt(i);
+        if (child->widget())(static_cast <HeaderTrack *>(child->widget()))->adjustSize(height);
+    }
+}
+
 int TrackView::slotAddProjectTrack(int ix, QDomElement xml, bool locked)
 {
     // parse track
@@ -767,7 +776,7 @@ void TrackView::slotVerticalZoomDown()
     m_verticalZoom--;
     if (m_verticalZoom == 0) m_trackview->setScale(m_scene->scale().x(), 0.5);
     else m_trackview->setScale(m_scene->scale().x(), 1);
-    slotRebuildTrackHeaders();
+    adjustTrackHeaders();
     /*KdenliveSettings::setTrackheight(KdenliveSettings::trackheight() / 2);
     m_trackview->checkTrackHeight(false);*/
 }
@@ -780,7 +789,7 @@ void TrackView::slotVerticalZoomUp()
     m_trackview->checkTrackHeight(false);*/
     if (m_verticalZoom == 2) m_trackview->setScale(m_scene->scale().x(), 2);
     else m_trackview->setScale(m_scene->scale().x(), 1);
-    slotRebuildTrackHeaders();
+    adjustTrackHeaders();
 }
 
 #include "trackview.moc"
index b938d44158ac54cc066a5407564f5d384b8fed44..1ad2944c1e671b171b2ade9f5a8c6414b09c0f26 100644 (file)
@@ -82,6 +82,7 @@ private:
     void parseDocument(QDomDocument doc);
     int slotAddProjectTrack(int ix, QDomElement xml, bool locked);
     DocClipBase *getMissingProducer(const QString id) const;
+    void adjustTrackHeaders();
 
 private slots:
     void setCursorPos(int pos);