Merge SVN commit 677090 by vkrause from enterprise branch:

No more invalid reads while deleting/moving folders.

svn path=/trunk/KDE/kdepim/; revision=689818
wilder-work
Volker Krause 19 years ago
parent 5d54c12e03
commit ce537eedc0
  1. 5
      kmfoldermgr.cpp
  2. 4
      kmfoldertree.cpp
  3. 4
      kmmainwidget.cpp
  4. 3
      kmmainwidget.h

@ -356,13 +356,16 @@ void KMFolderMgr::removeFolderAux(KMFolder* aFolder, bool success)
break;
}
}
aFolder->parent()->removeAll(aFolder);
// find the parent folder by stripping "." and ".directory" from the name
QString parentName = fdir->name();
parentName = parentName.mid( 1, parentName.length()-11 );
KMFolderNode* parent = fdir->hasNamedFolder( parentName );
if ( !parent && fdir->parent() ) // dimap obviously has a different structure
parent = fdir->parent()->hasNamedFolder( parentName );
// aFolder will be deleted by the next call!
aFolder->parent()->removeAll(aFolder);
// update the children state
if ( parent )
static_cast<KMFolder*>(parent)->storage()->updateChildrenState();

@ -796,6 +796,10 @@ void KMFolderTree::slotFolderRemoved(KMFolder *aFolder)
{
KMFolderTreeItem *fti = static_cast<KMFolderTreeItem*>
(indexOfFolder(aFolder));
if ( oldCurrent == fti )
oldCurrent = 0;
if ( oldSelected == fti )
oldSelected = 0;
if (!fti || !fti->folder()) return;
if (fti == currentItem())
{

@ -1980,7 +1980,7 @@ void KMMainWidget::folderSelected( KMFolder* aFolder, bool forceJumpToUnread )
// when the new folder is also an IMAP folder, because that's an
// async operation and we don't want flicker if it results in just
// a new splash.
bool newFolder = ( mFolder != aFolder );
bool newFolder = ( (KMFolder*)mFolder != aFolder );
bool isNewImapFolder = aFolder && aFolder->folderType() == KMFolderTypeImap && newFolder;
if( !mFolder
|| ( !isNewImapFolder && mShowBusySplashTimer )
@ -3629,7 +3629,7 @@ void KMMainWidget::updateMessageActions()
if(!(msg = mFolder->getMsg(aIdx)))
return;
if (mFolder == kmkernel->outboxFolder())
if ((KMFolder*)mFolder == kmkernel->outboxFolder())
mEditAction->setEnabled( !msg->transferInProgress() );
}

@ -37,6 +37,7 @@
#include <q3listview.h>
#include <QMenu>
#include <QHash>
#include <QPointer>
class Q3Accel;
class QVBoxLayout;
@ -504,7 +505,7 @@ class KMAIL_EXPORT KMMainWidget : public QWidget
KVBox *mSearchAndHeaders;
QToolBar *mSearchToolBar;
KMail::HeaderListQuickSearch *mQuickSearchLine;
KMFolder *mFolder;
QPointer<KMFolder> mFolder;
KMFolder *mTemplateFolder;
QMenu *mViewMenu, *mBodyPartsMenu;
KAction *mlistFilterAction;

Loading…
Cancel
Save