From f7c85b42252c7c17255f9f56639f1e95992dfeed Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Thu, 19 Feb 2015 20:05:55 +0100 Subject: [PATCH] Sync bookmark manager only if the change was done by the current process Adoption of http://commits.kde.org/kdelibs/2b5c6e42fc8114c6854ce490b9cdd4356be683d9 FIXED-IN: 14.12.3 BUG: 343620 BUG: 310080 REVIEW: 122640 --- src/panels/places/placesitemmodel.cpp | 20 -------------------- src/panels/places/placesitemmodel.h | 21 ++++++++------------- src/panels/places/placespanel.cpp | 5 +++++ 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 6accdc837..46f40b65c 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -78,7 +78,6 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : m_systemBookmarksIndexes(), m_bookmarkedItems(), m_hiddenItemToRemove(-1), - m_saveBookmarksTimer(0), m_updateBookmarksTimer(0), m_storageSetupInProgress() { @@ -95,11 +94,6 @@ PlacesItemModel::PlacesItemModel(QObject* parent) : const int syncBookmarksTimeout = 100; - m_saveBookmarksTimer = new QTimer(this); - m_saveBookmarksTimer->setInterval(syncBookmarksTimeout); - m_saveBookmarksTimer->setSingleShot(true); - connect(m_saveBookmarksTimer, SIGNAL(timeout()), this, SLOT(saveBookmarks())); - m_updateBookmarksTimer = new QTimer(this); m_updateBookmarksTimer->setInterval(syncBookmarksTimeout); m_updateBookmarksTimer->setSingleShot(true); @@ -498,8 +492,6 @@ void PlacesItemModel::onItemInserted(int index) m_bookmarkedItems.insert(bookmarkIndex, 0); } - triggerBookmarksSaving(); - #ifdef PLACESITEMMODEL_DEBUG kDebug() << "Inserted item" << index; showModelState(); @@ -518,8 +510,6 @@ void PlacesItemModel::onItemRemoved(int index, KStandardItem* removedItem) Q_ASSERT(!m_bookmarkedItems[boomarkIndex]); m_bookmarkedItems.removeAt(boomarkIndex); - triggerBookmarksSaving(); - #ifdef PLACESITEMMODEL_DEBUG kDebug() << "Removed item" << index; showModelState(); @@ -549,8 +539,6 @@ void PlacesItemModel::onItemChanged(int index, const QSet& changedRo QTimer::singleShot(0, this, SLOT(hideItem())); } } - - triggerBookmarksSaving(); } void PlacesItemModel::slotDeviceAdded(const QString& udi) @@ -1033,20 +1021,12 @@ void PlacesItemModel::hideItem(int index) // bookmark should still be remembered, so readd it again: m_bookmarkManager->root().addBookmark(hiddenBookmark); m_bookmarkManager->root().moveBookmark(hiddenBookmark, previousBookmark); - triggerBookmarksSaving(); } m_bookmarkedItems.insert(newIndex, hiddenItem); } } -void PlacesItemModel::triggerBookmarksSaving() -{ - if (m_saveBookmarksTimer) { - m_saveBookmarksTimer->start(); - } -} - QString PlacesItemModel::internalMimeType() const { return "application/x-dolphinplacesmodel-" + diff --git a/src/panels/places/placesitemmodel.h b/src/panels/places/placesitemmodel.h index 4a374e502..7cbf99e95 100644 --- a/src/panels/places/placesitemmodel.h +++ b/src/panels/places/placesitemmodel.h @@ -124,6 +124,14 @@ public: static KUrl convertedUrl(const KUrl& url); virtual void clear(); + + /** + * Saves the bookmarks and indicates to other applications that the + * state of the bookmarks has been changed. Is only called by the + * timeout of m_saveBookmarksTimer to prevent unnecessary savings. + */ + void saveBookmarks(); + signals: void errorMessage(const QString& message); void storageSetupDone(int index, bool success); @@ -147,12 +155,6 @@ private slots: */ void updateBookmarks(); - /** - * Saves the bookmarks and indicates to other applications that the - * state of the bookmarks has been changed. Is only called by the - * timeout of m_saveBookmarksTimer to prevent unnecessary savings. - */ - void saveBookmarks(); private: struct SystemBookmarkData; @@ -199,12 +201,6 @@ private: */ void hideItem(int index); - /** - * Triggers a delayed saving of bookmarks by starting - * m_saveBookmarksTimer. - */ - void triggerBookmarksSaving(); - QString internalMimeType() const; /** @@ -287,7 +283,6 @@ private: // removing an item is not allowed. int m_hiddenItemToRemove; - QTimer* m_saveBookmarksTimer; QTimer* m_updateBookmarksTimer; QHash m_storageSetupInProgress; diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 720e07ce3..6b840ef57 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -280,8 +280,10 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) editEntry(index); } else if (action == removeAction) { m_model->removeItem(index); + m_model->saveBookmarks(); } else if (action == hideAction) { item->setHidden(hideAction->isChecked()); + m_model->saveBookmarks(); } else if (action == openInNewTabAction) { // TriggerItem does set up the storage first and then it will // emit the slotItemMiddleClicked signal, because of Qt::MiddleButton. @@ -405,6 +407,7 @@ void PlacesPanel::slotItemDropEventStorageSetupDone(int index, bool success) void PlacesPanel::slotAboveItemDropEvent(int index, QGraphicsSceneDragDropEvent* event) { m_model->dropMimeDataBefore(index, event->mimeData()); + m_model->saveBookmarks(); } void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent) @@ -477,6 +480,7 @@ void PlacesPanel::addEntry() if (dialog->exec() == QDialog::Accepted) { PlacesItem* item = m_model->createPlacesItem(dialog->text(), dialog->url(), dialog->icon()); m_model->appendItemToGroup(item); + m_model->saveBookmarks(); } delete dialog; @@ -498,6 +502,7 @@ void PlacesPanel::editEntry(int index) oldItem->setText(dialog->text()); oldItem->setUrl(dialog->url()); oldItem->setIcon(dialog->icon()); + m_model->saveBookmarks(); } } -- 2.47.3