Index: mythtv/programs/mythfrontend/statusbox.cpp
===================================================================
--- mythtv/programs/mythfrontend/statusbox.cpp	(revision 25695)
+++ mythtv/programs/mythfrontend/statusbox.cpp	(working copy)
@@ -51,6 +51,8 @@
     m_timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
     m_timeDateFormat = QString("%1 %2").arg(m_timeFormat).arg(m_dateFormat);
 
+    m_currentExpIndex = -1;
+
     m_minLevel = gCoreContext->GetNumSetting("LogDefaultView",5);
 
     m_iconState = NULL;
@@ -438,6 +440,9 @@
             ProgramInfo* rec = qVariantValue<ProgramInfo*>(dce->GetData());
             if (!rec)
                 return;
+                
+            m_currentExpIndex = m_logList->GetCurrentPos();
+            m_currentExpItem = *rec;
 
             if ((buttonnum == 0) && rec->QueryIsDeleteCandidate())
             {
@@ -1283,6 +1288,10 @@
     int                   liveTVCount(0);
     long long             deletedGroupSize(0);
     int                   deletedGroupCount(0);
+    
+    bool                  matchedCurrentItem = false;
+    bool                  itemSelected = false;
+    int                   selectionOffset = -1;
 
     vector<ProgramInfo *>::iterator it;
     for (it = m_expList.begin(); it != m_expList.end(); ++it)
@@ -1343,8 +1352,33 @@
         detailInfo += "\n" + pginfo->toString(ProgramInfo::kTitleSubtitle, " - ");
 
         AddLogLine(contentLine, detailInfo);
+        
+        // If the previously selected item still exists in the list and its recording group hasn't 
+        // changed, then leave it selected.
+        if (!matchedCurrentItem && m_currentExpItem.IsSameRecording(*pginfo))
+        {
+            int index = m_logList->GetCount() - 1;
+            if (m_currentExpItem.GetRecordingGroup() == pginfo->GetRecordingGroup())
+            {
+                m_logList->SetItemCurrent(index);
+                itemSelected = true;
+            }
+            else if (index <= m_currentExpIndex)
+            {
+                selectionOffset = 0;
+            }
+            matchedCurrentItem = true;
+        }
     }
-
+    
+    // If the previously selected item has been removed or moved to a different section of the list
+    // select the item that preceded it.
+    if (!itemSelected && m_currentExpIndex > 0)
+    {
+        m_logList->SetItemCurrent(m_currentExpIndex + selectionOffset);
+    }
+    
+    m_currentExpIndex = -1;
 }
 
 /* vim: set expandtab tabstop=4 shiftwidth=4: */
Index: mythtv/programs/mythfrontend/statusbox.h
===================================================================
--- mythtv/programs/mythfrontend/statusbox.h	(revision 25695)
+++ mythtv/programs/mythfrontend/statusbox.h	(working copy)
@@ -6,6 +6,7 @@
 using namespace std;
 
 #include "mythscreentype.h"
+#include "programinfo.h"
 
 class ProgramInfo;
 class MythUIText;
@@ -62,6 +63,8 @@
     recprof2bps_t      recordingProfilesBPS;
 
     vector<ProgramInfo *> m_expList;
+    ProgramInfo m_currentExpItem;
+    int m_currentExpIndex;
 
     MythScreenStack *m_popupStack;
 
