X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/f3537f5b5fb0fd107a2e299aaeca3524cf1dd792..e57f6215659ee36877c7c36c9e3fcba0ba5d03a0:/src/kitemviews/kitemrange.h diff --git a/src/kitemviews/kitemrange.h b/src/kitemviews/kitemrange.h index 70927b915..81d457aaa 100644 --- a/src/kitemviews/kitemrange.h +++ b/src/kitemviews/kitemrange.h @@ -1,62 +1,52 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz * - * Copyright (C) 2013 by Frank Reininghaus * - * * - * Based on the Itemviews NG project from Trolltech Labs: * - * http://qt.gitorious.org/qt-labs/itemviews-ng * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2011 Peter Penz + * SPDX-FileCopyrightText: 2013 Frank Reininghaus + * + * Based on the Itemviews NG project from Trolltech Labs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #ifndef KITEMRANGE_H #define KITEMRANGE_H #include -struct KItemRange -{ +struct KItemRange { KItemRange(int index = 0, int count = 0); int index; int count; - bool operator == (const KItemRange& other) const; + bool operator==(const KItemRange &other) const; }; -inline KItemRange::KItemRange(int index, int count) : - index(index), - count(count) +inline KItemRange::KItemRange(int index, int count) + : index(index) + , count(count) { } -inline bool KItemRange::operator == (const KItemRange& other) const +inline bool KItemRange::operator==(const KItemRange &other) const { return index == other.index && count == other.count; } - class KItemRangeList : public QList { public: - KItemRangeList() : QList() {} - KItemRangeList(const QList& list) : QList(list) {} + KItemRangeList() + : QList() + { + } + explicit KItemRangeList(const QList &list) + : QList(list) + { + } template - static KItemRangeList fromSortedContainer(const Container& container); + static KItemRangeList fromSortedContainer(const Container &container); - KItemRangeList& operator<<(const KItemRange& range) + KItemRangeList &operator<<(const KItemRange &range) { append(range); return *this; @@ -64,7 +54,7 @@ public: }; template -KItemRangeList KItemRangeList::fromSortedContainer(const Container& container) +KItemRangeList KItemRangeList::fromSortedContainer(const Container &container) { typename Container::const_iterator it = container.constBegin(); const typename Container::const_iterator end = container.constEnd(); @@ -78,7 +68,10 @@ KItemRangeList KItemRangeList::fromSortedContainer(const Container& container) int index = *it; int count = 1; - ++it; + // Remove duplicates, see https://bugs.kde.org/show_bug.cgi?id=335672 + while (it != end && *it == index) { + ++it; + } while (it != end) { if (*it == index + count) { @@ -89,6 +82,11 @@ KItemRangeList KItemRangeList::fromSortedContainer(const Container& container) count = 1; } ++it; + + // Remove duplicates, see https://bugs.kde.org/show_bug.cgi?id=335672 + while (it != end && *it == *(it - 1)) { + ++it; + } } result << KItemRange(index, count);