From 90d41bd746eda43f7bb7acdf3a2066e3ab948a3e Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Mon, 16 May 2011 15:17:27 -0700
Subject: EXP-819 Turning off Voice Chat setting in Basic mode reverts changes
 made in Sound Device selection and turning setting back on results in drop
 downs not being populated

---
 indra/newview/llfloatersounddevices.cpp      |  3 +++
 indra/newview/llpanelvoicedevicesettings.cpp | 17 ++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/llfloatersounddevices.cpp b/indra/newview/llfloatersounddevices.cpp
index 9fe7c7f9dd..e692f1735a 100644
--- a/indra/newview/llfloatersounddevices.cpp
+++ b/indra/newview/llfloatersounddevices.cpp
@@ -68,6 +68,9 @@ BOOL LLFloaterSoundDevices::postBuild()
 	if (panel)
 	{
 		panel->setUseTuningMode(false);
+		getChild<LLUICtrl>("voice_input_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
+		getChild<LLUICtrl>("voice_output_device")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
+		getChild<LLUICtrl>("mic_volume_slider")->setCommitCallback(boost::bind(&LLPanelVoiceDeviceSettings::apply, panel));
 	}
 	return TRUE;
 }
diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp
index dc87bd0077..4a80bbbe5e 100644
--- a/indra/newview/llpanelvoicedevicesettings.cpp
+++ b/indra/newview/llpanelvoicedevicesettings.cpp
@@ -191,7 +191,21 @@ void LLPanelVoiceDeviceSettings::refresh()
 	mCtrlInputDevices = getChild<LLComboBox>("voice_input_device");
 	mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device");
 
-	if(!LLVoiceClient::getInstance()->deviceSettingsAvailable())
+	bool device_settings_available = LLVoiceClient::getInstance()->deviceSettingsAvailable();
+
+	if (mCtrlInputDevices)
+	{
+		mCtrlInputDevices->setEnabled(device_settings_available);
+	}
+
+	if (mCtrlOutputDevices)
+	{
+		mCtrlOutputDevices->setEnabled(device_settings_available);
+	}
+
+	getChild<LLSlider>("mic_volume_slider")->setEnabled(device_settings_available);
+
+	if(!device_settings_available)
 	{
 		// The combo boxes are disabled, since we can't get the device settings from the daemon just now.
 		// Put the currently set default (ONLY) in the box, and select it.
@@ -207,6 +221,7 @@ void LLPanelVoiceDeviceSettings::refresh()
 			mCtrlOutputDevices->add( mOutputDevice, ADD_BOTTOM );
 			mCtrlOutputDevices->setSimple(mOutputDevice);
 		}
+		mDevicesUpdated = FALSE;
 	}
 	else if (!mDevicesUpdated)
 	{
-- 
cgit v1.2.3