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
if (result != 0) if (result != 0)
return (result < 0); return (result < 0);
return (mapFromSource(left) < mapFromSource(right)); return (left < right);
} }

4
src/gui/properties/peerlistsortmodel.h

@ -56,14 +56,14 @@ protected:
if (result != 0) if (result != 0)
return (result < 0); return (result < 0);
return (mapFromSource(left) < mapFromSource(right)); return (left < right);
} }
break; break;
default: default:
if (left.data() != right.data()) if (left.data() != right.data())
return QSortFilterProxyModel::lessThan(left, right); 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
if (result != 0) if (result != 0)
return (result < 0); return (result < 0);
return (mapFromSource(left) < mapFromSource(right)); return (left < right);
} }
break; break;
default: default:
if (left.data() != right.data()) if (left.data() != right.data())
return base::lessThan(left, right); 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
if (result != 0) if (result != 0)
return (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
if (result != 0) if (result != 0)
return (result < 0); return (result < 0);
return (mapFromSource(left) < mapFromSource(right)); return (left < right);
} }
case TorrentModel::TR_ADD_DATE: case TorrentModel::TR_ADD_DATE:

Loading…
Cancel
Save