fixes for overwriting not mergable screen displayed on top of merged ones

This commit is contained in:
Andrzej Rybczak
2011-11-19 20:07:51 +01:00
parent df62a28c72
commit 4a8cfcb187
3 changed files with 6 additions and 14 deletions

View File

@@ -2388,7 +2388,9 @@ int main(int argc, char **argv)
# ifdef ENABLE_VISUALIZER
// visualizer sets timmeout to 40ms, but since only it needs such small
// value, we should restore defalt one after switching to another screen.
if (wFooter->GetTimeout() < ncmpcpp_window_timeout && !isVisible(myVisualizer))
if (wFooter->GetTimeout() < ncmpcpp_window_timeout
&& !(myScreen == myVisualizer || myLockedScreen == myVisualizer || myInactiveScreen == myVisualizer)
)
wFooter->SetTimeout(ncmpcpp_window_timeout);
# endif // ENABLE_VISUALIZER
}

View File

@@ -29,7 +29,7 @@ using Global::myInactiveScreen;
void ApplyToVisibleWindows(void (BasicScreen::*f)())
{
if (myLockedScreen)
if (myLockedScreen && myScreen->isMergable())
{
if (myScreen == myLockedScreen)
{
@@ -51,7 +51,7 @@ bool isVisible(BasicScreen *screen)
{
assert(screen != 0);
if (myLockedScreen && myScreen->isMergable())
return screen == myScreen || screen == myInactiveScreen || screen == myLockedScreen;
return screen == myInactiveScreen || screen == myLockedScreen;
else
return screen == myScreen;
}

View File

@@ -158,17 +158,7 @@ void TraceMpdStatus()
Global::UpdateStatusImmediately = 0;
}
if (myLockedScreen)
{
if (myScreen == myLockedScreen)
{
if (myInactiveScreen)
myInactiveScreen->Update();
}
else
myLockedScreen->Update();
}
myScreen->Update();
ApplyToVisibleWindows(&BasicScreen::Update);
if (isVisible(myPlaylist) && myPlaylist->ActiveWindow() == myPlaylist->Items
&& Timer.tv_sec == myPlaylist->Timer()+Config.playlist_disable_highlight_delay