Skip to content
Snippets Groups Projects
Commit cc345710 authored by Kent Quirk's avatar Kent Quirk
Browse files

Merge

parents b159a961 10d9328b
No related branches found
No related tags found
No related merge requests found
...@@ -46,9 +46,6 @@ viewer-beta.viewer_channel = "Second Life Beta Viewer" ...@@ -46,9 +46,6 @@ viewer-beta.viewer_channel = "Second Life Beta Viewer"
viewer-beta.login_channel = "Second Life Beta Viewer" viewer-beta.login_channel = "Second Life Beta Viewer"
viewer-beta.build_debug_release_separately = true viewer-beta.build_debug_release_separately = true
viewer-beta.build_viewer_update_version_manager = true viewer-beta.build_viewer_update_version_manager = true
# Settings to test new code ticket service
viewer-beta.codeticket_server_url = "http://pdp75.lindenlab.com:8000/codeticket/linden/"
viewer-beta.codeticket_add_context = true
# ======================================== # ========================================
# Viewer Release # Viewer Release
......
...@@ -114,11 +114,109 @@ class LLAgentHandler : public LLCommandHandler ...@@ -114,11 +114,109 @@ class LLAgentHandler : public LLCommandHandler
LLAgentHandler gAgentHandler; LLAgentHandler gAgentHandler;
//-- LLPanelProfile::ChildStack begins ----------------------------------------
LLPanelProfile::ChildStack::ChildStack()
: mParent(NULL)
{
}
void LLPanelProfile::ChildStack::setParent(LLPanel* parent)
{
llassert_always(parent != NULL);
mParent = parent;
}
/// Save current parent's child views and remove them from the child list.
bool LLPanelProfile::ChildStack::push()
{
view_list_t vlist = *mParent->getChildList();
for (view_list_t::const_iterator it = vlist.begin(); it != vlist.end(); ++it)
{
LLView* viewp = *it;
mParent->removeChild(viewp);
}
mStack.push_back(vlist);
dump();
return true;
}
/// Restore saved children (adding them back to the child list).
bool LLPanelProfile::ChildStack::pop()
{
if (mStack.size() == 0)
{
llwarns << "Empty stack" << llendl;
llassert(mStack.size() == 0);
return false;
}
view_list_t& top = mStack.back();
for (view_list_t::const_iterator it = top.begin(); it != top.end(); ++it)
{
LLView* viewp = *it;
mParent->addChild(viewp);
}
mStack.pop_back();
dump();
return true;
}
/// Temporarily add all saved children back.
void LLPanelProfile::ChildStack::preParentReshape()
{
mSavedStack = mStack;
while(mStack.size() > 0)
{
pop();
}
}
/// Add the temporarily saved children back.
void LLPanelProfile::ChildStack::postParentReshape()
{
mStack = mSavedStack;
mSavedStack = stack_t();
for (stack_t::const_iterator stack_it = mStack.begin(); stack_it != mStack.end(); ++stack_it)
{
const view_list_t& vlist = (*stack_it);
for (view_list_t::const_iterator list_it = vlist.begin(); list_it != vlist.end(); ++list_it)
{
LLView* viewp = *list_it;
lldebugs << "removing " << viewp->getName() << llendl;
mParent->removeChild(viewp);
}
}
}
void LLPanelProfile::ChildStack::dump()
{
unsigned lvl = 0;
lldebugs << "child stack dump:" << llendl;
for (stack_t::const_iterator stack_it = mStack.begin(); stack_it != mStack.end(); ++stack_it, ++lvl)
{
std::ostringstream dbg_line;
dbg_line << "lvl #" << lvl << ":";
const view_list_t& vlist = (*stack_it);
for (view_list_t::const_iterator list_it = vlist.begin(); list_it != vlist.end(); ++list_it)
{
dbg_line << " " << (*list_it)->getName();
}
lldebugs << dbg_line.str() << llendl;
}
}
//-- LLPanelProfile::ChildStack ends ------------------------------------------
LLPanelProfile::LLPanelProfile() LLPanelProfile::LLPanelProfile()
: LLPanel() : LLPanel()
, mTabCtrl(NULL) , mTabCtrl(NULL)
, mAvatarId(LLUUID::null) , mAvatarId(LLUUID::null)
{ {
mChildStack.setParent(this);
} }
BOOL LLPanelProfile::postBuild() BOOL LLPanelProfile::postBuild()
...@@ -136,6 +234,15 @@ BOOL LLPanelProfile::postBuild() ...@@ -136,6 +234,15 @@ BOOL LLPanelProfile::postBuild()
return TRUE; return TRUE;
} }
// virtual
void LLPanelProfile::reshape(S32 width, S32 height, BOOL called_from_parent)
{
// Temporarily add saved children back and reshape them.
mChildStack.preParentReshape();
LLPanel::reshape(width, height, called_from_parent);
mChildStack.postParentReshape();
}
void LLPanelProfile::onOpen(const LLSD& key) void LLPanelProfile::onOpen(const LLSD& key)
{ {
// open the desired panel // open the desired panel
...@@ -177,7 +284,6 @@ void LLPanelProfile::onOpen(const LLSD& key) ...@@ -177,7 +284,6 @@ void LLPanelProfile::onOpen(const LLSD& key)
} }
} }
//*TODO redo panel toggling
void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key) void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key)
{ {
// TRUE - we need to open/expand "panel" // TRUE - we need to open/expand "panel"
...@@ -204,21 +310,10 @@ void LLPanelProfile::onTabSelected(const LLSD& param) ...@@ -204,21 +310,10 @@ void LLPanelProfile::onTabSelected(const LLSD& param)
} }
} }
void LLPanelProfile::setAllChildrenVisible(BOOL visible)
{
const child_list_t* child_list = getChildList();
child_list_const_iter_t child_it = child_list->begin();
for (; child_it != child_list->end(); ++child_it)
{
LLView* viewp = *child_it;
viewp->setVisible(visible);
}
}
void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params) void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
{ {
// Hide currently visible panel (STORM-690). // Hide currently visible panel (STORM-690).
setAllChildrenVisible(FALSE); mChildStack.push();
// Add the panel or bring it to front. // Add the panel or bring it to front.
if (panel->getParent() != this) if (panel->getParent() != this)
...@@ -231,7 +326,7 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params) ...@@ -231,7 +326,7 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)
} }
panel->setVisible(TRUE); panel->setVisible(TRUE);
panel->setFocus(TRUE); // prevent losing focus by the floater
panel->onOpen(params); panel->onOpen(params);
LLRect new_rect = getRect(); LLRect new_rect = getRect();
...@@ -249,15 +344,17 @@ void LLPanelProfile::closePanel(LLPanel* panel) ...@@ -249,15 +344,17 @@ void LLPanelProfile::closePanel(LLPanel* panel)
removeChild(panel); removeChild(panel);
// Make the underlying panel visible. // Make the underlying panel visible.
mChildStack.pop();
// Prevent losing focus by the floater
const child_list_t* child_list = getChildList(); const child_list_t* child_list = getChildList();
if (child_list->size() > 0) if (child_list->size() > 0)
{ {
child_list->front()->setVisible(TRUE); child_list->front()->setFocus(TRUE);
child_list->front()->setFocus(TRUE); // prevent losing focus by the floater
} }
else else
{ {
llwarns << "No underlying panel to make visible." << llendl; llwarns << "No underlying panel to focus." << llendl;
} }
} }
} }
......
...@@ -41,7 +41,7 @@ class LLPanelProfile : public LLPanel ...@@ -41,7 +41,7 @@ class LLPanelProfile : public LLPanel
public: public:
/*virtual*/ BOOL postBuild(); /*virtual*/ BOOL postBuild();
/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
/*virtual*/ void onOpen(const LLSD& key); /*virtual*/ void onOpen(const LLSD& key);
virtual void togglePanel(LLPanel*, const LLSD& key = LLSD()); virtual void togglePanel(LLPanel*, const LLSD& key = LLSD());
...@@ -58,8 +58,6 @@ class LLPanelProfile : public LLPanel ...@@ -58,8 +58,6 @@ class LLPanelProfile : public LLPanel
virtual void onTabSelected(const LLSD& param); virtual void onTabSelected(const LLSD& param);
virtual void setAllChildrenVisible(BOOL visible);
LLTabContainer* getTabCtrl() { return mTabCtrl; } LLTabContainer* getTabCtrl() { return mTabCtrl; }
const LLUUID& getAvatarId() { return mAvatarId; } const LLUUID& getAvatarId() { return mAvatarId; }
...@@ -72,8 +70,34 @@ class LLPanelProfile : public LLPanel ...@@ -72,8 +70,34 @@ class LLPanelProfile : public LLPanel
private: private:
//-- ChildStack begins ----------------------------------------------------
class ChildStack
{
LOG_CLASS(LLPanelProfile::ChildStack);
public:
ChildStack();
void setParent(LLPanel* parent);
bool push();
bool pop();
void preParentReshape();
void postParentReshape();
private:
void dump();
typedef LLView::child_list_t view_list_t;
typedef std::list<view_list_t> stack_t;
stack_t mStack;
stack_t mSavedStack;
LLPanel* mParent;
};
//-- ChildStack ends ------------------------------------------------------
LLTabContainer* mTabCtrl; LLTabContainer* mTabCtrl;
profile_tabs_t mTabContainer; profile_tabs_t mTabContainer;
ChildStack mChildStack;
LLUUID mAvatarId; LLUUID mAvatarId;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment