QItemSelectionRange: de-inline op<

It's a bit large for an inline function.

Note for Qt 6 that this function is nonsense.

Change-Id: If6af5d3538aac86d55313ba6accdb13f892e6564
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
bb10
Marc Mutz 2015-12-05 22:32:39 +01:00
parent 2c634a1326
commit 5497e6de89
2 changed files with 28 additions and 26 deletions

View File

@ -274,8 +274,6 @@ QItemSelectionRange QItemSelectionRange::intersected(const QItemSelectionRange &
*/
/*!
\fn bool QItemSelectionRange::operator<(const QItemSelectionRange &other) const
Returns \c true if the selection range is less than the \a other
range given; otherwise returns \c false.
@ -284,6 +282,33 @@ QItemSelectionRange QItemSelectionRange::intersected(const QItemSelectionRange &
class can be used with QMap.
*/
bool QItemSelectionRange::operator<(const QItemSelectionRange &other) const
{
// ### Qt 6: This is inconsistent with op== and needs to be fixed, nay,
// ### removed, but cannot, because it was inline up to and including 5.9
// Comparing parents will compare the models, but if two equivalent ranges
// in two different models have invalid parents, they would appear the same
if (other.tl.model() == tl.model()) {
// parent has to be calculated, so we only do so once.
const QModelIndex topLeftParent = tl.parent();
const QModelIndex otherTopLeftParent = other.tl.parent();
if (topLeftParent == otherTopLeftParent) {
if (other.tl.row() == tl.row()) {
if (other.tl.column() == tl.column()) {
if (other.br.row() == br.row()) {
return br.column() < other.br.column();
}
return br.row() < other.br.row();
}
return tl.column() < other.tl.column();
}
return tl.row() < other.tl.row();
}
return topLeftParent < otherTopLeftParent;
}
return tl.model() < other.tl.model();
}
/*!
\fn bool QItemSelectionRange::isValid() const

View File

@ -116,30 +116,7 @@ public:
{ return (tl == other.tl && br == other.br); }
inline bool operator!=(const QItemSelectionRange &other) const
{ return !operator==(other); }
inline bool operator<(const QItemSelectionRange &other) const
{
// Comparing parents will compare the models, but if two equivalent ranges
// in two different models have invalid parents, they would appear the same
if (other.tl.model() == tl.model()) {
// parent has to be calculated, so we only do so once.
const QModelIndex topLeftParent = tl.parent();
const QModelIndex otherTopLeftParent = other.tl.parent();
if (topLeftParent == otherTopLeftParent) {
if (other.tl.row() == tl.row()) {
if (other.tl.column() == tl.column()) {
if (other.br.row() == br.row()) {
return br.column() < other.br.column();
}
return br.row() < other.br.row();
}
return tl.column() < other.tl.column();
}
return tl.row() < other.tl.row();
}
return topLeftParent < otherTopLeftParent;
}
return tl.model() < other.tl.model();
}
bool operator<(const QItemSelectionRange &other) const;
inline bool isValid() const
{