File r883871.diff of Package kdepim4

Subject: kmail: fix added subfolders not appearing in the folder selection dialog
From: wstephenson@suse.de
Bug: 
Patch-upstream: 883871
--- kmail/folderselectiontreewidget.cpp	(revision 883870)
+++ kmail/folderselectiontreewidget.cpp	(revision 883871)
@@ -24,11 +24,15 @@
 #include "folderselectiontreewidget.h"
 #include "kmfoldertree.h"
 #include "kmfolder.h"
+#include "kmfoldermgr.h"
+#include "util.h"
 
 #include <kmenu.h>
 #include <kiconloader.h>
 #include <kconfiggroup.h>
 
+using namespace KMail::Util;
+
 namespace KMail {
 
 class FolderSelectionTreeWidgetItem : public KPIM::FolderTreeWidgetItem
@@ -178,9 +182,19 @@ void FolderSelectionTreeWidget::addChild
 {
   const KMFolder *fld = folder();
   if ( fld ) {
+    disconnect( kmkernel->folderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+    disconnect( kmkernel->imapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+    disconnect( kmkernel->dimapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+    connect( kmkernel->folderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+    connect( kmkernel->imapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+    connect( kmkernel->dimapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
     mFolderTree->addChildFolder( (KMFolder *) fld, parentWidget() );
-    reload( mLastMustBeReadWrite, mLastShowOutbox, mLastShowImapFolders );
-    setFolder( (KMFolder *) fld );
   }
 }
 
@@ -210,6 +224,18 @@ void FolderSelectionTreeWidget::slotCont
   folderMenu = 0;
 }
 
+void FolderSelectionTreeWidget::slotFolderAdded( KMFolder *addedFolder )
+{
+  reload( mLastMustBeReadWrite, mLastShowOutbox, mLastShowImapFolders );
+  setFolder( addedFolder );
+  disconnect( kmkernel->folderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+  disconnect( kmkernel->imapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+  disconnect( kmkernel->dimapFolderMgr(), SIGNAL( folderAdded(KMFolder*) ),
+             this, SLOT( slotFolderAdded(KMFolder*) ) );
+}
+
 void FolderSelectionTreeWidget::applyFilter( const QString& filter )
 {
   // We would like to set items that do not match the filter to disabled,
--- kmail/folderselectiontreewidget.h	(revision 883870)
+++ kmail/folderselectiontreewidget.h	(revision 883871)
@@ -136,6 +136,13 @@ protected slots:
    */
   void slotContextMenuRequested( const QPoint & );
 
+  /**
+   * Selects the folder that was added. Connected to the folderAdded signal
+   * when creating a new subfolder.
+   */
+  void slotFolderAdded( KMFolder *addedFolder );
+
+
 protected:
   /**
    * Handles key presses for the purpose of filtering.
Index: kmail/folderselectiontreewidget.cpp
===================================================================
Index: kmail/folderselectiontreewidget.h
===================================================================
openSUSE Build Service is sponsored by