diff --git a/headers/private/app/MessagePrivate.h b/headers/private/app/MessagePrivate.h index 2d51270aaf..be1ae2aff0 100644 --- a/headers/private/app/MessagePrivate.h +++ b/headers/private/app/MessagePrivate.h @@ -26,6 +26,14 @@ class BMessage::Private { fMessage->fPreferred = token == B_PREFERRED_TOKEN; } + inline void SetReply(team_id team, port_id port, int32 token) + { + fMessage->fReplyTo.port = port; + fMessage->fReplyTo.target = token; + fMessage->fReplyTo.team = team; + fMessage->fReplyTo.preferred = token == B_PREFERRED_TOKEN; + } + inline void SetReply(BMessenger messenger) { BMessenger::Private mp(messenger); diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index 5da3f341ac..435f9f1e28 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -2171,9 +2172,14 @@ convert_message(const KMessage *fromMessage, BMessage *toMessage) if (!fromMessage || !toMessage) return B_BAD_VALUE; - // make empty and init what of the target message + // make empty and init the header of the target message toMessage->MakeEmpty(); toMessage->what = fromMessage->What(); + + BMessage::Private toPrivate(toMessage); + toPrivate.SetTarget(fromMessage->TargetToken()); + toPrivate.SetReply(B_SYSTEM_TEAM, fromMessage->ReplyPort(), + fromMessage->ReplyToken()); // iterate through the fields and import them in the target message KMessageField field;