]> git.sesse.net Git - kdenlive/blobdiff - src/mainwindow.cpp
Fix crash when opening invalid file from command line: http://kdenlive.org/mantis...
[kdenlive] / src / mainwindow.cpp
index 24d3f1a3fdc2c7fa61ed4ae3221ff3c040aaf53b..3ff94d36b0ea53e738910ea7fdc2a3aac89ea5a9 100644 (file)
@@ -2111,13 +2111,23 @@ void MainWindow::openFile(const KUrl &url)
         // Opening a compressed project file, we need to process it
         kDebug()<<"Opening archive, processing";
         QPointer<ArchiveWidget> ar = new ArchiveWidget(url);
-        if (ar->exec() == QDialog::Accepted) openFile(KUrl(ar->extractedProjectFile()));
+        if (ar->exec() == QDialog::Accepted) {
+           openFile(KUrl(ar->extractedProjectFile()));
+       }
+       else if (!m_startUrl.isEmpty()) {
+           // we tried to open an invalid file from command line, init new project
+           newFile(false);
+       }
         delete ar;
         return;
     }
     if (!url.fileName().endsWith(".kdenlive")) {
         // This is not a Kdenlive project file, abort loading
         KMessageBox::sorry(this, i18n("File %1 is not a Kdenlive project file", url.path()));
+       if (!m_startUrl.isEmpty()) {
+           // we tried to open an invalid file from command line, init new project
+           newFile(false);
+       }
         return;
     }
 
@@ -3362,6 +3372,16 @@ void MainWindow::slotShowClipProperties(DocClipBase *clip)
         //m_activeDocument->editTextClip(clip->getProperty("xml"), clip->getId());
         return;
     }
+    
+    // Check if we already have a properties dialog opened for that clip
+    QList <ClipProperties *> list = findChildren<ClipProperties *>();
+    for (int i = 0; i < list.size(); ++i) {
+        if (list.at(i)->clipId() == clip->getId()) {
+           // We have one dialog, show it
+           list.at(i)->raise();
+           return;
+       }
+    }
 
     // any type of clip but a title
     ClipProperties *dia = new ClipProperties(clip, m_activeDocument->timecode(), m_activeDocument->fps(), this);