[kdepim] pull in some upstream fixes, in particular...

Rex Dieter rdieter at fedoraproject.org
Mon Apr 8 16:47:40 UTC 2013


commit 898a86beef003740250537b749bb35204fe66120
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Mon Apr 8 11:47:39 2013 -0500

    pull in some upstream fixes, in particular...
    
    - address completion from akonadi regresssion (kde#259949)

 ...-t-need-to-watch-for-changes-in-resources.patch |   24 +++
 0003-create-correct-inline-sign-messages.patch     |   30 +++
 ...y-to-decrypted-mail-quotes-encrypted-text.patch |  140 +++++++++++++++
 ...780-KMail-crash-trying-to-Clone-or-Create.patch |   47 +++++
 ...-mimetype-for-contact-groups-in-the-direc.patch |   26 +++
 ...the-index-we-just-calculated-a-bit-faster.patch |   25 +++
 0010-Fix-kmail-autocompletion-from-akonadi.patch   |  189 ++++++++++++++++++++
 kdepim.spec                                        |   20 ++-
 8 files changed, 500 insertions(+), 1 deletions(-)
---
diff --git a/0002-KMail-doesn-t-need-to-watch-for-changes-in-resources.patch b/0002-KMail-doesn-t-need-to-watch-for-changes-in-resources.patch
new file mode 100644
index 0000000..e644078
--- /dev/null
+++ b/0002-KMail-doesn-t-need-to-watch-for-changes-in-resources.patch
@@ -0,0 +1,24 @@
+From b5bef64fcbf2c67a72be6e362c283859b17282e7 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Sat, 30 Mar 2013 11:15:49 +0100
+Subject: [PATCH 02/10] KMail doesn't need to watch for changes in resources.
+
+---
+ messagecore/asyncnepomukresourceretriever.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/messagecore/asyncnepomukresourceretriever.cpp b/messagecore/asyncnepomukresourceretriever.cpp
+index 154d850..f19fdd0 100644
+--- a/messagecore/asyncnepomukresourceretriever.cpp
++++ b/messagecore/asyncnepomukresourceretriever.cpp
+@@ -44,6 +44,7 @@ class NepomukResourceRetrieverRunnable : public QRunnable
+     void run()
+     {
+       Nepomuk2::Resource resource( m_url );
++      resource.setWatchEnabled( false );
+       foreach ( const QUrl &prop, m_props )
+         resource.property( prop ); // loads and caches this property
+       QMetaObject::invokeMethod( m_retriever, "resourceRetrievalDone", Qt::QueuedConnection,
+-- 
+1.8.1.4
+
diff --git a/0003-create-correct-inline-sign-messages.patch b/0003-create-correct-inline-sign-messages.patch
new file mode 100644
index 0000000..ad1e840
--- /dev/null
+++ b/0003-create-correct-inline-sign-messages.patch
@@ -0,0 +1,30 @@
+From 7801ac2bf36a051c67058dfdb6e1e8321f87730c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sandro=20Knau=C3=9F?= <mail at sandroknauss.de>
+Date: Sat, 30 Mar 2013 17:55:53 +0100
+Subject: [PATCH 03/10] create correct inline sign messages
+
+---
+ messagecomposer/composer.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/messagecomposer/composer.cpp b/messagecomposer/composer.cpp
+index 15ab871..5bcc940 100644
+--- a/messagecomposer/composer.cpp
++++ b/messagecomposer/composer.cpp
+@@ -189,12 +189,12 @@ void ComposerPrivate::composeStep2()
+       SignJob* subJob = new SignJob( q );
+       subJob->setSigningKeys( signers );
+       subJob->setCryptoMessageFormat( format );
++      subJob->appendSubjob( mainTextJob );
+ 
+       if( attachmentParts.isEmpty() ) {
+         // We have no attachments.  Use the content given by the MainTextJob.
+         mainJob = subJob;
+       } else {
+-        subJob->appendSubjob( mainTextJob );
+         MultipartJob *multipartJob = new MultipartJob( q );
+         multipartJob->setMultipartSubtype( "mixed" );
+         multipartJob->appendSubjob( subJob );
+-- 
+1.8.1.4
+
diff --git a/0004-Reply-to-decrypted-mail-quotes-encrypted-text.patch b/0004-Reply-to-decrypted-mail-quotes-encrypted-text.patch
new file mode 100644
index 0000000..eb50a72
--- /dev/null
+++ b/0004-Reply-to-decrypted-mail-quotes-encrypted-text.patch
@@ -0,0 +1,140 @@
+From ad92ce480599b7f36586174883f7bc6bb7e0f5ca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sandro=20Knau=C3=9F?= <mail at sandroknauss.de>
+Date: Tue, 19 Mar 2013 03:33:39 +0100
+Subject: [PATCH 04/10] Reply to decrypted mail quotes encrypted text
+
+Replying messages with have the decrypted test in body and not the
+encrypted message.
+
+BUG: 298911
+FIXED-IN: 4.10.2
+REVIEW: 109575
+---
+ messageviewer/objecttreeparser.cpp | 49 +++++++++++++++++++-------------------
+ 1 file changed, 24 insertions(+), 25 deletions(-)
+
+diff --git a/messageviewer/objecttreeparser.cpp b/messageviewer/objecttreeparser.cpp
+index e0741f0..ca3731b 100644
+--- a/messageviewer/objecttreeparser.cpp
++++ b/messageviewer/objecttreeparser.cpp
+@@ -1387,11 +1387,6 @@ bool ObjectTreeParser::processTextPlainSubtype( KMime::Content *curNode, Process
+ {
+   const bool isFirstTextPart = ( curNode->topLevel()->textContent() == curNode );
+ 
+-  if ( !htmlWriter() ) {
+-    extractNodeInfos( curNode, isFirstTextPart );
+-    return true;
+-  }
+-
+   if ( !isFirstTextPart && attachmentStrategy()->defaultDisplay( curNode ) != AttachmentStrategy::Inline &&
+        !showOnlyOneMimePart() )
+     return false;
+@@ -1403,7 +1398,7 @@ bool ObjectTreeParser::processTextPlainSubtype( KMime::Content *curNode, Process
+   const bool bDrawFrame = !isFirstTextPart
+                         && !showOnlyOneMimePart()
+                         && !label.isEmpty();
+-  if ( bDrawFrame ) {
++  if ( bDrawFrame && htmlWriter()) {
+     label = StringUtil::quoteHtmlChars( label, true );
+ 
+     const QString comment =
+@@ -1442,7 +1437,7 @@ bool ObjectTreeParser::processTextPlainSubtype( KMime::Content *curNode, Process
+       }
+       mNodeHelper->setNodeDisplayedEmbedded( curNode, true );
+   }
+-  if( bDrawFrame ) {
++  if( bDrawFrame && htmlWriter() ) {
+     htmlWriter()->queue( "</td></tr></table>" );
+   }
+ 
+@@ -2172,15 +2167,6 @@ void ObjectTreeParser::writeBodyString( const QByteArray & bodyString,
+                                         ProcessResult & result,
+                                         bool decorate )
+ {
+-  // FIXME: This is wrong, it means that inline PGP messages will not be decrypted when there is no
+-  //        HTML writer. Even if there would be a HTML writer, the decrypted inline PGP text is not
+-  //        added to the textual content.
+-  //        The solution would be to remove this if statement and make writeBodyStr() add the
+-  //        decrypted string to the textual content as well, and removing any manual modifictions
+-  //        of the textual content by callers of this method.
+-  if ( !htmlWriter() )
+-    return;
+-
+   assert( codec );
+   KMMsgSignatureState inlineSignatureState = result.inlineSignatureState();
+   KMMsgEncryptionState inlineEncryptionState = result.inlineEncryptionState();
+@@ -2981,7 +2967,9 @@ void ObjectTreeParser::writeBodyStr( const QByteArray& aStr, const QTextCodec *a
+           if( !str.isEmpty() ) {
+             const QString text = aCodec->toUnicode( str );
+             plainTextStr += text;
+-            htmlStr += quotedHTML( text, decorate );
++            if ( htmlWriter() ) {
++              htmlStr += quotedHTML( text, decorate );
++            }
+             kDebug() << "Non-empty Non-OpenPGP block found: '" << str  << "'";
+             // treat messages with empty lines before the first clearsigned
+             // block as fully signed/encrypted
+@@ -3072,7 +3060,9 @@ void ObjectTreeParser::writeBodyStr( const QByteArray& aStr, const QTextCodec *a
+               if ( couldDecrypt || !isEncrypted ) {
+                 const QString text = aCodec->toUnicode( block.text() );
+                 plainTextStr += text;
+-                htmlStr += quotedHTML( text, decorate );
++                if ( htmlWriter() ) {
++                  htmlStr += quotedHTML( text, decorate );
++                }
+               }
+               else {
+                 htmlStr += QString::fromLatin1( "<div align=\"center\">%1</div>" )
+@@ -3083,16 +3073,19 @@ void ObjectTreeParser::writeBodyStr( const QByteArray& aStr, const QTextCodec *a
+           else { // block is neither message block nor clearsigned block
+             const QString text = aCodec->toUnicode( block.text() );
+             plainTextStr += text;
+-            htmlStr += quotedHTML( text, decorate );
++            if ( htmlWriter() ) {
++              htmlStr += quotedHTML( text, decorate );
++            }
+           }
+       }
+ 
+       // add the last Non-OpenPGP block
+       QByteArray str( nonPgpBlocks.last() );
+-      if( !str.isEmpty() ) {
++      if( !str.isEmpty() && str != "\n" ) {
+         const QString text = aCodec->toUnicode( str );
+         plainTextStr += text;
+-        htmlStr += quotedHTML( text, decorate );
++        if ( htmlWriter() )
++          htmlStr += quotedHTML( text, decorate );
+         // Even if the trailing Non-OpenPGP block isn't empty we still
+         // consider the message part fully signed/encrypted because else
+         // all inline signed mailing list messages would only be partially
+@@ -3108,16 +3101,22 @@ void ObjectTreeParser::writeBodyStr( const QByteArray& aStr, const QTextCodec *a
+       if ( htmlWriter() ) {
+         htmlWriter()->queue( htmlStr );
+       }
+-      mPlainTextContent += plainTextStr;
++      mPlainTextContent = plainTextStr;
++      mPlainTextContentCharset = aCodec->name();
+   }
+   else { // No inline PGP encryption
++
+     const QString plainText = aCodec->toUnicode( aStr );
+-    mPlainTextContent += plainText;
++
++    if ( mPlainTextContent.isEmpty() ) {
++      mPlainTextContent = plainText;
++      mPlainTextContentCharset = aCodec->name();
++    }
++
+     if ( htmlWriter() ) {
+-      htmlWriter()->queue( quotedHTML( plainText, decorate ) );
++      htmlWriter()->queue( quotedHTML( mPlainTextContent, decorate ) );
+     }
+   }
+-  mPlainTextContentCharset = aCodec->name();
+ }
+ 
+ 
+-- 
+1.8.1.4
+
diff --git a/0006-Fix-Bug-317780-KMail-crash-trying-to-Clone-or-Create.patch b/0006-Fix-Bug-317780-KMail-crash-trying-to-Clone-or-Create.patch
new file mode 100644
index 0000000..f4b0124
--- /dev/null
+++ b/0006-Fix-Bug-317780-KMail-crash-trying-to-Clone-or-Create.patch
@@ -0,0 +1,47 @@
+From dfac47cb284ffe7e97a99670b890ed8e4c4d4416 Mon Sep 17 00:00:00 2001
+From: Montel Laurent <montel at kde.org>
+Date: Wed, 3 Apr 2013 15:22:59 +0200
+Subject: [PATCH 06/10] Fix Bug 317780 - KMail crash trying to Clone or Create
+ new Theme
+
+FIXED-IN: 4.10.3
+BUG: 317780
+---
+ messagelist/utils/themeeditor.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/messagelist/utils/themeeditor.cpp b/messagelist/utils/themeeditor.cpp
+index 2d26d28..5671fcd 100644
+--- a/messagelist/utils/themeeditor.cpp
++++ b/messagelist/utils/themeeditor.cpp
+@@ -411,6 +411,8 @@ void ThemePreviewWidget::setTheme( Theme * theme )
+   mDropIndicatorPoint2 = QPoint();
+   mTheme = theme;
+   mDelegate->setTheme( theme );
++  if (!mTheme)
++     return;
+   mGroupHeaderSampleItem->setExpanded( true );
+ 
+   const QList< Theme::Column * > & columns = mTheme->columns();
+@@ -1547,7 +1549,8 @@ ThemeEditor::~ThemeEditor()
+ void ThemeEditor::editTheme( Theme *set )
+ {
+   mCurrentTheme = set;
+-
++  mPreviewWidget->setTheme(mCurrentTheme);
++  
+   if ( !mCurrentTheme )
+   {
+     setEnabled( false );
+@@ -1558,8 +1561,6 @@ void ThemeEditor::editTheme( Theme *set )
+   nameEdit()->setText( set->name() );
+   descriptionEdit()->setPlainText( set->description() );
+ 
+-  mPreviewWidget->setTheme( set );
+-
+   ComboBoxUtils::setIntegerOptionComboValue( mViewHeaderPolicyCombo, (int)mCurrentTheme->viewHeaderPolicy() );
+ 
+   mIconSizeSpinBox->setValue( set->iconSize() );
+-- 
+1.8.1.4
+
diff --git a/0008-Add-missing-mimetype-for-contact-groups-in-the-direc.patch b/0008-Add-missing-mimetype-for-contact-groups-in-the-direc.patch
new file mode 100644
index 0000000..9add037
--- /dev/null
+++ b/0008-Add-missing-mimetype-for-contact-groups-in-the-direc.patch
@@ -0,0 +1,26 @@
+From a24942ac27c27a4a540148292a9e6fbee1c8fff7 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Mon, 8 Apr 2013 15:34:13 +0200
+Subject: [PATCH 08/10] Add missing mimetype for contact groups, in the
+ direct-akonadi-search.
+
+---
+ libkdepim/addresseelineedit.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libkdepim/addresseelineedit.cpp b/libkdepim/addresseelineedit.cpp
+index 6f4d312..3c39c7d 100644
+--- a/libkdepim/addresseelineedit.cpp
++++ b/libkdepim/addresseelineedit.cpp
+@@ -715,7 +715,7 @@ void AddresseeLineEdit::Private::akonadiListAllContacts()
+   kDebug() << "listing all contacts in Akonadi";
+   Akonadi::RecursiveItemFetchJob *job =
+            new Akonadi::RecursiveItemFetchJob( Akonadi::Collection::root(),
+-                                               QStringList() << KABC::Addressee::mimeType(),
++                                               QStringList() << KABC::Addressee::mimeType() << KABC::ContactGroup::mimeType(),
+                                                s_static->akonadiSession );
+   job->fetchScope().fetchFullPayload();
+   job->fetchScope().setAncestorRetrieval( Akonadi::ItemFetchScope::Parent );
+-- 
+1.8.1.4
+
diff --git a/0009-Use-the-index-we-just-calculated-a-bit-faster.patch b/0009-Use-the-index-we-just-calculated-a-bit-faster.patch
new file mode 100644
index 0000000..73603f9
--- /dev/null
+++ b/0009-Use-the-index-we-just-calculated-a-bit-faster.patch
@@ -0,0 +1,25 @@
+From 5b6bf4b21c027905b3b4d05008f5100d32d37d5e Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Mon, 8 Apr 2013 15:34:52 +0200
+Subject: [PATCH 09/10] Use the index we just calculated, a bit faster.
+
+---
+ libkdepim/addresseelineedit.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libkdepim/addresseelineedit.cpp b/libkdepim/addresseelineedit.cpp
+index 3c39c7d..b7b11be 100644
+--- a/libkdepim/addresseelineedit.cpp
++++ b/libkdepim/addresseelineedit.cpp
+@@ -1010,7 +1010,7 @@ void AddresseeLineEdit::Private::slotAkonadiSearchResult( KJob *job )
+ {
+   const int index = s_static->akonadiJobsInFlight.indexOf( qobject_cast<Akonadi::Job*>( job ) );
+   if( index != -1 )
+-    s_static->akonadiJobsInFlight.remove( s_static->akonadiJobsInFlight.indexOf( qobject_cast<Akonadi::Job*>( job ) ) );
++    s_static->akonadiJobsInFlight.remove( index );
+   const Akonadi::ContactSearchJob *contactJob =
+     qobject_cast<Akonadi::ContactSearchJob*>( job );
+   const Akonadi::ContactGroupSearchJob *groupJob =
+-- 
+1.8.1.4
+
diff --git a/0010-Fix-kmail-autocompletion-from-akonadi.patch b/0010-Fix-kmail-autocompletion-from-akonadi.patch
new file mode 100644
index 0000000..661dd86
--- /dev/null
+++ b/0010-Fix-kmail-autocompletion-from-akonadi.patch
@@ -0,0 +1,189 @@
+From 6a06c57f52a00018d607085efa7570deb91dc707 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Mon, 8 Apr 2013 17:41:39 +0200
+Subject: [PATCH 10/10] Fix kmail autocompletion from akonadi.
+
+My commit 02f5f0214e made autocompletion from nepomuk work better, but broke
+completion from akonadi. I kept the "keywords" based code, but now it's only
+used for the special case of nickname-based search (because the nickname shouldn't
+appear in the completion item). For everything else it really doesn't make sense
+to have a search engine (akonadi/nepomuk) on top of a search engine
+(the one inside KCompletion).
+
+This time I verified that:
+* nepomuk search still works
+* contacts from akonadi work again
+* contact groups from akonadi work (after previous commit)
+* nickname-search in akonadi still doesn't work, but it didn't before. More work
+needed for that one. This is the only reason to keep KMailCompletion around btw,
+everything else would work without it.
+
+BUG: 259949
+FIXED-IN: 4.10.3
+---
+ libkdepim/addresseelineedit.cpp | 66 +++++++++++------------------------------
+ libkdepim/addresseelineedit.h   |  5 ----
+ libkdepim/kmailcompletion.h     |  4 ++-
+ 3 files changed, 21 insertions(+), 54 deletions(-)
+
+diff --git a/libkdepim/addresseelineedit.cpp b/libkdepim/addresseelineedit.cpp
+index b7b11be..ec4caf9 100644
+--- a/libkdepim/addresseelineedit.cpp
++++ b/libkdepim/addresseelineedit.cpp
+@@ -30,6 +30,8 @@
+ #include "completionordereditor.h"
+ #endif
+ 
++#include "kmailcompletion.h"
++
+ #include <Akonadi/Contact/ContactSearchJob>
+ #include <Akonadi/Contact/ContactGroupSearchJob>
+ #include <Akonadi/CollectionFetchJob>
+@@ -77,6 +79,10 @@
+ 
+ using namespace KPIM;
+ 
++namespace KPIM {
++  typedef QMap< QString, QPair<int,int> > CompletionItemsMap;
++}
++
+ class AddresseeLineEditStatic
+ {
+   public:
+@@ -496,11 +502,9 @@ void AddresseeLineEdit::Private::addCompletionItem( const QString &string, int w
+     s_static->completionItemMap.insert( string, qMakePair( weight, completionItemSource ) );
+   }
+ 
+-  if ( keyWords == 0 ) {
+-    s_static->completion->addItem( string, weight );
+-  } else {
+-    s_static->completion->addItemWithKeys( string, weight, keyWords );
+-  }
++  s_static->completion->addItem(string, weight);
++  if (keyWords && !keyWords->isEmpty())
++    s_static->completion->addItemWithKeys(string, weight, keyWords); // see kmailcompletion.cpp
+ }
+ 
+ const QStringList KPIM::AddresseeLineEdit::Private::adjustedCompletionItems( bool fullSearch )
+@@ -1348,17 +1352,13 @@ void AddresseeLineEdit::addItem( const Akonadi::Item &item, int weight, int sour
+ void AddresseeLineEdit::addContactGroup( const KABC::ContactGroup &group, int weight, int source )
+ {
+   d->addCompletionItem( group.name(), weight, source );
+-  QStringList keyWords;
+-  keyWords.append( group.name() );
+-  d->addCompletionItem( group.name(), weight, source, &keyWords );
+ }
+ 
+ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int source )
+ {
+   const QStringList emails = addr.emails();
+   QStringList::ConstIterator it;
+-  const int prefEmailWeight = 1;     //increment weight by prefEmailWeight
+-  int isPrefEmail = prefEmailWeight; //first in list is preferredEmail
++  int isPrefEmail = 1; //first in list is preferredEmail
+   QStringList::ConstIterator end( emails.constEnd() );
+   for ( it = emails.constBegin(); it != end; ++it ) {
+     //TODO: highlight preferredEmail
+@@ -1368,40 +1368,6 @@ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int
+     const QString nickName  = addr.nickName();
+     QString fullEmail       = addr.fullEmail( email );
+ 
+-    // Prepare keywords (for CompletionShell, CompletionPopup)
+-    QStringList keyWords;
+-    const QString realName  = addr.realName();
+-
+-    if ( !givenName.isEmpty() && !familyName.isEmpty() ) {
+-      keyWords.append( givenName  + QLatin1Char( ' ' ) + familyName );
+-      keyWords.append( familyName + QLatin1Char( ' ' ) + givenName );
+-      keyWords.append( familyName + QLatin1String( ", " ) + givenName );
+-    } else if ( !givenName.isEmpty() ) {
+-      keyWords.append( givenName );
+-    } else if ( !familyName.isEmpty() ) {
+-      keyWords.append( familyName );
+-    }
+-
+-    if ( !nickName.isEmpty() ) {
+-      keyWords.append( nickName );
+-    }
+-
+-    if ( !realName.isEmpty() ) {
+-      keyWords.append( realName );
+-    }
+-
+-    keyWords.append( email );
+-
+-    /* KMailCompletion does not have knowledge about identities, it stores emails and
+-     * keywords for each email. KMailCompletion::allMatches does a lookup on the
+-     * keywords and returns an ordered list of emails. In order to get the preferred
+-     * email before others for each identity we use this little trick.
+-     * We remove the <blank> in adjustedCompletionItems.
+-     */
+-    if ( isPrefEmail == prefEmailWeight ) {
+-      fullEmail.replace( QLatin1String( " <" ), QLatin1String( "  <" ) );
+-    }
+-
+     // Prepare "givenName" + ' ' + "familyName"
+     QString fullName = givenName;
+     if (!familyName.isEmpty()) {
+@@ -1413,12 +1379,16 @@ void AddresseeLineEdit::addContact( const KABC::Addressee &addr, int weight, int
+     // Finally, we can add the completion items
+     if (!fullName.isEmpty()) {
+       const QString address = KPIMUtils::normalizedAddress(fullName, email, QString());
+-      d->addCompletionItem(address, weight + isPrefEmail, source, &keyWords);
++      if (fullEmail != address) {
++        // This happens when fullEmail contains a middle name, while our own fullName+email only has "first last".
++        // Let's offer both, the fullEmail with 3 parts, looks a tad formal.
++        d->addCompletionItem(address, weight + isPrefEmail, source);
++      }
+     }
+ 
+-    if ( !nickName.isEmpty() ) {
+-      const QString address = KPIMUtils::normalizedAddress(nickName, email, QString());
+-      d->addCompletionItem(address, weight + isPrefEmail, source, &keyWords);
++    QStringList keyWords;
++    if (!nickName.isEmpty()) {
++      keyWords.append(nickName);
+     }
+ 
+     d->addCompletionItem( fullEmail, weight + isPrefEmail, source, &keyWords );
+diff --git a/libkdepim/addresseelineedit.h b/libkdepim/addresseelineedit.h
+index 4e6784b..b2af4a9 100644
+--- a/libkdepim/addresseelineedit.h
++++ b/libkdepim/addresseelineedit.h
+@@ -27,7 +27,6 @@
+ #ifndef KDEPIM_ADDRESSEELINEEDIT_H
+ #define KDEPIM_ADDRESSEELINEEDIT_H
+ 
+-#include "kmailcompletion.h"
+ #include "kdepim_export.h"
+ 
+ #include "ldap/ldapclient.h"
+@@ -50,10 +49,6 @@ namespace KABC {
+   class ContactGroup;
+ }
+ 
+-namespace KPIM {
+-  typedef QMap< QString, QPair<int,int> > CompletionItemsMap;
+-}
+-
+ namespace Nepomuk2 {
+   namespace Query {
+     class Result;
+diff --git a/libkdepim/kmailcompletion.h b/libkdepim/kmailcompletion.h
+index e8574cc..93771d3 100644
+--- a/libkdepim/kmailcompletion.h
++++ b/libkdepim/kmailcompletion.h
+@@ -32,7 +32,9 @@ namespace KPIM {
+ 
+ /**
+  * KMailCompletion allows lookup of email addresses by keyword.
+- * Typically a keywods would be firstname, lastname, nickname or domain.
++ * This is used for lookup by nickname, since we don't want the nickname to appear in the final email.
++ * E.g. you have a nickname "idiot" for your boss, you want to type "idiot" but you want the completion
++ * to offer "Full Name <email at domain>", without the nickname being visible.
+  */
+ class KMailCompletion : public KCompletion
+ {
+-- 
+1.8.1.4
+
diff --git a/kdepim.spec b/kdepim.spec
index a9ce31c..368aadc 100644
--- a/kdepim.spec
+++ b/kdepim.spec
@@ -2,7 +2,7 @@ Name:    kdepim
 Summary: KDE PIM (Personal Information Manager) applications
 Epoch:   7
 Version: 4.10.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 License: GPLv2
 URL:     http://www.kde.org/
@@ -18,6 +18,13 @@ Source0: http://download.kde.org/%{stable}/%{version}/src/%{name}-%{version}.tar
 Patch0:  kdepim-4.9.95-install_headers.patch
 
 ## upstream patches
+Patch102: 0002-KMail-doesn-t-need-to-watch-for-changes-in-resources.patch
+Patch103: 0003-create-correct-inline-sign-messages.patch
+Patch104: 0004-Reply-to-decrypted-mail-quotes-encrypted-text.patch
+Patch106: 0006-Fix-Bug-317780-KMail-crash-trying-to-Clone-or-Create.patch
+Patch108: 0008-Add-missing-mimetype-for-contact-groups-in-the-direc.patch
+Patch109: 0009-Use-the-index-we-just-calculated-a-bit-faster.patch
+Patch110: 0010-Fix-kmail-autocompletion-from-akonadi.patch
 
 Provides: kdepim4 = %{version}-%{release}
 
@@ -93,6 +100,13 @@ Requires: %{name}-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
 %setup -q -n kdepim-%{version}%{?pre}
 
 %patch0 -p1 -b .install_headers
+%patch102 -p1 -b .0002
+%patch103 -p1 -b .0003
+%patch104 -p1 -b .0004
+%patch106 -p1 -b .0006
+%patch108 -p1 -b .0008
+%patch109 -p1 -b .0009
+%patch110 -p1 -b .0010
 
 
 %build
@@ -210,6 +224,10 @@ fi
 
 
 %changelog
+* Mon Apr 08 2013 Rex Dieter <rdieter at fedoraproject.org> 7:4.10.2-2
+- pull in some upstream fixes, in particular...
+- address completion from akonadi regresssion (kde#259949)
+
 * Mon Apr 01 2013 Rex Dieter <rdieter at fedoraproject.org> - 7:4.10.2-1
 - 4.10.2
 


More information about the scm-commits mailing list