From 705d29694fd61c47a57ccec531e73d87a2960021 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 19 Nov 2012 02:25:52 -0800 Subject: Mon Nov 19 02:22:26 PST 2012 --- extra/ktorrent/groupmiewmodel.diff | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 extra/ktorrent/groupmiewmodel.diff (limited to 'extra/ktorrent/groupmiewmodel.diff') diff --git a/extra/ktorrent/groupmiewmodel.diff b/extra/ktorrent/groupmiewmodel.diff new file mode 100644 index 000000000..f16bdc57b --- /dev/null +++ b/extra/ktorrent/groupmiewmodel.diff @@ -0,0 +1,87 @@ +commit 1009ba89b5d603ae7f1a95ef65a818c760c367cf +Author: Joris Guisson +Date: Mon Oct 22 20:07:21 2012 +0200 + + Backport to 4.3: Fix crash in GroupViewModel when dragging torrents over groups + + BUG: 308733 + +diff --git a/ktorrent/groups/groupviewmodel.cpp b/ktorrent/groups/groupviewmodel.cpp +index f2e99d2..b4dca7e 100644 +--- ktorrent/groups/groupviewmodel.cpp ++++ ktorrent/groups/groupviewmodel.cpp +@@ -55,6 +55,9 @@ namespace kt + QVariant GroupViewModel::data(const QModelIndex& index, int role) const + { + Item* item = (Item*)index.internalPointer(); ++ if(!item) ++ return QVariant(); ++ + switch(role) + { + case Qt::DisplayRole: +@@ -72,6 +75,9 @@ namespace kt + return false; + + Item* item = (Item*)index.internalPointer(); ++ if(!item) ++ return false; ++ + Group* group = item->group; + QString new_name = value.toString(); + if(new_name.isEmpty() || gman->find(new_name)) +@@ -96,13 +102,16 @@ namespace kt + return 1; + + Item* item = (Item*)parent.internalPointer(); +- return item->children.size(); ++ if(!item) ++ return 0; ++ else ++ return item->children.size(); + } + + QModelIndex GroupViewModel::parent(const QModelIndex& child) const + { + Item* item = (Item*)child.internalPointer(); +- if(!item->parent) ++ if(!item || !item->parent) + return QModelIndex(); + else + return createIndex(item->parent->row, 0, (void*)item->parent); +@@ -114,7 +123,7 @@ namespace kt + return createIndex(row, column, (void*)&root); + + Item* item = (Item*)parent.internalPointer(); +- if(row < 0 || row >= item->children.count()) ++ if(!item || row < 0 || row >= item->children.count()) + return QModelIndex(); + + return createIndex(row, column, (void*)&item->children.at(row)); +@@ -157,7 +166,7 @@ namespace kt + Qt::ItemFlags GroupViewModel::flags(const QModelIndex& index) const + { + Item* item = (Item*)index.internalPointer(); +- if(item->group && !item->group->isStandardGroup()) ++ if(item && item->group && !item->group->isStandardGroup()) + return Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsDropEnabled; + else + return Qt::ItemIsEnabled; +@@ -218,8 +227,11 @@ namespace kt + + bool GroupViewModel::removeRows(int row, int count, const QModelIndex& parent) + { ++ Item* item = (Item*)parent.internalPointer(); ++ if(!item) ++ return false; ++ + beginRemoveRows(parent, row, row + count); +- Item* item = (Item*)parent.internalPointer(); + for(int i = 0; i < count; i++) + item->children.removeAt(row); + int row_index = 0; +@@ -436,3 +448,4 @@ namespace kt + + + } ++ -- cgit v1.2.3-54-g00ecf