]> git.sesse.net Git - kdenlive/commitdiff
Fix monitor scene never resetting scrollbars (scene rect always growing)
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 9 Apr 2012 14:53:50 +0000 (16:53 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 9 Apr 2012 14:53:50 +0000 (16:53 +0200)
src/cornerswidget.cpp
src/geometrywidget.cpp
src/monitorscene.cpp
src/monitorscene.h
src/rotoscoping/rotowidget.cpp

index 6582c5b0e80168b72f6af06626e3a68c64a1392e..6905de5b5782ca7e8346de5dba5dd83013cce958 100644 (file)
@@ -45,6 +45,7 @@ CornersWidget::CornersWidget(Monitor *monitor, QDomElement e, int minFrame, int
     MonitorEditWidget *edit = monitor->getEffectEdit();
     edit->showVisibilityButton(true);
     m_scene = edit->getScene();
+    m_scene->cleanup();
 
     m_item = new OnMonitorCornersItem();
     m_scene->addItem(m_item);
@@ -62,6 +63,7 @@ CornersWidget::CornersWidget(Monitor *monitor, QDomElement e, int minFrame, int
     connect(m_scene, SIGNAL(addKeyframe()), this, SLOT(slotInsertKeyframe()));
 
     connect(keyframe_list, SIGNAL(cellChanged(int, int)), this, SLOT(slotUpdateItem()));
+    m_scene->centerView();
 }
 
 CornersWidget::~CornersWidget()
index 66bc4e983191cb9ef08cf991f6fec3f9ecdc4192..1aac90f45ed9a1edec569bb6e869c3be87c48273 100644 (file)
@@ -294,6 +294,7 @@ void GeometryWidget::setupParam(const QDomElement elem, int minframe, int maxfra
 {
     m_inPoint = minframe;
     m_outPoint = maxframe;
+    m_scene->cleanup();
 
     if (m_geometry)
         m_geometry->parse(elem.attribute("value").toUtf8().data(), maxframe - minframe, m_monitor->render->frameRenderWidth(), m_monitor->render->renderHeight());
@@ -325,7 +326,7 @@ void GeometryWidget::setupParam(const QDomElement elem, int minframe, int maxfra
     m_rect->setZValue(0);
     m_scene->addItem(m_rect);
     connect(m_rect, SIGNAL(changed()), this, SLOT(slotUpdateGeometry()));
-
+    m_scene->centerView();
     slotPositionChanged(0, false);
     slotCheckMonitorPosition(m_monitor->render->seekFramePosition());
 }
index 8970d82a5a28345c4c23f4e1800ebb56e299df3e..297c94eede84fd827dd2eb578f25c4ac3f0a38d4 100644 (file)
@@ -65,6 +65,17 @@ MonitorScene::MonitorScene(Render *renderer, QObject* parent) :
     connect(m_renderer, SIGNAL(frameUpdated(QImage)), this, SLOT(slotSetBackgroundImage(QImage)));
 }
 
+void MonitorScene::centerView()
+{
+    if (m_view) m_view->centerOn(m_frameBorder);
+}
+
+void MonitorScene::cleanup()
+{
+    // Reset scene rect
+    setSceneRect(QRectF());
+}
+
 void MonitorScene::setUp()
 {
     if (views().count() > 0) {
index 36477dffa59f48628f7210ea34af8a1c0c377136..d850e5807c1a905418f4279bccfa4450996e6a8c 100644 (file)
@@ -42,6 +42,12 @@ public:
 
     /** @brief Makes the background frame fit again after the profile changed (and therefore the resolution might have changed). */
     void resetProfile();
+    
+    /** @brief Reset scene size. */
+    void cleanup();
+    
+    /** @brief Center view on frame border. */
+    void centerView();
 
 protected:
     virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);
index fa4304cb4b2d1991f21a3295d3e6d66b8eea6f2e..fb3721e46ead16278b6b34b379d6dde04e38045e 100644 (file)
@@ -59,6 +59,7 @@ RotoWidget::RotoWidget(QString data, Monitor *monitor, ItemInfo info, Timecode t
     MonitorEditWidget *edit = monitor->getEffectEdit();
     edit->showVisibilityButton(true);
     m_scene = edit->getScene();
+    m_scene->cleanup();
 
     m_item = new SplineItem(QList <BPoint>(), NULL, m_scene);
 
@@ -73,6 +74,7 @@ RotoWidget::RotoWidget(QString data, Monitor *monitor, ItemInfo info, Timecode t
 
     setSpline(data, false);
     setupTrackingListen(info);
+    m_scene->centerView();
 }
 
 RotoWidget::~RotoWidget()