From 76150ea8be2253798ccb3c915db99dac270d50d3 Mon Sep 17 00:00:00 2001 From: Stefan Taferner Date: Wed, 26 Nov 1997 19:24:39 +0000 Subject: [PATCH] Removed annoying flicker of the message list when one message is deleted/moved. svn path=/trunk/kdenetwork/kmail/; revision=3103 --- kmheaders.cpp | 42 +++++++++++++++++++----------------------- kmheaders.h | 5 ++++- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/kmheaders.cpp b/kmheaders.cpp index 9e914ee65..59f9deb01 100644 --- a/kmheaders.cpp +++ b/kmheaders.cpp @@ -187,10 +187,6 @@ void KMHeaders::setMsgStatus (KMMsgStatus status, int msgId) //----------------------------------------------------------------------------- void KMHeaders::deleteMsg (int msgId) { - KMMessage* msg; - KMMessageList* msgList; - int cur = currentItem(); - if (mFolder != trashFolder) { // move messages into trash folder @@ -199,18 +195,7 @@ void KMHeaders::deleteMsg (int msgId) else { // We are in the trash folder -> really delete messages - kbp->busy(); - setAutoUpdate(FALSE); - msgList = selectedMsgs(); - for (msg=msgList->first(); msg; msg=msgList->next()) - { - mFolder->removeMsg(msg); - delete msg; - } - setAutoUpdate(TRUE); - updateMessageList(); - setCurrentMsg(cur); - kbp->idle(); + moveMsgToFolder(NULL, msgId); } } @@ -292,22 +277,33 @@ void KMHeaders::moveMsgToFolder (KMFolder* destFolder, int msgId) KMMessageList* msgList; KMMessage* msg; int top, rc, cur = currentItem(); - - assert(destFolder != NULL); + bool doUpd; kbp->busy(); - setAutoUpdate(FALSE); top = topItem(); destFolder->open(); msgList = selectedMsgs(msgId); + doUpd = (msgList->count() > 1); + if (doUpd) setAutoUpdate(FALSE); for (rc=0, msg=msgList->first(); msg && !rc; msg=msgList->next()) - rc = destFolder->moveMsg(msg); + { + if (destFolder) rc = destFolder->moveMsg(msg); + else + { + if (!doUpd) removeItem(cur); + mFolder->removeMsg(msg); + delete msg; + } + } - setAutoUpdate(TRUE); - updateMessageList(); - setTopItem(top); + if (doUpd) + { + setAutoUpdate(TRUE); + updateMessageList(); + } setCurrentMsg(cur); + setTopItem(top); destFolder->close(); kbp->idle(); diff --git a/kmheaders.h b/kmheaders.h index b6f94218e..40a59ea6b 100644 --- a/kmheaders.h +++ b/kmheaders.h @@ -39,9 +39,12 @@ public: virtual void forwardMsg(int msgId=-1); virtual void replyToMsg(int msgId=-1); virtual void replyAllToMsg(int msgId=-1); - virtual void moveMsgToFolder(KMFolder* destination, int msgId=-1); virtual void saveMsg(int msgId=-1); + /** If destination==NULL the messages are deleted, otherwise + they are moved to this folder. */ + virtual void moveMsgToFolder(KMFolder* destination, int msgId=-1); + /** Returns list of selected messages or a list with the message with the given Id if msgId >= 0. Do not delete the returned list. */ virtual KMMessageList* selectedMsgs(int msgId=-1);