Index: Dialogs/Dialogs/GUIDialogFileStacking.cs
===================================================================
--- Dialogs/Dialogs/GUIDialogFileStacking.cs	(revision 26972)
+++ Dialogs/Dialogs/GUIDialogFileStacking.cs	(working copy)
@@ -19,6 +19,8 @@
 #endregion
 
 using MediaPortal.GUI.Library;
+using System.Collections;
+using System.IO;
 
 namespace MediaPortal.Dialogs
 {
@@ -30,9 +32,9 @@
     private int m_iSelectedFile = -1;
     private int m_iFrames = -1;
     private int m_iNumberOfFiles = 0;
-    private int m_MaxNumberOfCDs = 0;
+    private int m_MaxNumberOfFiles = 0;
     private const int m_indexStackItemOffset = 100;
-
+    private ArrayList lst_FilesNames;
     public GUIDialogFileStacking()
     {
       GetID = (int)Window.WINDOW_DIALOG_FILESTACKING;
@@ -43,6 +45,16 @@
       return Load(GUIGraphicsContext.Skin + @"\dialogFileStacking.xml");
     }
 
+    public override void OnAction(Action action)
+    {
+      if (action.wID == Action.ActionType.ACTION_PREVIOUS_MENU)
+      {
+        // User canceled selection, deselect file
+        m_iSelectedFile = -1;
+      }
+      base.OnAction(action);
+    }
+
     public override bool OnMessage(GUIMessage message)
     {
       switch (message.Message)
@@ -59,7 +71,7 @@
               GUIControl pControl = GetControl(i + m_indexStackItemOffset);
               if (pControl != null)
               {
-                m_MaxNumberOfCDs = i;
+                m_MaxNumberOfFiles = i;
                 EnableControl(GetID, i + m_indexStackItemOffset);
                 ShowControl(GetID, i + m_indexStackItemOffset);
                 if (i < m_iNumberOfFiles)
@@ -83,6 +95,17 @@
               HideControl(GetID, i + m_indexStackItemOffset);
               DisableControl(GetID, i + m_indexStackItemOffset);
             }
+            if (lst_FilesNames.Count > 0)
+            {
+              GUIPropertyManager.SetProperty("#stackedMovie.Selected", Path.GetFileNameWithoutExtension((string)lst_FilesNames[0]));
+              GUIPropertyManager.SetProperty("#stackedMovie.SelectedId", "1");
+            }
+            else
+            {
+              GUIPropertyManager.SetProperty("#stackedMovie.Selected", "");
+              GUIPropertyManager.SetProperty("#stackedMovie.SelectedId", "1");
+            }
+
           }
           return true;
 
@@ -92,6 +115,22 @@
             PageDestroy();
           }
           break;
+
+        case GUIMessage.MessageType.GUI_MSG_SETFOCUS:
+          {
+            m_iSelectedFile = message.TargetControlId - 100;
+            if (m_iSelectedFile > 0 && m_iSelectedFile <= m_iNumberOfFiles && m_iSelectedFile <= lst_FilesNames.Count)
+            {
+              GUIPropertyManager.SetProperty("#stackedMovie.Selected", Path.GetFileNameWithoutExtension((string)lst_FilesNames[m_iSelectedFile - 1]));
+              GUIPropertyManager.SetProperty("#stackedMovie.SelectedId", m_iSelectedFile.ToString());
+            }
+            else
+            {
+              GUIPropertyManager.SetProperty("#stackedMovie.Selected", "");
+              GUIPropertyManager.SetProperty("#stackedMovie.SelectedId", m_iSelectedFile.ToString());
+            }
+          }
+          break;
       }
 
       return base.OnMessage(message);
