Browse Source

Partial revert eac8838dc2. Fixes #7952.

mapFromSource() didn't work as expected, when used in lessThan(), it sometimes
returns an invalid QModelIndex.
A crash is observed when filtering source model via filterAcceptsRow() in #7952,
the crash is due to endless recursive of filterAcceptsRow() & lessThan() calling
each other and mapFromSource() is the culprit of it.
adaptive-webui-19844
Chocobo1 7 years ago
parent
commit
86c5a8df75
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 2
      src/gui/categoryfilterproxymodel.cpp
  2. 4
      src/gui/properties/peerlistsortmodel.h
  3. 4
      src/gui/search/searchsortmodel.cpp
  4. 2
      src/gui/tagfilterproxymodel.cpp
  5. 2
      src/gui/transferlistsortmodel.cpp

2
src/gui/categoryfilterproxymodel.cpp

@ -57,5 +57,5 @@ bool CategoryFilterProxyModel::lessThan(const QModelIndex &left, const QModelInd @@ -57,5 +57,5 @@ bool CategoryFilterProxyModel::lessThan(const QModelIndex &left, const QModelInd
if (result != 0)
return (result < 0);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
}

4
src/gui/properties/peerlistsortmodel.h

@ -56,14 +56,14 @@ protected: @@ -56,14 +56,14 @@ protected:
if (result != 0)
return (result < 0);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
}
break;
default:
if (left.data() != right.data())
return QSortFilterProxyModel::lessThan(left, right);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
};
}
};

4
src/gui/search/searchsortmodel.cpp

@ -116,14 +116,14 @@ bool SearchSortModel::lessThan(const QModelIndex &left, const QModelIndex &right @@ -116,14 +116,14 @@ bool SearchSortModel::lessThan(const QModelIndex &left, const QModelIndex &right
if (result != 0)
return (result < 0);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
}
break;
default:
if (left.data() != right.data())
return base::lessThan(left, right);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
};
}

2
src/gui/tagfilterproxymodel.cpp

@ -57,5 +57,5 @@ bool TagFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &r @@ -57,5 +57,5 @@ bool TagFilterProxyModel::lessThan(const QModelIndex &left, const QModelIndex &r
if (result != 0)
return (result < 0);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
}

2
src/gui/transferlistsortmodel.cpp

@ -98,7 +98,7 @@ bool TransferListSortModel::lessThan(const QModelIndex &left, const QModelIndex @@ -98,7 +98,7 @@ bool TransferListSortModel::lessThan(const QModelIndex &left, const QModelIndex
if (result != 0)
return (result < 0);
return (mapFromSource(left) < mapFromSource(right));
return (left < right);
}
case TorrentModel::TR_ADD_DATE:

Loading…
Cancel
Save