From: Jean-Baptiste Mardelle Date: Mon, 9 Apr 2012 14:53:50 +0000 (+0200) Subject: Fix monitor scene never resetting scrollbars (scene rect always growing) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=0a6cd519062a6a3176eff2ececc3d2d7db8bc775;p=kdenlive Fix monitor scene never resetting scrollbars (scene rect always growing) --- diff --git a/src/cornerswidget.cpp b/src/cornerswidget.cpp index 6582c5b0..6905de5b 100644 --- a/src/cornerswidget.cpp +++ b/src/cornerswidget.cpp @@ -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() diff --git a/src/geometrywidget.cpp b/src/geometrywidget.cpp index 66bc4e98..1aac90f4 100644 --- a/src/geometrywidget.cpp +++ b/src/geometrywidget.cpp @@ -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()); } diff --git a/src/monitorscene.cpp b/src/monitorscene.cpp index 8970d82a..297c94ee 100644 --- a/src/monitorscene.cpp +++ b/src/monitorscene.cpp @@ -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) { diff --git a/src/monitorscene.h b/src/monitorscene.h index 36477dff..d850e580 100644 --- a/src/monitorscene.h +++ b/src/monitorscene.h @@ -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); diff --git a/src/rotoscoping/rotowidget.cpp b/src/rotoscoping/rotowidget.cpp index fa4304cb..fb3721e4 100644 --- a/src/rotoscoping/rotowidget.cpp +++ b/src/rotoscoping/rotowidget.cpp @@ -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 (), 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()