]> git.sesse.net Git - kdenlive/blobdiff - src/monitor.cpp
Fix manually turning off the monitor scene causes the button to do so to be hidden...
[kdenlive] / src / monitor.cpp
index 4384a4d202224ecc363186c387912a7a3a408a8a..aebf23cda1c4453c168b0c5c932be05c213878c9 100644 (file)
@@ -187,6 +187,7 @@ Monitor::Monitor(Kdenlive::MONITORID id, MonitorManager *manager, QString profil
 
     if (id == Kdenlive::projectMonitor) {
         m_effectWidget = new MonitorEditWidget(render, videoBox);
+       connect(m_effectWidget, SIGNAL(showEdit(bool, bool)), this, SLOT(slotShowEffectScene(bool, bool)));
         m_toolbar->addAction(m_effectWidget->getVisibilityAction());
         videoBox->layout()->addWidget(m_effectWidget);
         m_effectWidget->hide();
@@ -986,24 +987,46 @@ void Monitor::slotSetSelectedClip(Transition* item)
 }
 
 
-void Monitor::slotEffectScene(bool show)
+void Monitor::slotShowEffectScene(bool show, bool manuallyTriggered)
 {
     if (m_id == Kdenlive::projectMonitor) {
-        if (videoSurface) {
-            videoSurface->setVisible(!show);
-        } else {
+        if (!m_effectWidget->getVisibilityAction()->isChecked())
+            show = false;
+        if (m_effectWidget->isVisible() == show)
+            return;
+        setUpdatesEnabled(false);
+        if (show) {
+            if (videoSurface) {
+                videoSurface->setVisible(false);
+                // Preview is handeled internally through the Render::showFrame method
+                render->disablePreview(true);
 #ifdef USE_OPENGL
-            m_glWidget->setVisible(!show);
+            } else {
+                m_glWidget->setVisible(false);
 #endif
-        }
-        m_effectWidget->setVisible(show);
-        m_effectWidget->getVisibilityAction()->setChecked(show);
-        emit requestFrameForAnalysis(show);
-        if (show) {
+            }
+            m_effectWidget->setVisible(true);
             m_effectWidget->getScene()->slotZoomFit();
+            emit requestFrameForAnalysis(true);
+        } else {    
+            m_effectWidget->setVisible(false);
+            emit requestFrameForAnalysis(false);
+            if (videoSurface) {
+                videoSurface->setVisible(true);
+                // Preview is handeled internally through the Render::showFrame method
+                render->disablePreview(false);
+            
+#ifdef USE_OPENGL
+            } else {
+                m_glWidget->setVisible(true);
+#endif
+            }
         }
+        if (!manuallyTriggered)
+            m_effectWidget->showVisibilityButton(show);
+        setUpdatesEnabled(true);
         videoBox->setEnabled(show);
-        render->doRefresh();
+        //render->doRefresh();
     }
 }