]> git.sesse.net Git - kdenlive/commitdiff
Fix crash with copied clips
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 7 Oct 2008 10:36:17 +0000 (10:36 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Tue, 7 Oct 2008 10:36:17 +0000 (10:36 +0000)
svn path=/branches/KDE4/; revision=2437

src/abstractclipitem.cpp
src/abstractgroupitem.cpp
src/clipitem.cpp
src/customtrackscene.cpp
src/customtrackscene.h
src/customtrackview.cpp

index c0d8bb802b79eb0cc46aab2f653439ab50b9b810..b1b7d6613dd782ffba530a8e51dbad3f904cbd68 100644 (file)
@@ -349,5 +349,6 @@ QRect AbstractClipItem::visibleRect() {
 }
 
 CustomTrackScene* AbstractClipItem::projectScene() {
-    return static_cast <CustomTrackScene*>(scene());
+    if (scene()) return static_cast <CustomTrackScene*>(scene());
+    return NULL;
 }
index 41d05583f01cd96a9d43989161e5f8a4288af24a..268bb930654776b8ab3abd17f03b507e4d1eac99 100644 (file)
@@ -40,7 +40,8 @@ int AbstractGroupItem::type() const {
 }
 
 CustomTrackScene* AbstractGroupItem::projectScene() {
-    return static_cast <CustomTrackScene*>(scene());
+    if (scene()) return static_cast <CustomTrackScene*>(scene());
+    return NULL;
 }
 
 
index 30eb0eb6127bdf498cfc10e6885241dbfb51853a..d3d4712eee31f58e5fa339c99e29aac7f1d54455 100644 (file)
@@ -41,7 +41,7 @@
 
 
 ClipItem::ClipItem(DocClipBase *clip, ItemInfo info, double fps)
-        : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_startThumbRequested(false), m_endThumbRequested(false), m_startFade(0), m_endFade(0), m_hover(false), m_selectedEffect(-1), m_speed(1.0), framePixelWidth(0) {
+        : AbstractClipItem(info, QRectF(), fps), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_startThumbRequested(false), m_endThumbRequested(false), m_startFade(0), m_endFade(0), m_hover(false), m_selectedEffect(-1), m_speed(1.0), framePixelWidth(0), m_startPix(QPixmap()), m_endPix(QPixmap()) {
     setRect(0, 0, (info.endPos - info.startPos).frames(fps) - 0.02, (qreal)(KdenliveSettings::trackheight() - 2));
     setPos((qreal) info.startPos.frames(fps), (qreal)(info.track * KdenliveSettings::trackheight()) + 1);
 
@@ -336,6 +336,7 @@ void ClipItem::slotSetEndThumb(QImage img) {
 }
 
 void ClipItem::slotThumbReady(int frame, QPixmap pix) {
+    if (scene() == NULL) return;
     QRectF r = sceneBoundingRect();
     double width = m_startPix.width() / projectScene()->scale();
     if (m_startThumbRequested && frame == m_cropStart.frames(m_fps)) {
index e560320034e6df972f9b110125662739f4698d95..e98793993d7d3731301870c37bf8a284f672ba61 100644 (file)
@@ -72,11 +72,11 @@ void CustomTrackScene::setScale(double scale) {
     m_scale = scale;
 }
 
-double CustomTrackScene::scale() {
+double CustomTrackScene::scale() const {
     return m_scale;
 }
 
-int CustomTrackScene::tracksCount() {
+int CustomTrackScene::tracksCount() const {
     return m_tracksList.count();
 }
 
index 9f037b83500e4814694aae6fea59062fe3547219..d8a3f4f7a7eda6f9a4146ef6a5d0a265c8ba43d0 100644 (file)
@@ -43,9 +43,9 @@ public:
     GenTime nextSnapPoint(GenTime pos);
     double getSnapPointForPos(double pos, bool doSnap = true);
     void setScale(double scale);
-    double scale();
+    double scale() const;
     QList <TrackInfo> m_tracksList;
-    int tracksCount();
+    int tracksCount() const;
     QPixmap m_transitionPixmap;
 
 private:
index c6725d3ee0feb8d0e3779fc783533307cdb64ff9..a2dbe4acd1212351e798efbc9f6abdbdfcf8198c 100644 (file)
@@ -72,7 +72,7 @@
 // const int duration = animate ? 1500 : 1;
 
 CustomTrackView::CustomTrackView(KdenliveDoc *doc, CustomTrackScene* projectscene, QWidget *parent)
-        : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0) {
+        : QGraphicsView(projectscene, parent), m_scene(projectscene), m_cursorPos(0), m_dropItem(NULL), m_cursorLine(NULL), m_operationMode(NONE), m_dragItem(NULL), m_visualTip(NULL), m_moveOpMode(NONE), m_animation(NULL), m_projectDuration(0), m_clickPoint(QPoint()), m_document(doc), m_autoScroll(KdenliveSettings::autoscroll()), m_tracksHeight(KdenliveSettings::trackheight()), m_tool(SELECTTOOL), m_dragGuide(NULL), m_findIndex(0), m_menuPosition(QPoint()), m_blockRefresh(false), m_selectionGroup(NULL), m_selectedTrack(0), m_copiedItems(QList<AbstractClipItem *> ()), m_selectedClipList(QList<AbstractClipItem *> ()) {
     if (doc) m_commandStack = doc->commandStack();
     else m_commandStack == NULL;
     setMouseTracking(true);
@@ -1469,6 +1469,10 @@ void CustomTrackView::cutSelectedClips() {
 
 void CustomTrackView::addClip(QDomElement xml, const QString &clipId, ItemInfo info, EffectsList effects) {
     DocClipBase *baseclip = m_document->clipManager()->getClipById(clipId);
+    if (baseclip == NULL) {
+        emit displayMessage(i18n("No clip copied"), ErrorMessage);
+        return;
+    }
     ClipItem *item = new ClipItem(baseclip, info, m_document->fps());
     item->setEffectList(effects);
     scene()->addItem(item);