+int KItemListSelectionManager::indexAfterRangesRemoving(int index, const KItemRangeList& itemRanges,
+ const RangesRemovingBehaviour behaviour) const
+{
+ int dec = 0;
+ foreach (const KItemRange& itemRange, itemRanges) {
+ if (index < itemRange.index) {
+ break;
+ }
+
+ dec += itemRange.count;
+
+ const int firstIndexAfterRange = itemRange.index + itemRange.count;
+ if (index < firstIndexAfterRange) {
+ // The index is part of the removed range
+ if (behaviour == DiscardRemovedIndex) {
+ return -1;
+ } else {
+ // Use the first item after the range as new index
+ index = firstIndexAfterRange;
+ break;
+ }
+ }
+ }
+ return qBound(-1, index - dec, m_model->count() - 1);
+}
+