diff options
| -rwxr-xr-x | indra/newview/llfloaterpreference.cpp | 19 | ||||
| -rwxr-xr-x | indra/newview/llfloaterpreference.h | 4 | 
2 files changed, 19 insertions, 4 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 718b068c8a..c4e9292d90 100755 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -824,6 +824,13 @@ void LLFloaterPreference::updateShowFavoritesCheckbox(bool val)  void LLFloaterPreference::setHardwareDefaults()  { +	std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive"); +	if (!preset_graphic_active.empty()) +	{ +		saveGraphicsPreset(preset_graphic_active); +		saveSettings(); // save here to be able to return to the previous preset by Cancel +	} +  	LLFeatureManager::getInstance()->applyRecommendedSettings();  	// reset indirects before refresh because we may have changed what they control @@ -2478,6 +2485,12 @@ void LLPanelPreferenceGraphics::onPresetsListChange()  {  	resetDirtyChilds();  	setPresetText(); + +	LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences"); +	if (instance && !gSavedSettings.getString("PresetGraphicActive").empty()) +	{ +		instance->saveSettings(); //make cancel work correctly after changing the preset +	}  }  void LLPanelPreferenceGraphics::setPresetText() @@ -2486,13 +2499,17 @@ void LLPanelPreferenceGraphics::setPresetText()  	std::string preset_graphic_active = gSavedSettings.getString("PresetGraphicActive"); -	if (hasDirtyChilds() && !preset_graphic_active.empty()) +	if (!preset_graphic_active.empty() && preset_graphic_active != preset_text->getText())  	{  		LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences");  		if (instance)  		{  			instance->saveGraphicsPreset(preset_graphic_active);  		} +	} + +	if (hasDirtyChilds() && !preset_graphic_active.empty()) +	{  		gSavedSettings.setString("PresetGraphicActive", "");  		preset_graphic_active.clear();  		// This doesn't seem to cause an infinite recursion.  This trigger is needed to cause the pulldown diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 8de65b733b..ed692c903e 100755 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -125,12 +125,10 @@ protected:  	// updates click/double-click action controls depending on values from settings.xml  	void updateClickActionControls(); +public:  	// This function squirrels away the current values of the controls so that  	// cancel() can restore them.	  	void saveSettings(); -		 - -public:  	void setCacheLocation(const LLStringExplicit& location);  | 
