1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 09:42:10 +02:00

[Bookmarks] Fixed drag&drop moving folders into bookmarks toolbar

Closes #1097
This commit is contained in:
nowrep 2013-12-05 21:13:58 +01:00
parent b4f0096f96
commit 586982e473
3 changed files with 25 additions and 19 deletions

View File

@ -30,6 +30,7 @@ Version 1.5.0
* fixed: enabling disabled rules in AdBlock now works everytime * fixed: enabling disabled rules in AdBlock now works everytime
* fixed: parsing OpenSearch files with XML declaration * fixed: parsing OpenSearch files with XML declaration
* fixed: don't show urls multiple times in url completer * fixed: don't show urls multiple times in url completer
* fixed: drag & drop moving folders under bookmarks toolbar
Version 1.4.4 Version 1.4.4
* released 1 September 2013 * released 1 September 2013

View File

@ -593,6 +593,10 @@ void BookmarksModel::changeBookmarkParent(int id, const QString &newParent, cons
void BookmarksModel::changeFolderParent(const QString &name, bool isSubfolder, bool* ok) void BookmarksModel::changeFolderParent(const QString &name, bool isSubfolder, bool* ok)
{ {
if (name.isEmpty()) {
return;
}
QSqlQuery query; QSqlQuery query;
query.prepare("UPDATE folders SET subfolder=? WHERE name=?"); query.prepare("UPDATE folders SET subfolder=? WHERE name=?");
query.bindValue(0, isSubfolder ? "yes" : "no"); query.bindValue(0, isSubfolder ? "yes" : "no");
@ -612,7 +616,6 @@ void BookmarksModel::changeFolderParent(const QString &name, bool isSubfolder, b
} }
} }
void BookmarksModel::bookmarkDropedLink(const QUrl &url, const QString &title, const QVariant &imageVariant, const QString &folder, bool* ok) void BookmarksModel::bookmarkDropedLink(const QUrl &url, const QString &title, const QVariant &imageVariant, const QString &folder, bool* ok)
{ {
QIcon icon = qIconProvider->iconFromImage(qvariant_cast<QImage>(imageVariant)); QIcon icon = qIconProvider->iconFromImage(qvariant_cast<QImage>(imageVariant));

View File

@ -123,18 +123,24 @@ QMimeData* TreeWidget::mimeData(const QList<QTreeWidgetItem*> items) const
QByteArray encodedData; QByteArray encodedData;
QDataStream stream(&encodedData, QIODevice::WriteOnly); QDataStream stream(&encodedData, QIODevice::WriteOnly);
foreach (const QTreeWidgetItem* item, items) { foreach (const QTreeWidgetItem* item, items) {
if (item) { if (!item) {
QTreeWidgetItem* clonedItem = item->clone(); continue;
bool parentIsRoot = false;
if (!item->parent() || item->parent() == invisibleRootItem()) {
parentIsRoot = true;
}
clonedItem->setData(0, ITEM_IS_TOPLEVEL, parentIsRoot);
clonedItem->setData(0, ITEM_PARENT_TITLE, (parentIsRoot ? QString() : item->parent()->text(0))) ;
clonedItem->write(stream);
delete clonedItem;
} }
// Why not just pass pointers ??!!
QTreeWidgetItem* clonedItem = item->clone();
// #1097 Clearing icon will properly write this item into stream ...
clonedItem->setIcon(0, QIcon());
bool parentIsRoot = !item->parent() || item->parent() == invisibleRootItem();
clonedItem->setData(0, ITEM_IS_TOPLEVEL, parentIsRoot);
clonedItem->setData(0, ITEM_PARENT_TITLE, (parentIsRoot ? QString() : item->parent()->text(0))) ;
clonedItem->write(stream);
delete clonedItem;
} }
data->setData(m_mimeType, encodedData); data->setData(m_mimeType, encodedData);
@ -171,8 +177,6 @@ bool TreeWidget::dropMimeData(QTreeWidgetItem* parent, int,
} }
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QSqlDatabase db = QSqlDatabase::database();
db.transaction();
QByteArray ba = data->data(m_mimeType); QByteArray ba = data->data(m_mimeType);
QDataStream stream(&ba, QIODevice::ReadOnly); QDataStream stream(&ba, QIODevice::ReadOnly);
@ -180,6 +184,9 @@ bool TreeWidget::dropMimeData(QTreeWidgetItem* parent, int,
return false; return false;
} }
QSqlDatabase db = QSqlDatabase::database();
db.transaction();
setUpdatesEnabled(false); setUpdatesEnabled(false);
while (!stream.atEnd()) { while (!stream.atEnd()) {
@ -202,12 +209,7 @@ bool TreeWidget::dropMimeData(QTreeWidgetItem* parent, int,
} }
if (isFolder) { if (isFolder) {
if (parent->text(0) == _bookmarksToolbar) { emit folderParentChanged(item->text(0), parent->text(0) == _bookmarksToolbar, &ok);
emit folderParentChanged(item->text(0), true, &ok);
}
else {
emit folderParentChanged(item->text(0), false, &ok);
}
} }
else { else {
emit bookmarkParentChanged(item->data(0, Qt::UserRole + 10).toInt(), emit bookmarkParentChanged(item->data(0, Qt::UserRole + 10).toInt(),