From: Jean-Baptiste Mardelle Date: Sat, 12 Feb 2011 21:26:36 +0000 (+0000) Subject: Fix proxy problem with too fast computers (item not in layout when trying to update it) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=281d050daa40b9ac3387580cfdd62c55bd1db980;p=kdenlive Fix proxy problem with too fast computers (item not in layout when trying to update it) svn path=/trunk/kdenlive/; revision=5394 --- diff --git a/src/projectitem.cpp b/src/projectitem.cpp index 9de4b8e8..bf02065b 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -32,33 +32,27 @@ const int ProxyRole = Qt::UserRole + 5; const int itemHeight = 38; ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) : + m_clip(clip), + m_clipId(clip->getId()), QTreeWidgetItem(parent, PROJECTCLIPTYPE) { - setSizeHint(0, QSize(itemHeight * 3, itemHeight)); - if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); - else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled); - m_clip = clip; - m_clipId = clip->getId(); - QString name = m_clip->getProperty("name"); - if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName(); - m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); - if (m_clipType != UNKNOWN) slotSetToolTip(); - setText(0, name); - setText(1, m_clip->description()); - GenTime duration = m_clip->duration(); - if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); - //setFlags(Qt::NoItemFlags); - //kDebug() << "Constructed with clipId: " << m_clipId; + buildItem(); } ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) : + m_clip(clip), + m_clipId(clip->getId()), QTreeWidgetItem(parent, PROJECTCLIPTYPE) + +{ + buildItem(); +} + +void ProjectItem::buildItem() { setSizeHint(0, QSize(itemHeight * 3, itemHeight)); - if (clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); + if (m_clip->isPlaceHolder()) setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled); else setFlags(Qt::ItemIsSelectable | Qt::ItemIsDragEnabled | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled); - m_clip = clip; - m_clipId = clip->getId(); QString name = m_clip->getProperty("name"); if (name.isEmpty()) name = KUrl(m_clip->getProperty("resource")).fileName(); m_clipType = (CLIPTYPE) m_clip->getProperty("type").toInt(); @@ -66,11 +60,8 @@ ProjectItem::ProjectItem(QTreeWidgetItem * parent, DocClipBase *clip) : setText(1, m_clip->description()); GenTime duration = m_clip->duration(); if (duration != GenTime()) setData(0, DurationRole, Timecode::getEasyTimecode(duration, KdenliveSettings::project_fps())); - //setFlags(Qt::NoItemFlags); - //kDebug() << "Constructed with clipId: " << m_clipId; } - ProjectItem::~ProjectItem() { } diff --git a/src/projectitem.h b/src/projectitem.h index 3e50a07d..c4e5b1bc 100644 --- a/src/projectitem.h +++ b/src/projectitem.h @@ -82,6 +82,8 @@ private: QString m_clipId; DocClipBase *m_clip; + void buildItem(); + }; #endif diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 60be5446..f93eb5c9 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -960,11 +960,12 @@ void ProjectList::slotAddClip(DocClipBase *clip, bool getProperties) if (parentitem) item = new ProjectItem(parentitem, clip); } - if (item == NULL) + if (item == NULL) { item = new ProjectItem(m_listView, clip); + } if (item->data(0, DurationRole).isNull()) item->setData(0, DurationRole, i18n("Loading")); if (getProperties) { - qApp->processEvents(); + m_listView->processLayout(); m_refreshed = false; // Proxy clips CLIPTYPE t = clip->clipType(); @@ -1731,6 +1732,7 @@ ProjectItem *ProjectList::getItemById(const QString &id) { ProjectItem *item; QTreeWidgetItemIterator it(m_listView); + kDebug()<<"----------------- GET IT BY ID: "<type() != PROJECTCLIPTYPE) { // subitem or folder @@ -1738,6 +1740,7 @@ ProjectItem *ProjectList::getItemById(const QString &id) continue; } item = static_cast(*it); + kDebug()<<"/// /// PARSING ITEM............."<clipId()<<"-"<text(0); if (item->clipId() == id) return item; ++it; diff --git a/src/projectlistview.cpp b/src/projectlistview.cpp index af8ccc20..c6d6c40a 100644 --- a/src/projectlistview.cpp +++ b/src/projectlistview.cpp @@ -70,6 +70,11 @@ ProjectListView::~ProjectListView() { } +void ProjectListView::processLayout() +{ + executeDelayedItemsLayout(); +} + void ProjectListView::configureColumns(const QPoint& pos) { KMenu popup(this); diff --git a/src/projectlistview.h b/src/projectlistview.h index 1c0824f9..62a632e6 100644 --- a/src/projectlistview.h +++ b/src/projectlistview.h @@ -36,6 +36,7 @@ class ProjectListView : public QTreeWidget public: ProjectListView(QWidget *parent = 0); virtual ~ProjectListView(); + void processLayout(); protected: virtual void contextMenuEvent(QContextMenuEvent * event);