Index: libs/libmythtv/tv_play.h
===================================================================
--- libs/libmythtv/tv_play.h	(revision 12967)
+++ libs/libmythtv/tv_play.h	(working copy)
@@ -131,7 +131,8 @@
     void PromptStopWatchingRecording(void);
     void PromptDeleteRecording(QString title);
     bool PromptRecGroupPassword(void);
-    
+    bool BookmarkAllowed(void);
+    bool DeleteAllowed(void);
 
     // Boolean queries
 
Index: libs/libmythtv/tv_play.cpp
===================================================================
--- libs/libmythtv/tv_play.cpp	(revision 12967)
+++ libs/libmythtv/tv_play.cpp	(working copy)
@@ -2419,9 +2419,17 @@
                 {
                     int result = GetOSD()->GetDialogResponse(dialogname);
 
+                    if (result > 0)
+                    {
+                        if (!BookmarkAllowed())
+                            result++;
+                        if (result > 2 && !DeleteAllowed())
+                            result++;
+                    }
+
                     switch (result)
                     {
-                        case 0: case 3:
+                        case 0: case 4:
                             DoPause();
                             break;
                         case 1:
@@ -2429,7 +2437,7 @@
                             exitPlayer = true;
                             wantsToQuit = true;
                             break;
-                        case 4:
+                        case 3:
                             dialogname = "";
                             DoPause();
                             PromptDeleteRecording(
@@ -2441,21 +2449,6 @@
                             break;
                     }
                 }
-                else if (dialogname == "videoexitplayoptions") 
-                {
-                    int result = GetOSD()->GetDialogResponse(dialogname);
-
-                    switch (result)
-                    {
-                        case 0: case 1:
-                            DoPause();
-                            break;
-                        default:
-                            exitPlayer = true;
-                            wantsToQuit = true;
-                            break;
-                    }
-                }
                 else if (dialogname == "askdeleterecording")
                 {
                     int result = GetOSD()->GetDialogResponse(dialogname);
@@ -2859,16 +2852,17 @@
 
             if (StateIsLiveTV(GetState()))
             {
-                if (nvp && gContext->GetNumSetting("PlaybackExitPrompt") == 2)
-                    nvp->SetBookmark();
-                if (nvp && gContext->GetNumSetting("AutomaticSetWatched", 0))
-                    nvp->SetWatched();
-                exitPlayer = true;
-                wantsToQuit = true;
+                if (nvp && 12 & gContext->GetNumSetting("PlaybackExitPrompt"))
+                    PromptStopWatchingRecording();
+                else
+                {
+                    exitPlayer = true;
+                    wantsToQuit = true;
+                }
             }
             else 
             {
-                if (nvp && gContext->GetNumSetting("PlaybackExitPrompt") == 1 &&
+                if (nvp && 5 & gContext->GetNumSetting("PlaybackExitPrompt") &&
                     !underNetworkControl && !prbuffer->InDVDMenuOrStillFrame())
                 {
                     PromptStopWatchingRecording();
@@ -7539,7 +7533,30 @@
     }
 }
 
+/* \fn TV::BookmarkAllowed(void)
+ * \brief Returns true if bookmarks are allowed for the current player.
+ */
+bool TV::BookmarkAllowed(void)
+{
+    if ((prbuffer->isDVD() && (!gContext->GetNumSetting("EnableDVDBookmark", 0)
+        || prbuffer->DVD()->GetTotalTimeOfTitle() < 120)) ||
+        StateIsLiveTV(GetState()) ||
+        (playbackinfo->isVideo && !prbuffer->isDVD()))
+        return false;
 
+    return true;
+}
+
+/* \fn TV::DeleteAllowed(void)
+ * \brief Returns true if the delete menu option should be offered.
+ */
+bool TV::DeleteAllowed(void)
+{
+    if (prbuffer->isDVD() || StateIsLiveTV(GetState()))
+        return false;
+    return true;
+}
+
 void
 TV::PromptStopWatchingRecording(void)
 {
@@ -7550,44 +7567,34 @@
     
     dialogboxTimer.restart();
     QString message;
+    QString videotype;
     QStringList options;
-    bool allowbookmark = true;
-    bool allowdvdbookmark = gContext->GetNumSetting("EnableDVDBookmark", 0);
-    if (prbuffer->isDVD())
-    {
-        if (!allowdvdbookmark || 
-            prbuffer->DVD()->GetTotalTimeOfTitle() < 120)
-        {
-            allowbookmark = false;
-        }
-    }
+
+    if (StateIsLiveTV(GetState()))
+        videotype = "Live TV";
+    else if (prbuffer->isDVD())
+        videotype = "this DVD";
     else if (playbackinfo->isVideo)
-        allowbookmark = false;
+        videotype = "this Video";
+    else
+        videotype = "this recording";
+
+    message = tr("You are exiting %1").arg(videotype);
     
-    if (playbackinfo && allowbookmark)
+    if (playbackinfo && BookmarkAllowed())
     {
-        QString videotype = (prbuffer->isDVD()) ? "DVD":"recording";
-        message = tr("You are exiting this %1").arg(videotype);
-
         options += tr("Save this position and go to the menu");
         options += tr("Do not save, just exit to the menu");
-        options += tr("Keep watching");
-        if (!prbuffer->isDVD())
-            options += tr("Delete this recording");
-
-        dialogname = "exitplayoptions";
     }
     else
-    {
+        options += tr("Exit %1").arg(videotype);
 
-        message = tr("You are exiting this Video/DVD");
-       
-        options += tr("Keep Watching");
-        options += tr("Exit Video");
-        
-        dialogname = "videoexitplayoptions";
-    }
+    if (playbackinfo && DeleteAllowed())
+        options += tr("Delete this recording");
 
+    options += tr("Keep watching");
+    dialogname = "exitplayoptions";
+
     if (GetOSD())
         GetOSD()->NewDialogBox(dialogname, message, options, 0);
 }
@@ -7643,8 +7650,7 @@
         return false;
     
     return (dialogname == "askdeleterecording" ||
-            dialogname == "exitplayoptions"    ||
-            dialogname == "videoexitplayoptions");
+            dialogname == "exitplayoptions");
 }
 
 void TV::setLastProgram(ProgramInfo *rcinfo)
Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 12967)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -1243,7 +1243,9 @@
     gc->setLabel(QObject::tr("Action on playback exit"));
     gc->addSelection(QObject::tr("Just exit"), "0");
     gc->addSelection(QObject::tr("Save position and exit"), "2");
-    gc->addSelection(QObject::tr("Always prompt"), "1");
+    gc->addSelection(QObject::tr("Always prompt (excluding Live TV)"), "1");
+    gc->addSelection(QObject::tr("Always prompt (including Live TV)"), "4");
+    gc->addSelection(QObject::tr("Prompt for Live TV only"), "8");
     gc->setHelpText(QObject::tr("If set to prompt, a menu will be displayed "
                     "when you exit playback mode.  The options available will "
                     "allow you to save your position, delete the "
