diff options
| -rw-r--r-- | indra/newview/llfloatereditsky.cpp | 51 | ||||
| -rw-r--r-- | indra/newview/llfloatereditsky.h | 2 | 
2 files changed, 41 insertions, 12 deletions
| diff --git a/indra/newview/llfloatereditsky.cpp b/indra/newview/llfloatereditsky.cpp index da3f684ba2..a35b7cb003 100644 --- a/indra/newview/llfloatereditsky.cpp +++ b/indra/newview/llfloatereditsky.cpp @@ -88,18 +88,7 @@ void LLFloaterEditSky::onOpen(const LLSD& key)  	mSkyPresetCombo->setVisible(!new_preset);  	mSkyPresetNameEditor->setVisible(new_preset); -	if (isNewPreset()) -	{ -		mSkyPresetNameEditor->setValue(LLSD()); -		mSaveButton->setEnabled(FALSE); // will be enabled as soon as users enters a name -	} -	else -	{ -		refreshSkyPresetsList(); - -		// Disable controls until a sky preset to edit is selected. -		enableEditing(false); -	} +	reset();  }  // virtual @@ -129,6 +118,7 @@ void LLFloaterEditSky::initCallbacks(void)  	mSaveButton->setCommitCallback(boost::bind(&LLFloaterEditSky::onBtnSave, this));  	getChild<LLButton>("cancel")->setCommitCallback(boost::bind(&LLFloaterEditSky::onBtnCancel, this)); +	LLEnvManagerNew::instance().setRegionSettingsChangeCallback(boost::bind(&LLFloaterEditSky::onRegionSettingsChange, this));  	LLWLParamManager::instance().setPresetListChangeCallback(boost::bind(&LLFloaterEditSky::onSkyPresetListChange, this));  	//------------------------------------------------------------------------- @@ -712,6 +702,22 @@ void LLFloaterEditSky::onCloudScrollYToggled(LLUICtrl* ctrl)  //================================================================================================= +void LLFloaterEditSky::reset() +{ +	if (isNewPreset()) +	{ +		mSkyPresetNameEditor->setValue(LLSD()); +		mSaveButton->setEnabled(FALSE); // will be enabled as soon as users enters a name +	} +	else +	{ +		refreshSkyPresetsList(); + +		// Disable controls until a sky preset to edit is selected. +		enableEditing(false); +	} +} +  bool LLFloaterEditSky::isNewPreset() const  {  	return mKey.asString() == "new"; @@ -922,3 +928,24 @@ void LLFloaterEditSky::onSkyPresetListChange()  		refreshSkyPresetsList();  	}  } + +void LLFloaterEditSky::onRegionSettingsChange() +{ +	// If creating a new sky, don't bother. +	if (isNewPreset()) +	{ +		return; +	} + +	if (getSelectedSkyPreset().scope == LLEnvKey::SCOPE_REGION) // if editing a region sky +	{ +		// reset the floater to its initial state +		reset(); + +		// *TODO: Notify user? +	} +	else // editing a local sky +	{ +		refreshSkyPresetsList(); +	} +} diff --git a/indra/newview/llfloatereditsky.h b/indra/newview/llfloatereditsky.h index 89e7719270..85b4b250d5 100644 --- a/indra/newview/llfloatereditsky.h +++ b/indra/newview/llfloatereditsky.h @@ -82,6 +82,7 @@ private:  	//-- WL stuff ends -------------------------------------------------------- +	void reset(); /// reset the floater to its initial state  	bool isNewPreset() const;  	void refreshSkyPresetsList();  	void enableEditing(bool enable); @@ -97,6 +98,7 @@ private:  	void onBtnCancel();  	void onSkyPresetListChange(); +	void onRegionSettingsChange();  	LLLineEditor*	mSkyPresetNameEditor;  	LLComboBox*		mSkyPresetCombo; | 
