FIRE-22573: Fix for region windlights not updating if they get changed while being in the region

meow-7.2.2
Ansariel 2018-05-13 19:37:48 +02:00
parent 8cba35aee9
commit 32abfdec4e
1 changed files with 26 additions and 8 deletions

View File

@ -314,19 +314,23 @@ void LLFloaterRegionInfo::requestRegionInfo()
void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)
{
static LLDispatcher dispatch;
LLFloaterRegionInfo* floater = LLFloaterReg::findTypedInstance<LLFloaterRegionInfo>("region_info");
if(!floater)
{
return;
}
// <FS:Ansariel> FIRE-22573: Always refresh windlight even if floater not open
//LLFloaterRegionInfo* floater = LLFloaterReg::findTypedInstance<LLFloaterRegionInfo>("region_info");
//if(!floater)
//{
// return;
//}
// </FS:Ansariel>
if (!estate_dispatch_initialized)
{
LLPanelEstateInfo::initDispatch(dispatch);
}
LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
// <FS:Ansariel> FIRE-22573: Always refresh windlight even if floater not open
//LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
//LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
// </FS:Ansariel>
// unpack the message
std::string request;
@ -342,6 +346,17 @@ void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)
//dispatch the message
dispatch.dispatch(request, invoice, strings);
// <FS:Ansariel> FIRE-22573: Always refresh windlight even if floater not open
LLFloaterRegionInfo* floater = LLFloaterReg::findTypedInstance<LLFloaterRegionInfo>("region_info");
if(!floater)
{
return;
}
LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");
LLPanelEstateInfo* panel = (LLPanelEstateInfo*)tab->getChild<LLPanel>("Estate");
// </FS:Ansariel>
panel->updateControls(gAgent.getRegion());
}
@ -349,6 +364,9 @@ void LLFloaterRegionInfo::processEstateOwnerRequest(LLMessageSystem* msg,void**)
// static
void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
{
// <FS:Ansariel> FIRE-22573: Always refresh windlight even if floater not open
LLEnvManagerNew::instance().requestRegionSettings();
LLPanel* panel;
LLFloaterRegionInfo* floater = LLFloaterReg::findTypedInstance<LLFloaterRegionInfo>("region_info");
if(!floater)
@ -360,7 +378,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
// otherwise after we apply (send) updated region settings we won't get them back,
// so our environment won't be updated.
// This is also the way to know about externally changed region environment.
LLEnvManagerNew::instance().requestRegionSettings();
//LLEnvManagerNew::instance().requestRegionSettings(); // <FS:Ansariel> FIRE-22573: Always refresh windlight even if floater not open
LLTabContainer* tab = floater->getChild<LLTabContainer>("region_panels");