diff options
author | Roxie Linden <roxie@lindenlab.com> | 2010-02-25 01:34:52 -0800 |
---|---|---|
committer | Roxie Linden <roxie@lindenlab.com> | 2010-02-25 01:34:52 -0800 |
commit | c6163fafaac9c72683b11894ed309d1f55a745c8 (patch) | |
tree | 612be60185cbea598bdf907f045c9fc29fb40a2c /indra/newview/llscreenchannel.cpp | |
parent | 0bf246ed663ad11d316fe7898a3fee3f57676d4b (diff) | |
parent | 82de841c52357642d30b6d89b11da079f9c0f5d1 (diff) |
automated merge
Diffstat (limited to 'indra/newview/llscreenchannel.cpp')
-rw-r--r-- | indra/newview/llscreenchannel.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index 027f3daffb..a00b6a9288 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -47,6 +47,7 @@ #include "llsyswellwindow.h" #include "llimfloater.h" #include "llscriptfloater.h" +#include "llfontgl.h" #include <algorithm> @@ -250,6 +251,13 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast) { mToastList.erase(it); } + + it = find(mStoredToastList.begin(), mStoredToastList.end(), static_cast<LLPanel*>(toast)); + + if(it != mStoredToastList.end()) + { + mStoredToastList.erase(it); + } } @@ -279,6 +287,11 @@ void LLScreenChannel::onToastFade(LLToast* toast) //-------------------------------------------------------------------------- void LLScreenChannel::deleteToast(LLToast* toast) { + if (toast->isDead()) + { + return; + } + // send signal to observers about destroying of a toast toast->mOnDeleteToastSignal(toast); @@ -556,6 +569,7 @@ void LLScreenChannel::showToastsTop() void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer) { LLRect toast_rect; + LLRect tbox_rect; LLToast::Params p; p.lifetime_secs = timer; p.enable_hide_btn = false; @@ -570,9 +584,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer) std::string text = LLTrans::getString("StartUpNotifications"); + tbox_rect = text_box->getRect(); + S32 tbox_width = tbox_rect.getWidth(); + S32 tbox_vpad = text_box->getVPad(); + S32 text_width = text_box->getDefaultFont()->getWidth(text); + S32 text_height = text_box->getTextPixelHeight(); + + // EXT - 3703 (Startup toast message doesn't fit toast width) + // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox. + S32 new_tbox_height = (text_width/tbox_width + 1) * text_height; + // Calculating TOP position of TextBox + S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap"); + // Calculating toast HEIGHT according to the new TextBox size + S32 toast_height = new_tbox_height + tbox_vpad * 2; + + tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height); + text_box->setRect(tbox_rect); + toast_rect = mStartUpToastPanel->getRect(); mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true); - toast_rect.setLeftTopAndSize(0, toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight()); + toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height); mStartUpToastPanel->setRect(toast_rect); text_box->setValue(text); |