Index: lcdprocclient.cpp
===================================================================
--- lcdprocclient.cpp	(revision 8501)
+++ lcdprocclient.cpp	(working copy)
@@ -432,6 +432,7 @@
     sendToServer("screen_add Music");
     setPriority("Music", LOW);
     sendToServer("widget_add Music topWidget string");
+    sendToServer("widget_add Music topWidget2 string");
     sendToServer("widget_add Music timeWidget string");
     sendToServer("widget_add Music infoWidget string");
     sendToServer("widget_add Music progressBar hbar");
@@ -928,21 +929,50 @@
 
 void LCDProcClient::startMusic(QString artist, QString album, QString track)
 {
+    // Playing music displays:
+    // For 2-line displays:
+    //       <ArtistAlbumTitle>
+    //       <Elapse/Remaining Time>
+    // For 3-line displays:
+    //       <ArtistAlbumTitle>
+    //       <Elapse/Remaining Time>
+    //       <Info+ProgressBar>
+    // For displays with more than 3 lines:
+    //       <ArtistAlbum>
+    //       <Title>
+    //       <Elapse/Remaining Time>
+    //       <Info+ProgressBar>
+
+    // Clear the progressBar and timeWidget before activating the Music
+    // screen. This prevents the display of outdated junk.
+    sendToServer("widget_set Music progressBar 1 1 0");
+    sendToServer("widget_set Music timeWidget 1 1 \"\"");
+
     QString aString;
     music_progress = 0.0f;
-    if (lcd_showmusic)
-      setPriority("Music", HIGH);
     aString = artist;
     if (lcd_showmusic_items == "ArtistAlbumTitle") {
         aString += " [";
         aString += album;
         aString += "] ";
-    } else {
+    } else if (lcdHeight < 4) {
         aString += " - ";
     } 
-    aString += track;
+
+    if (lcdHeight < 4) {
+    	aString += track;
+    }
+    else {
+        assignScrollingText(track, "Music", "topWidget2", 2);
+    }
+    assignScrollingText(aString, "Music");
+
+
+    // OK, every this is at least somewhat initialised. Activate
+    // the music screen.
     activeScreen = "Music";
-    assignScrollingText(aString, "Music");
+    if (lcd_showmusic)
+      setPriority("Music", HIGH);
 }
 
 void LCDProcClient::startChannel(QString channum, QString title, QString subtitle)
@@ -1783,44 +1813,55 @@
 
 void LCDProcClient::outputMusic()
 {
-    outputCenteredText("Music", music_time, "timeWidget", 2);
+    int info_width = 0;
 
+    // See startMusic() for a discription of the Music screen contents
+
+    outputCenteredText("Music", music_time, "timeWidget", 
+                                lcdHeight < 4 ? 2 : 3);
+
     if (lcdHeight > 2)
     {
-        QString props;
-        QString shuffle = "      ";
-        QString repeat  = "      ";
+        QString aString;
+        QString shuffle = "";
+        QString repeat  = "";
 
         if (music_shuffle == 1)
         {
-            shuffle = "Shfl ?";
+            shuffle = "S:? ";
         }
         else if (music_shuffle == 2)
         {
-            shuffle = "Shfl i";         
+            shuffle = "S:i ";
         }
 
         if (music_repeat == 1)
         {
-            repeat = "Rpt 1";
+            repeat = "R:1 ";
         }
         else if (music_repeat == 2)
         {
-            repeat = "Rpt *";         
+            repeat = "R:* ";
         }
 
-        props.sprintf("%s  %s", shuffle.ascii(), repeat.ascii());
+        if (shuffle.length() != 0 || repeat.length() != 0) {
+            aString.sprintf("%s%s", shuffle.ascii(), repeat.ascii());
 
-        outputCenteredText("Music", props, "infoWidget", lcdHeight);
-    }
+            info_width = aString.length();
+            outputLeftText("Music", aString, "infoWidget", lcdHeight);
+        }
+        else
+            outputLeftText("Music", "        ", "infoWidget", lcdHeight);
 
-    if (lcdHeight > 3)
-    {
-        QString aString;
-        aString = "widget_set Music progressBar 1 3 ";
-        aString += QString::number((int)rint(music_progress * lcdWidth * 
-                                             cellWidth));
+        aString = "widget_set Music progressBar ";
+        aString += QString::number(info_width + 1);
+        aString += " ";
+        aString += QString::number(lcdHeight);
+        aString += " ";
+        aString += QString::number((int)rint(music_progress *
+                                        (lcdWidth - info_width) * cellWidth));
         sendToServer(aString);
+
     }
 }
 
