Fix excessive getChild calls during teleport from LLPanelGroup
parent
316d815e7b
commit
29c8fb0a76
|
|
@ -113,7 +113,7 @@ void LLPanelGroup::onOpen(const LLSD& key)
|
|||
if(!key.has("action"))
|
||||
{
|
||||
setGroupID(group_id);
|
||||
getChild<LLAccordionCtrl>("groups_accordion")->expandDefaultTab();
|
||||
mGroupsAccordion->expandDefaultTab();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -148,24 +148,26 @@ void LLPanelGroup::onOpen(const LLSD& key)
|
|||
|
||||
bool LLPanelGroup::postBuild()
|
||||
{
|
||||
mGroupsAccordion = getChild<LLAccordionCtrl>("groups_accordion");
|
||||
|
||||
mDefaultNeedsApplyMesg = getString("default_needs_apply_text");
|
||||
mWantApplyMesg = getString("want_apply_text");
|
||||
|
||||
LLButton* button;
|
||||
mButtonApply = getChild<LLButton>("btn_apply");
|
||||
mButtonApply->setClickedCallback(onBtnApply, this);
|
||||
mButtonApply->setVisible(true);
|
||||
mButtonApply->setEnabled(false);
|
||||
|
||||
button = getChild<LLButton>("btn_apply");
|
||||
button->setClickedCallback(onBtnApply, this);
|
||||
button->setVisible(true);
|
||||
button->setEnabled(false);
|
||||
mButtonCall = getChild<LLButton>("btn_call");
|
||||
mButtonCall->setClickedCallback(onBtnGroupCallClicked, this);
|
||||
|
||||
button = getChild<LLButton>("btn_call");
|
||||
button->setClickedCallback(onBtnGroupCallClicked, this);
|
||||
mButtonChat = getChild<LLButton>("btn_chat");
|
||||
mButtonChat->setClickedCallback(onBtnGroupChatClicked, this);
|
||||
|
||||
button = getChild<LLButton>("btn_chat");
|
||||
button->setClickedCallback(onBtnGroupChatClicked, this);
|
||||
mButtonRefresh = getChild<LLButton>("btn_refresh");
|
||||
mButtonRefresh->setClickedCallback(onBtnRefresh, this);
|
||||
|
||||
button = getChild<LLButton>("btn_refresh");
|
||||
button->setClickedCallback(onBtnRefresh, this);
|
||||
mButtonCancel = getChild<LLButton>("btn_cancel");
|
||||
|
||||
childSetCommitCallback("back",boost::bind(&LLPanelGroup::onBackBtnClick,this),NULL);
|
||||
|
||||
|
|
@ -184,7 +186,7 @@ bool LLPanelGroup::postBuild()
|
|||
if(panel_general)
|
||||
{
|
||||
panel_general->setupCtrls(this);
|
||||
button = panel_general->getChild<LLButton>("btn_join");
|
||||
LLButton* button = panel_general->getChild<LLButton>("btn_join");
|
||||
button->setVisible(false);
|
||||
button->setEnabled(true);
|
||||
|
||||
|
|
@ -199,9 +201,8 @@ bool LLPanelGroup::postBuild()
|
|||
return true;
|
||||
}
|
||||
|
||||
void LLPanelGroup::reposButton(const std::string& name)
|
||||
void LLPanelGroup::reposButton(LLButton* button)
|
||||
{
|
||||
LLButton* button = findChild<LLButton>(name);
|
||||
if(!button)
|
||||
return;
|
||||
LLRect btn_rect = button->getRect();
|
||||
|
|
@ -211,23 +212,20 @@ void LLPanelGroup::reposButton(const std::string& name)
|
|||
|
||||
void LLPanelGroup::reposButtons()
|
||||
{
|
||||
LLButton* button_refresh = findChild<LLButton>("btn_refresh");
|
||||
LLButton* button_cancel = findChild<LLButton>("btn_cancel");
|
||||
|
||||
if(button_refresh && button_cancel && button_refresh->getVisible() && button_cancel->getVisible())
|
||||
if(mButtonRefresh && mButtonCancel && mButtonRefresh->getVisible() && mButtonCancel->getVisible())
|
||||
{
|
||||
LLRect btn_refresh_rect = button_refresh->getRect();
|
||||
LLRect btn_cancel_rect = button_cancel->getRect();
|
||||
LLRect btn_refresh_rect = mButtonRefresh->getRect();
|
||||
LLRect btn_cancel_rect = mButtonCancel->getRect();
|
||||
btn_refresh_rect.setLeftTopAndSize( btn_cancel_rect.mLeft + btn_cancel_rect.getWidth() + 2,
|
||||
btn_refresh_rect.getHeight() + 2, btn_refresh_rect.getWidth(), btn_refresh_rect.getHeight());
|
||||
button_refresh->setRect(btn_refresh_rect);
|
||||
mButtonRefresh->setRect(btn_refresh_rect);
|
||||
}
|
||||
|
||||
reposButton("btn_apply");
|
||||
reposButton("btn_refresh");
|
||||
reposButton("btn_cancel");
|
||||
reposButton("btn_chat");
|
||||
reposButton("btn_call");
|
||||
reposButton(mButtonApply);
|
||||
reposButton(mButtonRefresh);
|
||||
reposButton(mButtonCancel);
|
||||
reposButton(mButtonChat);
|
||||
reposButton(mButtonCall);
|
||||
}
|
||||
|
||||
void LLPanelGroup::reshape(S32 width, S32 height, bool called_from_parent )
|
||||
|
|
@ -279,9 +277,9 @@ void LLPanelGroup::onBtnJoin()
|
|||
}
|
||||
else
|
||||
{
|
||||
LL_DEBUGS() << "joining group: " << mID << LL_ENDL;
|
||||
LLGroupActions::join(mID);
|
||||
}
|
||||
LL_DEBUGS() << "joining group: " << mID << LL_ENDL;
|
||||
LLGroupActions::join(mID);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelGroup::changed(LLGroupChange gc)
|
||||
|
|
@ -299,7 +297,7 @@ void LLPanelGroup::onChange(EStatusType status, const LLSD& channelInfo, bool pr
|
|||
return;
|
||||
}
|
||||
|
||||
childSetEnabled("btn_call", LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
|
||||
mButtonCall->setEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
|
||||
}
|
||||
|
||||
void LLPanelGroup::notifyObservers()
|
||||
|
|
@ -372,32 +370,23 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
|
|||
group_name_ctrl->setToolTip(group_name);
|
||||
}
|
||||
|
||||
LLButton* button_apply = findChild<LLButton>("btn_apply");
|
||||
LLButton* button_refresh = findChild<LLButton>("btn_refresh");
|
||||
|
||||
LLButton* button_cancel = findChild<LLButton>("btn_cancel");
|
||||
LLButton* button_call = findChild<LLButton>("btn_call");
|
||||
LLButton* button_chat = findChild<LLButton>("btn_chat");
|
||||
|
||||
|
||||
bool is_null_group_id = group_id == LLUUID::null;
|
||||
if(button_apply)
|
||||
button_apply->setVisible(!is_null_group_id);
|
||||
if(button_refresh)
|
||||
button_refresh->setVisible(!is_null_group_id);
|
||||
if(mButtonApply)
|
||||
mButtonApply->setVisible(!is_null_group_id);
|
||||
if(mButtonRefresh)
|
||||
mButtonRefresh->setVisible(!is_null_group_id);
|
||||
|
||||
if(button_cancel)
|
||||
button_cancel->setVisible(!is_null_group_id);
|
||||
if(mButtonCancel)
|
||||
mButtonCancel->setVisible(!is_null_group_id);
|
||||
|
||||
if(button_call)
|
||||
button_call->setVisible(!is_null_group_id);
|
||||
if(button_chat)
|
||||
button_chat->setVisible(!is_null_group_id);
|
||||
if(mButtonCall)
|
||||
mButtonCall->setVisible(!is_null_group_id);
|
||||
if(mButtonChat)
|
||||
mButtonChat->setVisible(!is_null_group_id);
|
||||
|
||||
getChild<LLUICtrl>("prepend_founded_by")->setVisible(!is_null_group_id);
|
||||
|
||||
LLAccordionCtrl* tab_ctrl = getChild<LLAccordionCtrl>("groups_accordion");
|
||||
tab_ctrl->reset();
|
||||
mGroupsAccordion->reset();
|
||||
|
||||
LLAccordionCtrlTab* tab_general = getChild<LLAccordionCtrlTab>("group_general_tab");
|
||||
LLAccordionCtrlTab* tab_roles = getChild<LLAccordionCtrlTab>("group_roles_tab");
|
||||
|
|
@ -431,10 +420,10 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
|
|||
getChild<LLUICtrl>("group_name")->setVisible(false);
|
||||
getChild<LLUICtrl>("group_name_editor")->setVisible(true);
|
||||
|
||||
if(button_call)
|
||||
button_call->setVisible(false);
|
||||
if(button_chat)
|
||||
button_chat->setVisible(false);
|
||||
if(mButtonCall)
|
||||
mButtonCall->setVisible(false);
|
||||
if(mButtonChat)
|
||||
mButtonChat->setVisible(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -463,15 +452,15 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id)
|
|||
getChild<LLUICtrl>("group_name")->setVisible(true);
|
||||
getChild<LLUICtrl>("group_name_editor")->setVisible(false);
|
||||
|
||||
if(button_apply)
|
||||
button_apply->setVisible(is_member);
|
||||
if(button_call)
|
||||
button_call->setVisible(is_member);
|
||||
if(button_chat)
|
||||
button_chat->setVisible(is_member);
|
||||
if(mButtonApply)
|
||||
mButtonApply->setVisible(is_member);
|
||||
if(mButtonCall)
|
||||
mButtonCall->setVisible(is_member);
|
||||
if(mButtonChat)
|
||||
mButtonChat->setVisible(is_member);
|
||||
}
|
||||
|
||||
tab_ctrl->arrange();
|
||||
mGroupsAccordion->arrange();
|
||||
|
||||
reposButtons();
|
||||
update(GC_ALL);//show/hide "join" button if data is already ready
|
||||
|
|
@ -539,20 +528,18 @@ void LLPanelGroup::draw()
|
|||
if (mRefreshTimer.hasExpired())
|
||||
{
|
||||
mRefreshTimer.stop();
|
||||
childEnable("btn_refresh");
|
||||
childEnable("groups_accordion");
|
||||
if(mButtonRefresh) mButtonRefresh->setEnabled(true);
|
||||
mGroupsAccordion->setEnabled(true);
|
||||
}
|
||||
|
||||
LLButton* button_apply = findChild<LLButton>("btn_apply");
|
||||
|
||||
if(button_apply && button_apply->getVisible())
|
||||
if(mButtonApply && mButtonApply->getVisible())
|
||||
{
|
||||
bool enable = false;
|
||||
std::string mesg;
|
||||
for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it)
|
||||
enable = enable || (*it)->needsApply(mesg);
|
||||
|
||||
childSetEnabled("btn_apply", enable);
|
||||
mButtonApply->setEnabled(enable);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -568,8 +555,8 @@ void LLPanelGroup::refreshData()
|
|||
setGroupID(getID());
|
||||
|
||||
// 5 second timeout
|
||||
childDisable("btn_refresh");
|
||||
childDisable("groups_accordion");
|
||||
if(mButtonRefresh) mButtonRefresh->setEnabled(false);
|
||||
mGroupsAccordion->setEnabled(false);
|
||||
|
||||
mRefreshTimer.start();
|
||||
mRefreshTimer.setTimerExpirySec(5);
|
||||
|
|
|
|||
|
|
@ -33,11 +33,12 @@
|
|||
|
||||
class LLOfferInfo;
|
||||
|
||||
const F32 UPDATE_MEMBERS_SECONDS_PER_FRAME = 0.005; // 5ms
|
||||
const F32 UPDATE_MEMBERS_SECONDS_PER_FRAME = 0.005f; // 5ms
|
||||
|
||||
// Forward declares
|
||||
class LLPanelGroupTab;
|
||||
class LLTabContainer;
|
||||
class LLAccordionCtrl;
|
||||
class LLAgent;
|
||||
|
||||
|
||||
|
|
@ -98,7 +99,7 @@ protected:
|
|||
static void onBtnGroupCallClicked(void*);
|
||||
static void onBtnGroupChatClicked(void*);
|
||||
|
||||
void reposButton(const std::string& name);
|
||||
void reposButton(LLButton* button);
|
||||
void reposButtons();
|
||||
|
||||
|
||||
|
|
@ -114,7 +115,14 @@ protected:
|
|||
|
||||
std::vector<LLPanelGroupTab* > mTabs;
|
||||
|
||||
LLButton* mButtonJoin;
|
||||
LLAccordionCtrl* mGroupsAccordion = nullptr;
|
||||
|
||||
LLButton* mButtonJoin = nullptr;
|
||||
LLButton* mButtonApply = nullptr;
|
||||
LLButton* mButtonCall = nullptr;
|
||||
LLButton* mButtonChat = nullptr;
|
||||
LLButton* mButtonRefresh = nullptr;
|
||||
LLButton* mButtonCancel = nullptr;
|
||||
LLUICtrl* mJoinText;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue