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 # ifdef ENABLE_VISUALIZER
// visualizer sets timmeout to 40ms, but since only it needs such small // visualizer sets timmeout to 40ms, but since only it needs such small
// value, we should restore defalt one after switching to another screen. // 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); wFooter->SetTimeout(ncmpcpp_window_timeout);
# endif // ENABLE_VISUALIZER # endif // ENABLE_VISUALIZER
} }

View File

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

View File

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