]> git.sesse.net Git - kdenlive/commitdiff
- Make sure clip is not selected invisible when track is locked (1)
authorTill Theato <root@ttill.de>
Sat, 22 May 2010 20:20:28 +0000 (20:20 +0000)
committerTill Theato <root@ttill.de>
Sat, 22 May 2010 20:20:28 +0000 (20:20 +0000)
- Make sure selected clip is properly unselected when locking track
- Abort render perparations if selected directory could not be created (render dialog)
(1): http://kdenlive.org/mantis/view.php?id=1316

svn path=/trunk/kdenlive/; revision=4473

src/customtrackscene.h
src/customtrackview.cpp
src/customtrackview.h
src/renderwidget.cpp

index d0f37060acbe8d4ccfeb9ad5ed6d320c26430821..ac402618d82379ab523c3da133de8ed8e6b6ea43 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
+/**
+ * @class CustomTrackScene
+ * @author Jean-Baptiste Mardelle
+ * @brief Holds all scene properties that need to be used by clip items.
+ */
 
 #ifndef CUSTOMTRACKSCENE_H
 #define CUSTOMTRACKSCENE_H
@@ -30,8 +35,6 @@
 class KdenliveDoc;
 class MltVideoProfile;
 
-/** This class holds all scene properties that need to be used by clip items */
-
 enum EDITMODE { NORMALEDIT = 0 , OVERWRITEEDIT = 1 , INSERTEDIT = 2 };
 
 class CustomTrackScene : public QGraphicsScene
index 30a681c6202bfcc6bb7d1d64b9de44ab8db3270f..3ce7d0d8d9614be773a53ac31c991f634d05a49a 100644 (file)
@@ -832,9 +832,12 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event)
     while (!m_dragGuide && ct < collisionList.count()) {
         if (collisionList.at(ct)->type() == AVWIDGET || collisionList.at(ct)->type() == TRANSITIONWIDGET) {
             collisionClip = static_cast <AbstractClipItem *>(collisionList.at(ct));
-            if (collisionClip == m_dragItem) {
+            if (collisionClip->isItemLocked())
+                break;
+            if (collisionClip == m_dragItem)
                 collisionClip = NULL;
-            } else m_dragItem = collisionClip;
+            else
+                m_dragItem = collisionClip;
             found = true;
             m_dragItemInfo = m_dragItem->info();
             if (m_dragItem->parentItem() && m_dragItem->parentItem()->type() == GROUPWIDGET && m_dragItem->parentItem() != m_selectionGroup) {
@@ -2640,6 +2643,7 @@ void CustomTrackView::lockTrack(int ix, bool lock)
     int tracknumber = m_document->tracksCount() - ix - 1;
     m_document->switchTrackLock(tracknumber, lock);
     emit doTrackLock(ix, lock);
+    AbstractClipItem *clip = NULL;
     QList<QGraphicsItem *> selection = m_scene->items(0, ix * m_tracksHeight + m_tracksHeight / 2, sceneRect().width(), m_tracksHeight / 2 - 2);
 
     for (int i = 0; i < selection.count(); i++) {
@@ -2648,7 +2652,10 @@ void CustomTrackView::lockTrack(int ix, bool lock)
             if (selection.at(i)->type() == AVWIDGET) emit clipItemSelected(NULL);
             else emit transitionItemSelected(NULL);
         }
-        static_cast <AbstractClipItem *>(selection.at(i))->setItemLocked(lock);
+        clip = static_cast <AbstractClipItem *>(selection.at(i));
+        clip->setItemLocked(lock);
+        if (clip == m_dragItem)
+            m_dragItem = NULL;
     }
     kDebug() << "NEXT TRK STATE: " << m_document->trackInfoAt(tracknumber).isLocked;
     viewport()->update();
index 85668d02cd5d8ffb3bc1830673656da996a0ef35..a68ec85e4f242bc7ed88929f82f98d84f599878d 100644 (file)
@@ -114,6 +114,11 @@ public:
     void autoTransition();
     QStringList getLadspaParams(QDomElement effect) const;
     void initCursorPos(int pos);
+    /** @brief Locks or unlocks a track.
+    * @param ix number of track
+    * @param lock whether to lock or unlock
+    *
+    * Makes sure no clip on track to lock is selected. */
     void lockTrack(int ix, bool lock);
     void groupClips(bool group = true);
     void doGroupClips(QList <ItemInfo> clipInfos, QList <ItemInfo> transitionInfos, bool group);
index e1a835b1338f4b382f352afa50cf249857b6e9fe..0c5e1db96a36b648d8a549798d695ea3cfaabdf3 100644 (file)
@@ -665,7 +665,10 @@ void RenderWidget::slotPrepareExport(bool scriptExport)
     if (m_view.create_chapter->isChecked()) chapterFile = m_view.out_file->url().path() + ".dvdchapter";
 
     // mantisbt 1051
-    KStandardDirs::makeDir(m_view.out_file->url().directory());
+    if (!KStandardDirs::makeDir(m_view.out_file->url().directory())) {
+        KMessageBox::sorry(this, i18n("The directory %1, could not be created.\nPlease make sure you have the required permissions.", m_view.out_file->url().directory()));
+        return;
+    }
 
     emit prepareRenderingData(scriptExport, m_view.render_zone->isChecked(), chapterFile);
 }