]> git.sesse.net Git - kdenlive/blobdiff - src/mainwindow.cpp
Introduce video thumbnail for each frame when zooming at max level (causes slowdown...
[kdenlive] / src / mainwindow.cpp
index 5d50afb2a3bdc6d1ff9c959e54389c7aa045db9f..e9a896760c55ab966d5b53ee2cf17cada2e0922a 100644 (file)
@@ -663,7 +663,6 @@ void MainWindow::slotUpdateClip(const QString &id)
 
 void MainWindow::slotConnectMonitors()
 {
-
     m_projectList->setRenderer(m_projectMonitor->render);
     //connect(m_projectList, SIGNAL(receivedClipDuration(const QString &)), this, SLOT(slotUpdateClip(const QString &)));
     connect(m_projectList, SIGNAL(deleteProjectClips(QStringList, QMap<QString, QString>)), this, SLOT(slotDeleteProjectClips(QStringList, QMap<QString, QString>)));
@@ -844,7 +843,7 @@ void MainWindow::setupActions()
     actionWidget->setStyleSheet(styleBorderless);
 
     connect(m_zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(slotSetZoom(int)));
-    connect(m_zoomSlider, SIGNAL(sliderMoved(int)), this, SLOT(slotShowZoomSliderToolTip(int))); 
+    connect(m_zoomSlider, SIGNAL(sliderMoved(int)), this, SLOT(slotShowZoomSliderToolTip(int)));
     connect(m_buttonFitZoom, SIGNAL(triggered()), this, SLOT(slotFitZoom()));
     connect(m_zoomIn, SIGNAL(triggered(bool)), this, SLOT(slotZoomIn()));
     connect(m_zoomOut, SIGNAL(triggered(bool)), this, SLOT(slotZoomOut()));
@@ -2230,17 +2229,19 @@ void MainWindow::slotDeleteItem()
             && QApplication::focusWidget()->parentWidget()->parentWidget() == m_projectListDock) {
         m_projectList->slotRemoveClip();
 
-    } else if (QApplication::focusWidget()
-               && QApplication::focusWidget()->parentWidget()
-               && QApplication::focusWidget()->parentWidget()->parentWidget()
-               && QApplication::focusWidget()->parentWidget()->parentWidget()->parentWidget()
-               && QApplication::focusWidget()->parentWidget()->parentWidget()->parentWidget()->parentWidget()
-               && QApplication::focusWidget()->parentWidget()->parentWidget()->parentWidget()->parentWidget() == m_effectStackDock) {
-        // TODO: also delete effect when an effect widget (slider, geomtryval, ...) has focus
-        m_effectStack->slotItemDel();
+    } else {
+        QWidget *widget = QApplication::focusWidget();
+        while (widget) {
+            if (widget == m_effectStackDock) {
+                m_effectStack->slotItemDel();
+                return;
+            }
+            widget = widget->parentWidget();
+        }
 
-    } else if (m_activeTimeline) {
-        m_activeTimeline->projectView()->deleteSelectedClips();
+        // effect stack has no focus
+        if (m_activeTimeline)
+            m_activeTimeline->projectView()->deleteSelectedClips();
     }
 }
 
@@ -2576,7 +2577,7 @@ void MainWindow::slotSetZoom(int value)
 
     m_zoomOut->setEnabled(value < m_zoomSlider->maximum());
     m_zoomIn->setEnabled(value > m_zoomSlider->minimum());
-    slotUpdateZoomSliderToolTip(value); 
+    slotUpdateZoomSliderToolTip(value);
 
     m_zoomSlider->blockSignals(true);
     m_zoomSlider->setValue(value);
@@ -2591,12 +2592,12 @@ void MainWindow::slotShowZoomSliderToolTip(int zoomlevel)
     QPoint global = m_zoomSlider->rect().topLeft();
     global.ry() += m_zoomSlider->height() / 2;
     QHelpEvent toolTipEvent(QEvent::ToolTip, QPoint(0, 0), m_zoomSlider->mapToGlobal(global));
-    QApplication::sendEvent(m_zoomSlider, &toolTipEvent); 
+    QApplication::sendEvent(m_zoomSlider, &toolTipEvent);
 }
 
 void MainWindow::slotUpdateZoomSliderToolTip(int zoomlevel)
 {
-    m_zoomSlider->setToolTip(i18n("Zoom Level: %1/13", zoomlevel));
+    m_zoomSlider->setToolTip(i18n("Zoom Level: %1/13", (13 - zoomlevel)));
 }
 
 void MainWindow::slotGotProgressInfo(const QString &message, int progress)
@@ -3446,12 +3447,16 @@ void MainWindow::slotInsertZoneToTimeline()
 
 void MainWindow::slotDeleteProjectClips(QStringList ids, QMap<QString, QString> folderids)
 {
-    for (int i = 0; i < ids.size(); ++i) {
-        m_activeTimeline->slotDeleteClip(ids.at(i));
+    if (m_activeDocument && m_activeTimeline) {
+        if (!ids.isEmpty()) {
+            for (int i = 0; i < ids.size(); ++i) {
+                m_activeTimeline->slotDeleteClip(ids.at(i));
+            }
+            m_activeDocument->clipManager()->slotDeleteClips(ids);
+        }
+        if (!folderids.isEmpty()) m_projectList->deleteProjectFolder(folderids);
+        m_activeDocument->setModified(true);
     }
-    m_activeDocument->clipManager()->slotDeleteClips(ids);
-    if (!folderids.isEmpty()) m_projectList->deleteProjectFolder(folderids);
-
 }
 
 void MainWindow::slotShowTitleBars(bool show)