From af3b727cefd131f045a9fb412a818be634bff193 Mon Sep 17 00:00:00 2001 From: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Date: Fri, 18 Sep 2015 16:26:15 -0400 Subject: [PATCH] recentmodel: use qt iterators make_reverse_iterator is only available in gcc >= 5.0 Issue: #75334 Change-Id: Ieff32adef269e718f74f8b8294a661805ed119e0 --- src/recentmodel.cpp | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/recentmodel.cpp b/src/recentmodel.cpp index 40395a6e..07e2782a 100644 --- a/src/recentmodel.cpp +++ b/src/recentmodel.cpp @@ -19,6 +19,9 @@ ***********************************************************************************/ #include "recentmodel.h" +//std +#include <algorithm> + //Qt #include <QtCore/QCoreApplication> @@ -205,14 +208,15 @@ bool RecentModel::hasActiveCall(const QModelIndex &idx) return false; auto node = static_cast<RecentViewNode*>(idx.internalPointer()); - - auto reverseEnd = std::make_reverse_iterator(node->m_lChildren.begin()); - auto it = std::find_if (std::make_reverse_iterator(node->m_lChildren.end()), - reverseEnd, [] (RecentViewNode* child) { - return child->m_Type == RecentViewNode::Type::CALL; - }); - - return it != reverseEnd; + QListIterator<RecentViewNode*> lIterator(node->m_lChildren); + lIterator.toBack(); + while (lIterator.hasPrevious()) { + auto child = lIterator.previous(); + if (child->m_Type == RecentViewNode::Type::CALL) { + return CallModel::instance()->getIndex(child->m_uContent.m_pCall).isValid(); + } + } + return false; } /** @@ -224,14 +228,15 @@ Call* RecentModel::getActiveCall(const QModelIndex &idx) return nullptr; RecentViewNode* node = static_cast<RecentViewNode*>(idx.internalPointer()); - - auto reverseEnd = std::make_reverse_iterator(node->m_lChildren.begin()); - auto it = std::find_if (std::make_reverse_iterator(node->m_lChildren.end()), - reverseEnd, [] (RecentViewNode* child) { - return child->m_Type == RecentViewNode::Type::CALL; - }); - - return it != reverseEnd ? (*it)->m_uContent.m_pCall : nullptr; + QListIterator<RecentViewNode*> lIterator(node->m_lChildren); + lIterator.toBack(); + while (lIterator.hasPrevious()) { + auto child = lIterator.previous(); + if (child->m_Type == RecentViewNode::Type::CALL) { + return child->m_uContent.m_pCall; + } + } + return nullptr; } QHash<int,QByteArray> RecentModel::roleNames() const -- GitLab