Steven Bennetts 2009-09-10 03:08:54 +00:00
parent bbf497469c
commit 44f294d484
7 changed files with 28 additions and 34 deletions

View File

@ -35,7 +35,7 @@
#include "lldockablefloater.h"
//static
LLDockableFloater* LLDockableFloater::instance = NULL;
LLHandle<LLFloater> LLDockableFloater::instanceHandle;
LLDockableFloater::LLDockableFloater(LLDockControl* dockControl,
const LLSD& key, const Params& params) :
@ -57,21 +57,21 @@ BOOL LLDockableFloater::postBuild()
void LLDockableFloater::resetInstance()
{
if (instance != this)
if (instanceHandle.get() != this)
{
if (instance != NULL && instance->isDocked())
if (instanceHandle.get() != NULL && instanceHandle.get()->isDocked())
{
//closeFloater() is not virtual
if (instance->canClose())
if (instanceHandle.get()->canClose())
{
instance->closeFloater();
instanceHandle.get()->closeFloater();
}
else
{
instance->setVisible(FALSE);
instanceHandle.get()->setVisible(FALSE);
}
}
instance = this;
instanceHandle = getHandle();
}
}

View File

@ -69,7 +69,7 @@ protected:
private:
std::auto_ptr<LLDockControl> mDockControl;
LLUIImagePtr mDockTongue;
static LLDockableFloater* instance;
static LLHandle<LLFloater> instanceHandle;
};
#endif /* LL_DOCKABLEFLOATER_H */

View File

@ -1491,7 +1491,8 @@ LLFloater* LLFloater::getClosableFloaterFromFocus()
// The focused floater may not be closable,
// Find and close a parental floater that is closeable, if any.
for(LLFloater* floater_to_close = focused_floater;
LLFloater* prev_floater = NULL;
for(LLFloater* floater_to_close = focused_floater;
NULL != floater_to_close;
floater_to_close = gFloaterView->getParentFloater(floater_to_close))
{
@ -1499,6 +1500,14 @@ LLFloater* LLFloater::getClosableFloaterFromFocus()
{
return floater_to_close;
}
// If floater has as parent root view
// gFloaterView->getParentFloater(floater_to_close) returns
// the same floater_to_close, so we need to check this.
if (prev_floater == floater_to_close) {
break;
}
prev_floater = floater_to_close;
}
return NULL;

View File

@ -556,8 +556,6 @@ BOOL LLPanelAvatarMeProfile::postBuild()
childSetCommitCallback("status_combo", boost::bind(&LLPanelAvatarMeProfile::onStatusChanged, this), NULL);
childSetCommitCallback("status_me_message_text", boost::bind(&LLPanelAvatarMeProfile::onStatusMessageChanged, this), NULL);
childSetTextArg("partner_edit_link", "[URL]", getString("partner_edit_link_url"));
resetControls();
resetData();

View File

@ -134,11 +134,13 @@ BOOL LLPanelPick::postBuild()
childSetAction("teleport_btn", boost::bind(&LLPanelPick::onClickTeleport, this));
childSetAction("show_on_map_btn", boost::bind(&LLPanelPick::onClickMap, this));
if (!mBackCb.empty())
{
LLButton* button = findChild<LLButton>("back_btn");
if (button) button->setClickedCallback(mBackCb);
}
}
// EXT-822. We have to process "Back" button click in both Edit & View Modes
if (!mBackCb.empty())
{
LLButton* button = findChild<LLButton>("back_btn");
if (button) button->setClickedCallback(mBackCb);
}
return TRUE;
@ -435,11 +437,8 @@ void LLPanelPick::updateButtons()
void LLPanelPick::setExitCallback(commit_callback_t cb)
{
mBackCb = cb;
if (!mEditMode)
{
LLButton* button = findChild<LLButton>("back_btn");
if (button) button->setClickedCallback(mBackCb);
}
LLButton* button = findChild<LLButton>("back_btn");
if (button) button->setClickedCallback(mBackCb);
}
//static

View File

@ -219,6 +219,7 @@
name="groups_panel"
width="285">
<group_list
draw_heading="false"
follows="left|top|right|bottom"
height="357"
layout="topleft"

View File

@ -20,10 +20,6 @@
<string
name="my_account_link_url"
value="http://secondlife.com/account" />
<string
name="partner_edit_link_url">
http://www.secondlife.com/account/partners.php?lang=en
</string>
<string
name="no_partner_text"
value="None" />
@ -217,15 +213,6 @@
top_pad="15"
value="Partner:"
width="100" />
<text
follows="left|top"
height="15"
layout="topleft"
left_pad="10"
name="partner_edit_link"
top_delta="0"
value="[[URL] Edit]"
width="100" />
<panel
follows="left|top|right"
height="15"