diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp
index 987651fc80..397a9ff1e4 100644
--- a/indra/newview/llchannelmanager.cpp
+++ b/indra/newview/llchannelmanager.cpp
@@ -74,7 +74,18 @@ LLScreenChannel* LLChannelManager::createNotificationChannel()
LLScreenChannelBase::Params p;
p.id = LLUUID(gSavedSettings.getString("NotificationChannelUUID"));
p.channel_align = CA_RIGHT;
- p.toast_align = NA_TOP;
+ // Group notices, IMs and chiclets position
+ //p.toast_align = NA_TOP;
+ if (gSavedSettings.getBOOL("ShowGroupNoticesTopRight"))
+ {
+ p.toast_align = NA_TOP;
+ }
+ else
+ {
+ p.toast_align = NA_BOTTOM;
+ }
+ // Group notices, IMs and chiclets position
+
// Getting a Channel for our notifications
return dynamic_cast (LLChannelManager::getInstance()->getChannel(p));
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index 7a9fcd4cbc..2185e94613 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -64,6 +64,18 @@ LLRect LLScreenChannelBase::getChannelRect()
if (mChicletRegion == NULL)
{
mChicletRegion = gViewerWindow->getRootView()->getChildView("chiclet_container");
+ // Group notices, IMs and chiclets position:
+ // Move the chiclet container to the bottom of its parent
+ // and follow bottom instead of top
+ if (!gSavedSettings.getBOOL("ShowGroupNoticesTopRight"))
+ {
+ LLRect parent_rect = mChicletRegion->getParent()->getRect();
+ LLRect chiclet_rect = mChicletRegion->getRect();
+ chiclet_rect = chiclet_rect.set(chiclet_rect.mLeft, parent_rect.mBottom - chiclet_rect.getHeight() - 1, chiclet_rect.mRight, parent_rect.mBottom - 1);
+ mChicletRegion->setRect(chiclet_rect);
+ mChicletRegion->setFollows((mChicletRegion->getFollows() & ~FOLLOWS_TOP) | FOLLOWS_BOTTOM);
+ }
+ // Group notices, IMs and chiclets position
}
LLRect channel_rect;
@@ -72,7 +84,18 @@ LLRect LLScreenChannelBase::getChannelRect()
mFloaterSnapRegion->localRectToScreen(mFloaterSnapRegion->getLocalRect(), &channel_rect);
mChicletRegion->localRectToScreen(mChicletRegion->getLocalRect(), &chiclet_rect);
- channel_rect.mTop = chiclet_rect.mBottom;
+ // Group notices, IMs and chiclets position
+ //channel_rect.mTop = chiclet_rect.mBottom;
+ if (gSavedSettings.getBOOL("ShowGroupNoticesTopRight"))
+ {
+ channel_rect.mTop = chiclet_rect.mBottom;
+ }
+ else
+ {
+ // Apparently not needed at the moment - pushes the toasts up too high
+ //channel_rect.mBottom = chiclet_rect.mTop;
+ }
+ // Group notices, IMs and chiclets position
return channel_rect;
}
@@ -96,9 +119,6 @@ LLScreenChannelBase::LLScreenChannelBase(const Params& p)
mFloaterSnapRegion(NULL),
mChicletRegion(NULL)
{
- if(gSavedSettings.getBOOL("ShowGroupNoticesTopRight"))
- mToastAlignment = NA_TOP;
-
mID = p.id;
setMouseOpaque( false );
diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp
index ee36398c68..b85bd6d870 100644
--- a/indra/newview/llscriptfloater.cpp
+++ b/indra/newview/llscriptfloater.cpp
@@ -350,9 +350,20 @@ void LLScriptFloater::dockToChiclet(bool dock)
bool save = getSavePosition();
setSavePosition(false);
- setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
- LLDockControl::BOTTOM));
-
+ // Group notices, IMs and chiclets position
+ //setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
+ // LLDockControl::BOTTOM));
+ if (gSavedSettings.getBOOL("ShowGroupNoticesTopRight"))
+ {
+ setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
+ LLDockControl::BOTTOM));
+ }
+ else
+ {
+ setDockControl(new LLDockControl(chiclet, this, getDockTongue(),
+ LLDockControl::TOP));
+ }
+ // Group notices, IMs and chiclets position
setDocked(dock);
// Restore saving