From c7b4c141f7ebb5d5a5932ea4ec3d0506c41082fd Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Tue, 30 Oct 2012 15:43:01 +0100 Subject: [PATCH] Fix possible crash in geom widget --- src/geometrywidget.cpp | 20 ++++++++++++++++---- src/onmonitoritems/onmonitorrectitem.cpp | 4 ++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/geometrywidget.cpp b/src/geometrywidget.cpp index 27c0f8eb..304a1094 100644 --- a/src/geometrywidget.cpp +++ b/src/geometrywidget.cpp @@ -353,8 +353,8 @@ void GeometryWidget::setupParam(const QDomElement elem, int minframe, int maxfra m_geomPath = new OnMonitorPathItem(m_monitor->render->dar()); connect(m_geomPath, SIGNAL(changed()), this, SLOT(slotUpdatePath())); m_geomPath->setPen(QPen(Qt::red)); - m_scene->addItem(m_geomPath); m_geomPath->setPoints(m_geometry); + m_scene->addItem(m_geomPath); m_scene->centerView(); slotPositionChanged(0, false); } @@ -523,7 +523,11 @@ void GeometryWidget::slotDeleteKeyframe(int pos) } m_timeline->update(); - if (m_geomPath) m_geomPath->setPoints(m_geometry); + if (m_geomPath) { + m_scene->removeItem(m_geomPath); + m_geomPath->setPoints(m_geometry); + m_scene->addItem(m_geomPath); + } slotPositionChanged(pos, false); emit parameterChanged(); } @@ -608,7 +612,11 @@ void GeometryWidget::slotUpdateGeometry() geom->insert(item2); } } - if (m_geomPath) m_geomPath->setPoints(m_geometry); + if (m_geomPath) { + m_scene->removeItem(m_geomPath); + m_geomPath->setPoints(m_geometry); + m_scene->addItem(m_geomPath); + } emit parameterChanged(); } @@ -861,7 +869,11 @@ void GeometryWidget::importKeyframes(const QString &data, int maximum) m_geometry->insert(item); } m_timeline->setKeyGeometry(m_geometry, m_outPoint - m_inPoint); - if (m_geomPath) m_geomPath->setPoints(m_geometry); + if (m_geomPath) { + m_scene->removeItem(m_geomPath); + m_geomPath->setPoints(m_geometry); + m_scene->addItem(m_geomPath); + } slotPositionChanged(-1, false); emit parameterChanged(); } diff --git a/src/onmonitoritems/onmonitorrectitem.cpp b/src/onmonitoritems/onmonitorrectitem.cpp index 37f918f3..20152e6f 100644 --- a/src/onmonitoritems/onmonitorrectitem.cpp +++ b/src/onmonitoritems/onmonitorrectitem.cpp @@ -56,8 +56,8 @@ rectActions OnMonitorRectItem::getMode(QPointF pos) right.lineTo(pol.at(2)); QPainterPath mouseArea; - qreal xsize = 10; - qreal ysize = 10; + qreal xsize = 12; + qreal ysize = 12; if (getView()) { xsize /= m_view->matrix().m11(); ysize /= m_view->matrix().m22(); -- 2.39.2