From ed4704a59c53d1d8de2120a3871856ffdc2e87d1 Mon Sep 17 00:00:00 2001
From: nehalmistry <>
Date: Wed, 10 Apr 2002 16:32:35 +0000
Subject: [PATCH] Volume control sliders now display correct gem position.

---
 src/ui/menus.cpp | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/src/ui/menus.cpp b/src/ui/menus.cpp
index bdf92cefc..1a0b83ef8 100644
--- a/src/ui/menus.cpp
+++ b/src/ui/menus.cpp
@@ -1742,12 +1742,7 @@ local void GameMenuLoad(void)
 global void SoundOptions(void)
 {
     int i = 17;
-#if !defined(USE_SDLCD) && !defined(USE_LIBCDA)
-    SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_UNCHECKED;
-#else
-    if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode))
-	SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_CHECKED;
-#endif
+    
     if (SoundFildes != -1)
 	SoundOptionsMenuItems[5].d.gem.state = MI_GSTATE_CHECKED;
     else
@@ -1763,6 +1758,10 @@ global void SoundOptions(void)
 #if defined(USE_LIBCDA) || defined(USE_SDLCD)
     cd_get_volume(&i, &i);
     SoundOptionsMenuItems[14].d.hslider.percent = (i * 100) / 255;
+    if (strcmp(":off", CDMode) && strcmp(":stopped", CDMode))
+	SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_CHECKED;
+#else
+    SoundOptionsMenuItems[i].d.gem.state = MI_GSTATE_UNCHECKED;
 #endif
 
     ProcessMenu(MENU_SOUND_OPTIONS, 1);    
@@ -2762,28 +2761,26 @@ local void ScenSelectHSMasterVolumeAction(Menuitem *mi, int i)
 		mi[1].d.hslider.percent += 10;
 		if (mi[1].d.hslider.percent > 100)
 		    mi[1].d.hslider.percent = 100;
-		SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 	    } else if (mi[1].d.hslider.cflags&MI_CFLAGS_LEFT) {
 		DebugLevel0Fn("Decreasing master volume\n");
 		mi[1].d.hslider.percent -= 10;
 		if (mi[1].d.hslider.percent < 0)
 		    mi[1].d.hslider.percent = 0;
-		SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 	    }
 	    if (i == 2) {
 		mi[1].d.hslider.cflags &= ~(MI_CFLAGS_RIGHT|MI_CFLAGS_LEFT);
 	    }
+	    SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 	    break;
 	case 1:		// mouse - move
 	    if (mi[1].d.hslider.cflags&MI_CFLAGS_KNOB && (mi[1].flags&MenuButtonClicked)) {
 		if (mi[1].d.hslider.curper > mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 		} else if (mi[1].d.hslider.curper < mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 		}
 		mi[1].d.hslider.percent = mi[1].d.hslider.curper / 10 * 10;
+		SetGlobalVolume((mi[1].d.hslider.percent * 255) / 100);
 		MustRedraw |= RedrawMenu;
 	    }
 	    break;
@@ -2804,28 +2801,26 @@ local void ScenSelectHSMusicVolumeAction(Menuitem *mi, int i)
 		mi[1].d.hslider.percent += 10;
 		if (mi[1].d.hslider.percent > 100)
 		    mi[1].d.hslider.percent = 100;
-		SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 	    } else if (mi[1].d.hslider.cflags&MI_CFLAGS_LEFT) {
 		DebugLevel0Fn("Decreasing music volume\n");
 		mi[1].d.hslider.percent -= 10;
 		if (mi[1].d.hslider.percent < 0)
 		    mi[1].d.hslider.percent = 0;
-		    SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 	    }
 	    if (i == 2) {
 		mi[1].d.hslider.cflags &= ~(MI_CFLAGS_RIGHT|MI_CFLAGS_LEFT);
 	    }
+	    SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 	    break;
 	case 1:		// mouse - move
 	    if (mi[1].d.hslider.cflags&MI_CFLAGS_KNOB && (mi[1].flags&MenuButtonClicked)) {
 		if (mi[1].d.hslider.curper > mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 		} else if (mi[1].d.hslider.curper < mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 		}
 		mi[1].d.hslider.percent = mi[1].d.hslider.curper / 10 * 10;
+		SetMusicVolume((mi[1].d.hslider.percent * 255) / 100);
 		MustRedraw |= RedrawMenu;
 	    }
 	    break;
@@ -2847,28 +2842,26 @@ local void ScenSelectHSCdVolumeAction(Menuitem *mi, int i)
 		mi[1].d.hslider.percent += 10;
 		if (mi[1].d.hslider.percent > 100)
 		    mi[1].d.hslider.percent = 100;
-		cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 	    } else if (mi[1].d.hslider.cflags&MI_CFLAGS_LEFT) {
 		DebugLevel0Fn("Decreasing cd volume\n");
 		mi[1].d.hslider.percent -= 10;
 		if (mi[1].d.hslider.percent < 0)
 		    mi[1].d.hslider.percent = 0;
-		cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 	    }
 	    if (i == 2) {
 		mi[1].d.hslider.cflags &= ~(MI_CFLAGS_RIGHT|MI_CFLAGS_LEFT);
 	    }
+	    cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 	    break;
 	case 1:		// mouse - move
 	    if (mi[1].d.hslider.cflags&MI_CFLAGS_KNOB && (mi[1].flags&MenuButtonClicked)) {
 		if (mi[1].d.hslider.curper > mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 		} else if (mi[1].d.hslider.curper < mi[1].d.hslider.percent) {
 		    mi[1].d.hslider.percent = mi[1].d.hslider.curper;
-		    cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 		}
 		mi[1].d.hslider.percent = mi[1].d.hslider.curper / 10 * 10;
+		cd_set_volume((mi[1].d.hslider.percent * 255) / 100,(mi[1].d.hslider.percent * 255) / 100);
 		MustRedraw |= RedrawMenu;
 	    }
 	    break;