Index: haiku/src/apps/mail/MailWindow.cpp =================================================================== --- haiku/src/apps/mail/MailWindow.cpp (revision 41262) +++ haiku/src/apps/mail/MailWindow.cpp (working copy) @@ -2545,6 +2545,18 @@ WriteAttrString(&draft, B_MAIL_ATTR_CC, fHeaderView->fCc->Text()); if (fHeaderView->fBcc != NULL) WriteAttrString(&draft, B_MAIL_ATTR_BCC, fHeaderView->fBcc->Text()); + + // Add account + //BMenuItem* accountItem = fHeaderView->fAccountMenu->FindMarked(); + //WriteAttrString(&draft, B_MAIL_ATTR_ACCOUNT, accountItem->Label()); + WriteAttrString(&draft, B_MAIL_ATTR_ACCOUNT, + fHeaderView->fAccountMenu->FindMarked()->Label()); + + // Add encoding + //BMenuItem* encodingItem = fHeaderView->fEncodingMenu->FindMarked(); + //WriteAttrString(&draft, "MAIL:encoding", encodingItem->Label()); + WriteAttrString(&draft, "MAIL:encoding", + fHeaderView->fEncodingMenu->FindMarked()->Label()); // Add the draft attribute for indexing uint32 draftAttr = true; @@ -2785,7 +2797,21 @@ fHeaderView->fCc->SetText(string.String()); if (node.ReadAttrString(B_MAIL_ATTR_BCC, &string) == B_OK) fHeaderView->fBcc->SetText(string.String()); - + + // Restore account + if (node.ReadAttrString(B_MAIL_ATTR_ACCOUNT, &string) == B_OK) { + BMenuItem* accountItem = fHeaderView->fAccountMenu->FindItem(string.String()); + if (accountItem != NULL) + accountItem->SetMarked(true); + } + + // Restore encoding + if (node.ReadAttrString("MAIL:encoding", &string) == B_OK) { + BMenuItem* encodingItem = fHeaderView->fEncodingMenu->FindItem(string.String()); + if (encodingItem != NULL) + encodingItem->SetMarked(true); + } + // Restore attachments if (node.ReadAttrString("MAIL:attachments", &string) == B_OK) { BMessage msg(REFS_RECEIVED); Index: haiku/src/apps/mail/Header.cpp =================================================================== --- haiku/src/apps/mail/Header.cpp (revision 41262) +++ haiku/src/apps/mail/Header.cpp (working copy) @@ -640,6 +653,13 @@ int32 account; if (msg->FindInt32("id",(int32 *)&account) >= B_OK) fAccountID = account; + + BMessage message(FIELD_CHANGED); + // field doesn't matter; no special processing for this field + // it's just to turn on the save button + message.AddInt32("bitmask", 0); + Window()->PostMessage(&message, Window()); + break; } @@ -654,6 +674,13 @@ message.what = CHARSET_CHOICE_MADE; message.AddInt32 ("charset", fCharacterSetUserSees); Window()->PostMessage (&message, Window()); + + BMessage message2(FIELD_CHANGED); + // field doesn't matter; no special processing for this field + // it's just to turn on the save button + message2.AddInt32("bitmask", 0); + Window()->PostMessage(&message2, Window()); + break; } }