Pull merge from lindenlab/viewer-chui
commit
22bc40ad60
|
|
@ -31,7 +31,6 @@
|
|||
|
||||
LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
|
||||
const LLUIImagePtr& dockTongue, DocAt dockAt, get_allowed_rect_callback_t get_allowed_rect_callback) :
|
||||
mDockWidget(dockWidget),
|
||||
mDockableFloater(dockableFloater),
|
||||
mDockTongue(dockTongue),
|
||||
mDockTongueX(0),
|
||||
|
|
@ -39,6 +38,11 @@ LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
|
|||
{
|
||||
mDockAt = dockAt;
|
||||
|
||||
if (dockWidget != NULL)
|
||||
{
|
||||
mDockWidgetHandle = dockWidget->getHandle();
|
||||
}
|
||||
|
||||
if (dockableFloater->isDocked())
|
||||
{
|
||||
on();
|
||||
|
|
@ -62,7 +66,7 @@ LLDockControl::LLDockControl(LLView* dockWidget, LLFloater* dockableFloater,
|
|||
repositionDockable();
|
||||
}
|
||||
|
||||
if (mDockWidget != NULL)
|
||||
if (getDock() != NULL)
|
||||
{
|
||||
mDockWidgetVisible = isDockVisible();
|
||||
}
|
||||
|
|
@ -78,14 +82,15 @@ LLDockControl::~LLDockControl()
|
|||
|
||||
void LLDockControl::setDock(LLView* dockWidget)
|
||||
{
|
||||
mDockWidget = dockWidget;
|
||||
if (mDockWidget != NULL)
|
||||
if (dockWidget != NULL)
|
||||
{
|
||||
mDockWidgetHandle = dockWidget->getHandle();
|
||||
repositionDockable();
|
||||
mDockWidgetVisible = isDockVisible();
|
||||
}
|
||||
else
|
||||
{
|
||||
mDockWidgetHandle = LLHandle<LLView>();
|
||||
mDockWidgetVisible = false;
|
||||
}
|
||||
}
|
||||
|
|
@ -97,8 +102,8 @@ void LLDockControl::getAllowedRect(LLRect& rect)
|
|||
|
||||
void LLDockControl::repositionDockable()
|
||||
{
|
||||
if (!mDockWidget) return;
|
||||
LLRect dockRect = mDockWidget->calcScreenRect();
|
||||
if (!getDock()) return;
|
||||
LLRect dockRect = getDock()->calcScreenRect();
|
||||
LLRect rootRect;
|
||||
LLRect floater_rect = mDockableFloater->calcScreenRect();
|
||||
mGetAllowedRectCallback(rootRect);
|
||||
|
|
@ -150,13 +155,13 @@ bool LLDockControl::isDockVisible()
|
|||
{
|
||||
bool res = true;
|
||||
|
||||
if (mDockWidget != NULL)
|
||||
if (getDock() != NULL)
|
||||
{
|
||||
//we should check all hierarchy
|
||||
res = mDockWidget->isInVisibleChain();
|
||||
res = getDock()->isInVisibleChain();
|
||||
if (res)
|
||||
{
|
||||
LLRect dockRect = mDockWidget->calcScreenRect();
|
||||
LLRect dockRect = getDock()->calcScreenRect();
|
||||
|
||||
switch (mDockAt)
|
||||
{
|
||||
|
|
@ -169,7 +174,7 @@ bool LLDockControl::isDockVisible()
|
|||
// assume that parent for all dockable floaters
|
||||
// is the root view
|
||||
LLRect dockParentRect =
|
||||
mDockWidget->getRootView()->calcScreenRect();
|
||||
getDock()->getRootView()->calcScreenRect();
|
||||
if (dockRect.mRight <= dockParentRect.mLeft
|
||||
|| dockRect.mLeft >= dockParentRect.mRight)
|
||||
{
|
||||
|
|
@ -189,7 +194,7 @@ bool LLDockControl::isDockVisible()
|
|||
void LLDockControl::moveDockable()
|
||||
{
|
||||
// calculate new dockable position
|
||||
LLRect dockRect = mDockWidget->calcScreenRect();
|
||||
LLRect dockRect = getDock()->calcScreenRect();
|
||||
LLRect rootRect;
|
||||
mGetAllowedRectCallback(rootRect);
|
||||
|
||||
|
|
@ -263,7 +268,7 @@ void LLDockControl::moveDockable()
|
|||
|
||||
|
||||
// calculate dock tongue position
|
||||
dockParentRect = mDockWidget->getParent()->calcScreenRect();
|
||||
dockParentRect = getDock()->getParent()->calcScreenRect();
|
||||
if (dockRect.getCenterX() < dockParentRect.mLeft)
|
||||
{
|
||||
mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
|
||||
|
|
@ -299,7 +304,7 @@ void LLDockControl::moveDockable()
|
|||
}
|
||||
|
||||
// calculate dock tongue position
|
||||
dockParentRect = mDockWidget->getParent()->calcScreenRect();
|
||||
dockParentRect = getDock()->getParent()->calcScreenRect();
|
||||
if (dockRect.getCenterX() < dockParentRect.mLeft)
|
||||
{
|
||||
mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2;
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public:
|
|||
void setDock(LLView* dockWidget);
|
||||
LLView* getDock()
|
||||
{
|
||||
return mDockWidget;
|
||||
return mDockWidgetHandle.get();
|
||||
}
|
||||
void repositionDockable();
|
||||
void drawToungue();
|
||||
|
|
@ -83,7 +83,7 @@ private:
|
|||
bool mRecalculateDockablePosition;
|
||||
bool mDockWidgetVisible;
|
||||
DocAt mDockAt;
|
||||
LLView* mDockWidget;
|
||||
LLHandle<LLView> mDockWidgetHandle;
|
||||
LLRect mPrevDockRect;
|
||||
LLRect mRootRect;
|
||||
LLRect mFloaterRect;
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ void process_dnd_im(const LLSD& notification)
|
|||
{
|
||||
LLSD data = notification["substitutions"];
|
||||
LLUUID sessionID = data["SESSION_ID"].asUUID();
|
||||
LLUUID fromID = data["FROM_ID"].asUUID();
|
||||
|
||||
//re-create the IM session if needed
|
||||
//(when coming out of DND mode upon app restart)
|
||||
|
|
@ -119,14 +120,22 @@ void process_dnd_im(const LLSD& notification)
|
|||
{
|
||||
name = av_name.getDisplayName();
|
||||
}
|
||||
|
||||
|
||||
|
||||
LLIMModel::getInstance()->newSession(sessionID,
|
||||
name,
|
||||
IM_NOTHING_SPECIAL,
|
||||
data["FROM_ID"],
|
||||
fromID,
|
||||
false,
|
||||
false); //will need slight refactor to retrieve whether offline message or not (assume online for now)
|
||||
|
||||
LLFloaterIMContainer* im_box = LLFloaterReg::getTypedInstance<LLFloaterIMContainer>("im_container");
|
||||
|
||||
if (im_box)
|
||||
{
|
||||
im_box->flashConversationItemWidget(sessionID, true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ void LLPersistentNotificationStorage::saveNotifications()
|
|||
continue;
|
||||
}
|
||||
|
||||
data.append(notification->asLLSD());
|
||||
data.append(notification->asLLSD(true));
|
||||
}
|
||||
|
||||
writeNotifications(output);
|
||||
|
|
|
|||
Loading…
Reference in New Issue