diff -r cb62a4f66ebe -r 6297cdf66332 webengine/osswebengine/WebCore/loader/FrameLoader.cpp --- a/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Thu Jan 07 13:31:38 2010 +0200 +++ b/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Mon Jan 18 21:20:18 2010 +0200 @@ -226,6 +226,7 @@ , m_wasUnloadEventEmitted(false) , m_isComplete(false) , m_isLoadingMainResource(false) + , m_mayLoadIconLater(false) , m_cancellingWithLoadInProgress(false) , m_needsClear(false) , m_receivedData(false) @@ -1043,11 +1044,17 @@ void FrameLoader::iconLoadDecisionAvailable() { - if (!m_mayLoadIconLater) - return; LOG(IconDatabase, "FrameLoader %p was told a load decision is available for its icon", this); - startIconLoader(); - m_mayLoadIconLater = false; + if (m_mayLoadIconLater) { + // Notfification came from iconDataBase to load the icon + startIconLoader(); + m_mayLoadIconLater = false; + } else { + // Icon was specified in tag with rel="icon" or rel="shortcut icon" property + if(m_iconLoader) + m_iconLoader->stopLoading(); // cancel previous loading state + startIconLoader(); + } } void FrameLoader::startIconLoader() @@ -1517,7 +1524,17 @@ rect = anchorNode->getRect(); } if (renderer) - renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways); + { + if(!anchorNode) + { + renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignToEdgeIfNeeded); + } + else + { + renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways); + } + + } return true; }