Răsfoiți Sursa

UI: Fix "invalid" audio devices in audio settings

If a global audio device is disconnected or for whatever reason is no
longer available when audio settings is opened, it will erroneously
select index 0 of the combo box ("Disabled") by default because it can't
find it in the combo box.  This fixes that issue by making it insert an
item in to the combo box specifying that the previously available audio
device is no longer available, and properly preserving the user's
settings.
jp9000 10 ani în urmă
părinte
comite
3749436cd5
2 a modificat fișierele cu 11 adăugiri și 2 ștergeri
  1. 1 0
      obs/data/locale/en-US.ini
  2. 10 2
      obs/window-basic-settings.cpp

+ 1 - 0
obs/data/locale/en-US.ini

@@ -420,6 +420,7 @@ Basic.Settings.Audio.EnablePushToMute="Enable Push-to-mute"
 Basic.Settings.Audio.PushToMuteDelay="Push-to-mute delay"
 Basic.Settings.Audio.PushToMuteDelay="Push-to-mute delay"
 Basic.Settings.Audio.EnablePushToTalk="Enable Push-to-talk"
 Basic.Settings.Audio.EnablePushToTalk="Enable Push-to-talk"
 Basic.Settings.Audio.PushToTalkDelay="Push-to-talk delay"
 Basic.Settings.Audio.PushToTalkDelay="Push-to-talk delay"
+Basic.Settings.Audio.UnknownAudioDevice="[Device not connected or not available]"
 
 
 # basic mode 'advanced' settings
 # basic mode 'advanced' settings
 Basic.Settings.Advanced="Advanced"
 Basic.Settings.Advanced="Advanced"

+ 10 - 2
obs/window-basic-settings.cpp

@@ -1406,9 +1406,17 @@ void OBSBasicSettings::LoadListValues(QComboBox *widget, obs_property_t *prop,
 	}
 	}
 
 
 	if (deviceId) {
 	if (deviceId) {
-		int idx = widget->findData(QVariant(QT_UTF8(deviceId)));
-		if (idx != -1)
+		QVariant var(QT_UTF8(deviceId));
+		int idx = widget->findData(var);
+		if (idx != -1) {
 			widget->setCurrentIndex(idx);
 			widget->setCurrentIndex(idx);
+		} else {
+			widget->insertItem(0,
+					QTStr("Basic.Settings.Audio."
+						"UnknownAudioDevice"),
+					var);
+			widget->setCurrentIndex(0);
+		}
 	}
 	}
 
 
 	if (settings)
 	if (settings)