Sophie

Sophie

distrib > Mageia > 5 > i586 > by-pkgid > cf746698214707f972e669b661d0ae59 > files > 66

kdepim4-4.14.10-1.3.mga5.src.rpm

From 00cf2a2fe6b0ba7bea64a7872c3aef7d12ee27a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Vr=C3=A1til?= <daniel.vratil@kdab.com>
Date: Fri, 24 Jun 2016 12:02:29 +0200
Subject: [PATCH 66/74] Revert "Fix accessing attachments in deeply nested
 extra nodes"

The fix introduces a regression when opening regular attachments

This reverts commit b6ea90df1c123a555ecca9e0940ef36ffccbdd89.
---
 messageviewer/viewer/nodehelper.cpp | 18 +++++-------------
 messageviewer/viewer/viewer_p.cpp   | 24 ++++++++----------------
 2 files changed, 13 insertions(+), 29 deletions(-)

diff --git a/messageviewer/viewer/nodehelper.cpp b/messageviewer/viewer/nodehelper.cpp
index 6480ad5f70..ddc184886f 100644
--- a/messageviewer/viewer/nodehelper.cpp
+++ b/messageviewer/viewer/nodehelper.cpp
@@ -672,20 +672,12 @@ QString NodeHelper::persistentIndex( const KMime::Content * node ) const
   QString indexStr = node->index().toString();
   const KMime::Content * const topLevel = node->topLevel();
   //if the node is an extra node, prepend the index of the extra node to the url
-  QMap<KMime::Content*, QList<KMime::Content*> >::ConstIterator it = mExtraContents.constBegin();
-  for (; it != mExtraContents.constEnd(); ++it) {
-    const QList<KMime::Content*> &extraNodes = it.value();
-    for ( int i = 0; i < extraNodes.size(); ++i ) {
-      if ( topLevel == extraNodes.at(i) ) {
-        indexStr.prepend(QString::fromLatin1("%1:").arg(i) );
-        if (topLevel != node) {
-          const QString parentIdx = persistentIndex(topLevel);
-          return indexStr.prepend(persistentIndex(topLevel));
-        }
-      }
-    }
+  Q_FOREACH( const QList<KMime::Content*> & extraNodes, mExtraContents ) {
+    const int extraNodesSize( extraNodes.size() );
+    for ( int i = 0; i < extraNodesSize; ++i )
+      if ( topLevel == extraNodes.at(i) )
+        return indexStr.prepend( QString::fromLatin1("%1:").arg(i) );
   }
-
   return indexStr;
 }
 
diff --git a/messageviewer/viewer/viewer_p.cpp b/messageviewer/viewer/viewer_p.cpp
index 19bce31b5a..92937ef007 100644
--- a/messageviewer/viewer/viewer_p.cpp
+++ b/messageviewer/viewer/viewer_p.cpp
@@ -307,25 +307,17 @@ KMime::Content * ViewerPrivate::nodeFromUrl( const KUrl & url )
         if ( path.contains(QLatin1Char(':')) ) {
             //if the content was not found, it might be in an extra node. Get the index of the extra node (the first part of the url),
             //and use the remaining part as a ContentIndex to find the node inside the extra node
-            QStringList indexes = path.split(QLatin1Char(':'));
-            KMime::Content *c = mMessage.get();
-            while (indexes.size() > 1) {
-              int idx = indexes.takeFirst().toInt();
-              QList<KMime::Content*> extras = mNodeHelper->extraContents(c);
-              if (idx < extras.size()) {
-                c = extras[idx];
-              } else {
-                c = 0;
-                break;
-              }
+            int i = path.left( path.indexOf(QLatin1Char(':')) ).toInt();
+            path = path.mid( path.indexOf(QLatin1Char(':')) + 1 );
+            KMime::ContentIndex idx(path);
+            QList<KMime::Content*> extras = mNodeHelper->extraContents( mMessage.get() );
+            if ( i >= 0 && i < extras.size() ) {
+                KMime::Content* c = extras[i];
+                node = c->content( idx );
             }
-
-            Q_ASSERT(indexes.size() == 1);
-            KMime::ContentIndex idx(indexes[0]);
-            node = c->content(idx);
         } else {
             if( mMessage )
-                node = mMessage->content( KMime::ContentIndex( path ) );
+                node= mMessage->content( KMime::ContentIndex( path ) );
         }
     } else {
         const QString path = url.toLocalFile();
-- 
2.14.1