Transplant "MAINT-8498 Fixed item offers not appearing after friednship offer" and missing fix "MAINT-2575 FIXED Resident can accept unlimited number of friendship requests if they were sent before his first accept"

meow-7.2.2
Ansariel 2018-05-01 18:53:43 +02:00
parent 7e7984fcfd
commit 780c14fcaa
1 changed files with 40 additions and 14 deletions

View File

@ -54,6 +54,7 @@
#include "llstylemap.h"
#include "llslurl.h"
#include "lllayoutstack.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "lltoastnotifypanel.h"
#include "lltooltip.h"
@ -1536,22 +1537,47 @@ void FSChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
if (notification != NULL)
{
LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
notification, chat.mSessionID, LLRect::null, true, this);
bool create_toast = true;
if (notification->getName() == "OfferFriendship")
{
// We don't want multiple friendship offers to appear, this code checks if there are previous offers
// by iterating though all panels.
// Note: it might be better to simply add a "pending offer" flag somewhere
for (LLToastNotifyPanel::instance_iter ti(LLToastNotifyPanel::beginInstances())
, tend(LLToastNotifyPanel::endInstances()); ti != tend; ++ti)
{
LLToastNotifyPanel& panel = *ti;
LLIMToastNotifyPanel * imtoastp = dynamic_cast<LLIMToastNotifyPanel *>(&panel);
const std::string& notification_name = panel.getNotificationName();
if (notification_name == "OfferFriendship"
&& panel.isControlPanelEnabled()
&& imtoastp)
{
create_toast = false;
break;
}
}
}
//Prepare the rect for the view
LLRect target_rect = getDocumentView()->getRect(); // <FS:Zi> FIRE-8600: TAB out of chat history
// squeeze down the widget by subtracting padding off left and right
target_rect.mLeft += mLeftWidgetPad + getHPad(); // <FS:Zi> FIRE-8600: TAB out of chat history
target_rect.mRight -= mRightWidgetPad;
notify_box->reshape(target_rect.getWidth(), notify_box->getRect().getHeight());
notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
if (create_toast)
{
LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
notification, chat.mSessionID, LLRect::null, true, this);
LLInlineViewSegment::Params params;
params.view = notify_box;
params.left_pad = mLeftWidgetPad;
params.right_pad = mRightWidgetPad;
appendWidget(params, "\n", false); // <FS:Zi> FIRE-8600: TAB out of chat history
//Prepare the rect for the view
LLRect target_rect = getDocumentView()->getRect();
// squeeze down the widget by subtracting padding off left and right
target_rect.mLeft += mLeftWidgetPad + getHPad();
target_rect.mRight -= mRightWidgetPad;
notify_box->reshape(target_rect.getWidth(), notify_box->getRect().getHeight());
notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom);
LLInlineViewSegment::Params params;
params.view = notify_box;
params.left_pad = mLeftWidgetPad;
params.right_pad = mRightWidgetPad;
appendWidget(params, "\n", false);
}
}
}