Index: mythtv/libs/libmythui/mythscreentype.cpp =================================================================== --- mythtv/libs/libmythui/mythscreentype.cpp (revision 16409) +++ mythtv/libs/libmythui/mythscreentype.cpp (working copy) @@ -159,6 +159,12 @@ { } +void MythScreenType::DeleteScreen(void) +{ + if (!IsDeleting()) + m_ScreenStack->PopScreen(); +} + bool MythScreenType::IsDeleting(void) { return m_IsDeleting; Index: mythtv/libs/libmythui/mythscreentype.h =================================================================== --- mythtv/libs/libmythui/mythscreentype.h (revision 16409) +++ mythtv/libs/libmythui/mythscreentype.h (working copy) @@ -34,6 +34,8 @@ bool IsDeleting(void); void SetDeleting(bool deleting); + void DeleteScreen(void); + protected: // for the global store.. MythScreenType(MythUIType *parent, const char *name, Index: mythtv/libs/libmythui/mythscreenstack.cpp =================================================================== --- mythtv/libs/libmythui/mythscreenstack.cpp (revision 16409) +++ mythtv/libs/libmythui/mythscreenstack.cpp (working copy) @@ -78,6 +78,8 @@ if (!top || top->IsDeleting()) return; + top->SetDeleting(true); + MythMainWindow *mainwindow = GetMythMainWindow(); qApp->lock(); @@ -86,7 +88,6 @@ if (allowFade && m_DoTransitions && !mainwindow->IsExitingToMain()) { top->SetFullscreen(false); - top->SetDeleting(true); m_ToDelete.push_back(top); top->AdjustAlpha(1, -kFadeVal); } Index: mythtv/programs/mythfrontend/mythappearance.cpp =================================================================== --- mythtv/programs/mythfrontend/mythappearance.cpp (revision 16409) +++ mythtv/programs/mythfrontend/mythappearance.cpp (working copy) @@ -159,7 +159,7 @@ else if (action == "ESCAPE") { gContext->removeCurrentLocation(); - GetMythMainWindow()->GetMainStack()->PopScreen(); + DeleteScreen(); } else handled = false;