@@ -104,36 +143,39 @@
       {
         // Dialog heading
         GUIControl pDialog = GetControl(1);
+        GUIControl pDialogLine3 = GetControl(3); // Get Y-Position
         int distance = 32; // some safe value if skinner has used incorrect control IDs
-        if (pDialog != null)
+        if (pDialog != null && pDialogLine3 != null)
         {
           GUIControl pControl = GetControl(m_indexStackItemOffset + 1);
-          distance = pDialog.Width / m_MaxNumberOfCDs;
-
+          distance = (pDialog.Width - pControl.Width) / (m_MaxNumberOfFiles);
+          
           // do not allow "loose stacking", i.e. less than half overlayed items
           if (distance > pControl.Width / 2)
           {
             distance = pControl.Width / 2;
           }
-        }
 
-        // slide in...
-        int dwScreenWidth = GUIGraphicsContext.Width;
-        for (int i = 1; i <= m_MaxNumberOfCDs; ++i)
-        {
-          GUIControl pControl = GetControl(i + m_indexStackItemOffset);
-          if (null != pControl)
+          // slide in...
+          int dwStartPos = pDialog.XPosition + pDialog.Width - pControl.Width;
+          for (int i = 1; i <= m_MaxNumberOfFiles; ++i)
           {
-            int dwEndPos = dwScreenWidth / 2 - ((m_MaxNumberOfCDs - i) * distance) + pDialog.Width / 2 -
-                           (int)((float)pControl.Width / 1.5);
-            int dwStartPos = dwScreenWidth / 2 + pDialog.Width / 2 - pControl.Width;
-            float fStep = dwStartPos - dwEndPos;
-            fStep /= 25.0f;
-            fStep *= m_iFrames;
-            int dwPosX = (int)(dwStartPos - fStep);
-            pControl.SetPosition(dwPosX, GUIGraphicsContext.Height / 2);
+            pControl = GetControl(i + m_indexStackItemOffset);
+            if (null != pControl)
+            {
+              float fStep = (m_MaxNumberOfFiles - i) * distance;
+              fStep /= 25.0f;
+              fStep *= m_iFrames;
+              int dwPosX = (int)(dwStartPos - fStep);
+              pControl.SetPosition(dwPosX, pDialogLine3.YPosition);
+            }
           }
         }
+        else
+        {
+          Log.Warn("GUIDialogFileStacking: Control(1) and control(3) is missing in common.dialog.xml");
+          m_iFrames = 25;
+        }
         if (m_iFrames == 25)
         {
           GUIControl pControl = GetControl(101);
@@ -150,6 +192,12 @@
       get { return m_iSelectedFile; }
     }
 
+    public void SetNumberOfFiles(ArrayList lstMovies)
+    {
+      SetNumberOfFiles(lstMovies.Count);
+      lst_FilesNames = lstMovies;
+    }
+
     public void SetNumberOfFiles(int iFiles)
     {
       //LoadSkin();
@@ -161,6 +209,7 @@
       SetControlLabel(GetID, 4, string.Empty);
       SetControlLabel(GetID, 5, string.Empty);
       m_iNumberOfFiles = iFiles;
+      lst_FilesNames = new ArrayList();
     }
   }
 }
\ No newline at end of file
Index: MediaPortal.Base/skin/Blue3/dialogFileStacking.xml
===================================================================
--- MediaPortal.Base/skin/Blue3/dialogFileStacking.xml	(revision 26972)
+++ MediaPortal.Base/skin/Blue3/dialogFileStacking.xml	(working copy)
@@ -6,6 +6,19 @@
   <controls>
     <import>common.dialog.xml</import>
     <control>
+      <description>Movie Title value</description>
+      <type>fadelabel</type>
+      <id>0</id>
+      <posX>210</posX>
+      <posY>362</posY>
+      <width>295</width>
+      <label>#stackedMovie.Selected</label>
+      <font>font12</font>
+      <align>center</align>
+      <animation effect="fade" time="150">WindowOpen</animation>
+      <animation effect="fade" time="150">WindowClose</animation>
+    </control>
+    <control>
       <description>CD1</description>
       <type>button</type>
       <id>101</id>
Index: MediaPortal.Base/skin/Blue3wide/dialogFileStacking.xml
===================================================================
--- MediaPortal.Base/skin/Blue3wide/dialogFileStacking.xml	(revision 26972)
+++ MediaPortal.Base/skin/Blue3wide/dialogFileStacking.xml	(working copy)
@@ -6,6 +6,19 @@
   <controls>
     <import>common.dialog.xml</import>
     <control>
+      <description>Movie Title value</description>
+      <type>fadelabel</type>
+      <id>0</id>
+      <posX>373</posX>
+      <posY>452</posY>
+      <width>524</width>
+      <label>#stackedMovie.Selected</label>
+      <font>font12</font>
+      <align>center</align>
+      <animation effect="fade" time="150">WindowOpen</animation>
+      <animation effect="fade" time="150">WindowClose</animation>
+    </control>
+    <control>
       <description>CD1</description>
       <type>button</type>
       <id>101</id>
Index: WindowPlugins/GUIVideoFiles/GUIVideoFiles.cs
===================================================================
--- WindowPlugins/GUIVideoFiles/GUIVideoFiles.cs	(revision 26972)
+++ WindowPlugins/GUIVideoFiles/GUIVideoFiles.cs	(working copy)
@@ -926,7 +926,7 @@
                 (GUIDialogFileStacking)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_FILESTACKING);
               if (null != dlg)
               {
-                dlg.SetNumberOfFiles(movies.Count);
+                dlg.SetNumberOfFiles(movies);
                 dlg.DoModal(GetID);
                 selectedFileIndex = dlg.SelectedFile;
                 if (selectedFileIndex < 1)
@@ -2671,7 +2671,7 @@
             (GUIDialogFileStacking)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_FILESTACKING);
           if (null != dlg)
           {
-            dlg.SetNumberOfFiles(movies.Count);
+            dlg.SetNumberOfFiles(movies);
             dlg.DoModal(GUIWindowManager.ActiveWindow);
             selectedFileIndex = dlg.SelectedFile;
             if (selectedFileIndex < 1)
