diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index 29f78f6290c5080115045f53b82cbafcd86b1183..ed15d9d9225655f5bb9d7ea13952dec88db9efcf 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -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(); } } diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index b977888803ef614d3abcf080754dfb8ffa3027e5..1d0e89cef547524c8f20a2c365504b6047d8fdde 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -69,7 +69,7 @@ class LLDockableFloater : public LLFloater private: std::auto_ptr<LLDockControl> mDockControl; LLUIImagePtr mDockTongue; - static LLDockableFloater* instance; + static LLHandle<LLFloater> instanceHandle; }; #endif /* LL_DOCKABLEFLOATER_H */ diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index c027b59c71dd75908cb07e29d6cc4546758456ec..228e23b67ebe6dc5500002fe95baeec3cfdeec51 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -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; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index ba383a8deeb797f75b1ef7a8bc1d8799b4d57d5b..e0b7aeb77e3bb91be013bab9d1360dfeb35f1cd9 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -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(); diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index bde6d1cf6c5caf67c590b89da612e66d82e27fe5..9ae58d1cb66077a8998b2e879c0f0f7bcbe2a1d3 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -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 diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index e5a417e3d07d3787370951ed4d0a3fea5487205d..0af42bfc745f21a0fadcf0c11c76890a254fa45b 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -219,6 +219,7 @@ name="groups_panel" width="285"> <group_list + draw_heading="false" follows="left|top|right|bottom" height="357" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 41de34fbed4a5a1ff765ee30e6aab8fa3eb9bee9..580855e115de133116ab2a8d9d79ce0fc36688c6 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -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"