------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=66958 ------- Additional Comments From germain ebooksfrance com 2007-07-23 02:58 ------- SVN commit 691143 by ggarand: reinstating patch by Hasso Tepper that was once reverted for BIC problems, then forgotten. (kdelibs part) CCBUG: 66958 M +22 -2 khtml/khtml_part.cpp M +2 -0 kparts/browserextension.cpp M +7 -0 kparts/browserextension.h --- trunk/KDE/kdelibs/khtml/khtml_part.cpp #691142:691143 @ -632,6 +632,26 @ isFrameSet = htmlDoc->body() && (htmlDoc->body()->id() == ID_FRAMESET); } + if (isFrameSet && urlcmp( url.url(), this->url().url(), KUrl::CompareWithoutTrailingSlash | KUrl::CompareWithoutFragment ) + && args.softReload) + { + QList::Iterator it = d->m_frames.begin(); + const QList::Iterator end = d->m_frames.end(); + for (; it != end; ++it) { + KHTMLPart* const part = qobject_cast( (*it)->m_part ); + if (part) + { + // We are reloading frames to make them jump into offsets. + KParts::URLArgs partargs( part->d->m_extension->urlArgs() ); + partargs.reload = true; + part->d->m_extension->setUrlArgs(partargs); + + part->openUrl( part->url() ); + } + }/*next it*/ + return true; + } + if ( url.hasRef() && !isFrameSet ) { bool noReloadForced = !args.reload && !args.redirectedRequest() && !args.doPost(); @ -2594,8 +2614,8 @ QList::Iterator it = m_frames.begin(); const QList::Iterator itEnd = m_frames.end(); for (; it != itEnd; ++it) { - KHTMLPart* const part = static_cast((KParts::ReadOnlyPart *)(*it)->m_part); - if (part->inherits("KHTMLPart")) + KHTMLPart* const part = qobject_cast( (*it)->m_part ); + if (part) part->d->setFlagRecursively(flag, value); }/*next it*/ } --- trunk/KDE/kdelibs/kparts/browserextension.cpp #691142:691143 @ -118,6 +118,7 @ URLArgs::URLArgs() { reload = false; + softReload = false; xOffset = 0; yOffset = 0; trustedSource = false; @ -147,6 +148,7 @ delete d; d= 0; reload = args.reload; + softReload = args.softReload; xOffset = args.xOffset; yOffset = args.yOffset; serviceType = args.serviceType; --- trunk/KDE/kdelibs/kparts/browserextension.h #691142:691143 @ -81,6 +81,13 @ */ bool reload; /** + * p softReload is set when user just hits reload button. It's used + * currently for two different frameset reload strategies. In case of + * soft reload individual frames are reloaded instead of reloading whole + * frameset. + */ + bool softReload; + /** * p xOffset is the horizontal scrolling of the part's widget * (in case it's a scrollview). This is saved into the history * and restored when going back in the history.