(work in progress) low task EXT-6377 - Embedded offer panels aren't reshaped by height on IM window resize

Added new Toast panel class for use in IM floater. New class handles IM floater reshape and updates Toast height.

--HG--
branch : product-engine
master
Dmitry Zaporozhan 2010-03-17 13:26:34 +02:00
parent a85497f598
commit b2cc39d462
3 changed files with 34 additions and 3 deletions

View File

@ -734,7 +734,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId);
if (notification != NULL)
{
LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(
LLIMToastNotifyPanel* notify_box = new LLIMToastNotifyPanel(
notification);
//we can't set follows in xml since it broke toasts behavior
notify_box->setFollowsLeft();

View File

@ -526,4 +526,28 @@ void LLToastNotifyPanel::disableRespondedOptions(LLNotificationPtr& notification
}
}
//////////////////////////////////////////////////////////////////////////
#include "llscrollcontainer.h"
LLIMToastNotifyPanel::LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLRect& rect /* = LLRect::null */)
: LLToastNotifyPanel(pNotification, rect)
{
mTextBox->setFollowsAll();
}
void LLIMToastNotifyPanel::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */)
{
S32 text_height = mTextBox->getTextBoundingRect().getHeight();
S32 widget_height = mTextBox->getRect().getHeight();
S32 delta = text_height - widget_height;
LLRect rc = getRect();
rc.setLeftTopAndSize(rc.mLeft, rc.mTop, width, height + delta);
height = rc.getHeight();
width = rc.getWidth();
LLToastPanel::reshape(width, height, called_from_parent);
}
// EOF

View File

@ -79,8 +79,6 @@ protected:
bool mCloseNotificationOnDestroy;
private:
typedef std::pair<int,LLButton*> index_button_pair_t;
void adjustPanelForScriptNotice(S32 max_width, S32 max_height);
void adjustPanelForTipNotice();
@ -136,4 +134,13 @@ private:
static const LLFontGL* sFontSmall;
};
class LLIMToastNotifyPanel : public LLToastNotifyPanel
{
public:
LLIMToastNotifyPanel(LLNotificationPtr& pNotification, const LLRect& rect = LLRect::null);
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
};
#endif /* LLTOASTNOTIFYPANEL_H_ */