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
===================================================================