--- kmail/kmailicalifaceimpl.cpp 2007/03/09 17:06:16 640993
+++ kmail/kmailicalifaceimpl.cpp 2007/03/21 06:57:39 644873
@@ -555,6 +555,7 @@
#endif
}
}
+ f->close();
return aMap;
}
--- kmail/kmcomposewin.cpp 2007/03/19 16:40:22 644271
+++ kmail/kmcomposewin.cpp 2007/03/21 06:57:39 644873
@@ -3928,12 +3928,11 @@
if ( imapTheFolder && imapTheFolder->noContent() )
imapTheFolder = 0;
- if ( theFolder == 0 ) {
+ if ( theFolder == 0 )
theFolder = ( mSaveIn==KMComposeWin::Drafts ?
kmkernel->draftsFolder() : kmkernel->templatesFolder() );
- } else {
- theFolder->open();
- }
+
+ theFolder->open();
kdDebug(5006) << k_funcinfo << "theFolder=" << theFolder->name() << endl;
if ( imapTheFolder )
kdDebug(5006) << k_funcinfo << "imapTheFolder=" << imapTheFolder->name() << endl;
@@ -3951,6 +3950,7 @@
(static_cast<KMFolderImap*>( imapTheFolder->storage() ))->getFolder();
}
+ theFolder->close();
return sentOk;
}
--- kmail/kmfolderimap.cpp 2007/03/16 21:54:53 643329
+++ kmail/kmfolderimap.cpp 2007/03/21 06:57:39 644873
@@ -109,13 +109,13 @@
void KMFolderImap::close(bool aForced)
{
if (mOpenCount <= 0 ) return;
- if (mOpenCount > 0) mOpenCount--;
- if (mOpenCount > 0 && !aForced) return;
+ if (mOpenCount - 1 > 0 && !aForced) return;
if (isSelected() && !aForced) {
kdWarning(5006) << "Trying to close the selected folder " << label() <<
- " - ignoring!" << endl;
+ " - ignoring! " << kdBacktrace() << endl;
return;
}
+ if (mOpenCount > 0) mOpenCount--;
// FIXME is this still needed?
if (mAccount)
mAccount->ignoreJobsForFolder( folder() );
@@ -695,7 +695,6 @@
KMFolderImap* f = static_cast<KMFolderImap*> ( fld->storage() );
f->initializeFrom( this, mAccount->addPathToNamespace( name ),
"inode/directory" );
- f->close();
if ( !mAccount->listOnlyOpenFolders() )
{
f->slotListResult( subfolderNames, subfolderPaths,
@@ -811,7 +810,6 @@
KMFolder *fld = folder()->child()->createFolder(subfolderNames[i]);
if ( fld ) {
f = static_cast<KMFolderImap*> ( fld->storage() );
- f->close();
settingsChanged = true;
} else {
kdWarning(5006) << "can't create folder " << subfolderNames[i] << endl;
@@ -876,7 +874,6 @@
if ( f )
{
f->folder()->setLabel( i18n("inbox") );
- f->close();
}
kmkernel->imapFolderMgr()->contentsChanged();
}
@@ -996,7 +993,6 @@
{
if (!mAccount) {
emit folderComplete(this, false);
- close();
return;
}
KURL url = mAccount->getUrl();
@@ -1012,7 +1008,6 @@
kdDebug(5006) << "KMFolderImap::checkValidity - got no connection" << endl;
emit folderComplete(this, FALSE);
mContentState = imapNoInformation;
- close();
return;
} else if ( connectionState == ImapAccountBase::Connecting ) {
// We'll wait for the connectionResult signal from the account. If it
@@ -1025,7 +1020,6 @@
// Only check once at a time.
if (mCheckingValidity) {
kdDebug(5006) << "KMFolderImap::checkValidity - already checking" << endl;
- close();
return;
}
// otherwise we already are inside a mailcheck
@@ -1045,6 +1039,7 @@
if ( account()->mailCheckProgressItem() ) {
account()->mailCheckProgressItem()->setStatus( folder()->prettyURL() );
}
+ open();
ImapAccountBase::jobData jd( url.url() );
KIO::SimpleJob *job = KIO::get(url, FALSE, FALSE);
KIO::Scheduler::assignJobToSlave(mAccount->slave(), job);
@@ -1144,6 +1139,7 @@
mMailCheckProgressItem->setCompletedItems( 0 );
}
reallyGetFolder(startUid);
+ close();
}
}
@@ -1178,6 +1174,7 @@
mCheckFlags = TRUE;
}
checkValidity();
+ close();
}
@@ -1189,7 +1186,6 @@
{
mContentState = imapNoInformation;
emit folderComplete(this, FALSE);
- close();
return;
}
quiet(true);
@@ -1199,6 +1195,7 @@
mMailCheckProgressItem->setStatus( i18n("Retrieving message status") );
url.setPath(imapPath() + ";SECTION=UID FLAGS");
KIO::SimpleJob *job = KIO::listDir(url, FALSE);
+ open();
KIO::Scheduler::assignJobToSlave(mAccount->slave(), job);
ImapAccountBase::jobData jd( url.url(), folder() );
jd.cancellable = true;
@@ -1218,6 +1215,7 @@
KIO::Scheduler::assignJobToSlave(mAccount->slave(), newJob);
ImapAccountBase::jobData jd( url.url(), folder() );
jd.cancellable = true;
+ open();
mAccount->insertJob(newJob, jd);
connect(newJob, SIGNAL(result(KIO::Job *)),
this, SLOT(slotGetLastMessagesResult(KIO::Job *)));
@@ -1310,6 +1308,9 @@
else sets = makeSets( (*it).items );
mAccount->removeJob(it); // don't use *it below
+ if ( sets.isEmpty() )
+ close();
+
// Now kick off the getting of envelopes for the new mails in the folder
for (QStringList::Iterator i = sets.begin(); i != sets.end(); ++i)
{
@@ -1812,6 +1813,7 @@
void KMFolderImap::setStatus(QValueList<int>& ids, KMMsgStatus status, bool toggle)
{
+ open();
FolderStorage::setStatus(ids, status, toggle);
if (mReadOnly) return;
@@ -1855,6 +1857,7 @@
quiet( false );
reallyGetFolder( QString::null );
}
+ close();
}
//-----------------------------------------------------------------------------
--- kmail/kmheaders.cpp 2007/01/05 18:17:45 620346
+++ kmail/kmheaders.cpp 2007/03/21 06:57:39 644873
@@ -15,6 +15,7 @@
#include "kmmsgdict.h"
#include "kmdebug.h"
#include "kmfoldertree.h"
+#include "kmfolderimap.h"
#include "folderjob.h"
using KMail::FolderJob;
#include "actionscheduler.h"
@@ -215,6 +216,11 @@
{
writeFolderConfig();
writeSortOrder();
+ if (mFolder->folderType() == KMFolderTypeImap)
+ {
+ KMFolderImap *imap = static_cast<KMFolderImap*>(mFolder->storage());
+ imap->setSelected( false );
+ }
mFolder->close();
}
writeConfig();
--- kmail/kmmainwidget.cpp 2007/03/20 20:20:57 644741
+++ kmail/kmmainwidget.cpp 2007/03/21 06:57:39 644873
@@ -164,6 +164,7 @@
mJob = 0;
mConfig = config;
mGUIClient = aGUIClient;
+ mOpenedImapFolder = false;
mCustomReplyActionMenu = 0;
mCustomReplyAllActionMenu = 0;
@@ -1875,8 +1876,11 @@
folderSelected( mFolder );
updateFolderMenu();
// opened() before the getAndCheckFolder() in folderSelected
- if ( mFolder && mFolder->folderType() == KMFolderTypeImap )
+ if ( mFolder && mFolder->folderType() == KMFolderTypeImap && mOpenedImapFolder )
+ {
mFolder->close();
+ mOpenedImapFolder = false;
+ }
}
//-----------------------------------------------------------------------------
@@ -1930,6 +1934,12 @@
this, SLOT( updateMarkAsReadAction() ) );
disconnect( mFolder, SIGNAL( msgRemoved( KMFolder * ) ),
this, SLOT( updateMarkAsReadAction() ) );
+ if ( mOpenedImapFolder && newFolder && mFolder->folderType() == KMFolderTypeImap ) {
+ mFolder->close();
+ KMFolderImap *imap = static_cast<KMFolderImap*>(mFolder->storage());
+ imap->setSelected( false );
+ mOpenedImapFolder = false;
+ }
}
mFolder = aFolder;
@@ -1944,6 +1954,7 @@
if ( newFolder && !mFolder->noContent() )
{
imap->open(); // will be closed in the folderSelected slot
+ mOpenedImapFolder = true;
// first get new headers before we select the folder
imap->setSelected( true );
connect( imap, SIGNAL( folderComplete( KMFolderImap*, bool ) ),
--- kmail/kmmainwidget.h 2006/12/16 03:44:17 614049
+++ kmail/kmmainwidget.h 2007/03/21 06:57:39 644873
@@ -531,6 +531,7 @@
KXMLGUIClient *mGUIClient;
static QValueList<KMMainWidget*>* s_mainWidgetList;
+ bool mOpenedImapFolder;
};
#endif