Fixes bug 1223841: Transition does not work if texts are the same

Fixes: https://launchpad.net/bugs/1223841
This commit is contained in:
Oliver Wieland 2013-09-12 20:38:46 +02:00
parent 6d985964f9
commit 9bb6d699c7

View File

@ -129,9 +129,8 @@ sup {
} }
function show_text(newtext){ function show_text(newtext){
var fade_direction = 0;
var match = /-webkit-text-fill-color:[^;\"]+/gi; var match = /-webkit-text-fill-color:[^;\"]+/gi;
if(timer != null)
clearTimeout(timer);
/* /*
QtWebkit bug with outlines and justify causing outline alignment QtWebkit bug with outlines and justify causing outline alignment
problems. (Bug 859950) Surround each word with a <span> to workaround, problems. (Bug 859950) Surround each word with a <span> to workaround,
@ -150,14 +149,17 @@ sup {
newtext = '<span>' + newtext + '</span>'; newtext = '<span>' + newtext + '</span>';
} }
} }
text_fade('lyricsmain', newtext); text_fade('lyricsmain', newtext);
text_fade('lyricsoutline', newtext); text_fade('lyricsoutline', newtext);
text_fade('lyricsshadow', newtext.replace(match, '')); text_fade('lyricsshadow', newtext.replace(match, ''));
if(text_opacity() == 1) return; if(text_opacity() == 1) return;
timer = setTimeout(function(){ timer = setInterval(function(){
show_text(newtext); text_fade('lyricsmain', newtext);
text_fade('lyricsoutline', newtext);
text_fade('lyricsshadow', newtext.replace(match, ''));
if(text_opacity() == 1) clearInterval(timer);
}, 100); }, 100);
}
function text_fade(id, newtext){ function text_fade(id, newtext){
/* /*
@ -175,14 +177,17 @@ sup {
text.innerHTML = newtext; text.innerHTML = newtext;
return; return;
} }
if(newtext == text.innerHTML){ if(fade_direction != 1){
text.style.opacity = parseFloat(text.style.opacity) + 0.3;
if(text.style.opacity > 0.7)
text.style.opacity = 1;
} else {
text.style.opacity = parseFloat(text.style.opacity) - 0.3; text.style.opacity = parseFloat(text.style.opacity) - 0.3;
if(text.style.opacity <= 0.1){ if(text.style.opacity <= 0.1){
text.innerHTML = newtext; text.innerHTML = newtext;
fade_direction = 1;
}
}else{
text.style.opacity = parseFloat(text.style.opacity) + 0.3;
if(text.style.opacity > 0.7){
text.style.opacity = 1;
}
} }
} }
} }