Removed annoying flicker of the message list when one message is deleted/moved.

svn path=/trunk/kdenetwork/kmail/; revision=3103
wilder-work
Stefan Taferner 29 years ago
parent 7af173becb
commit 76150ea8be
  1. 42
      kmheaders.cpp
  2. 5
      kmheaders.h

@ -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();

@ -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);

Loading…
Cancel
Save