[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.5
From: Hasso Tepper <hasso () kde ! org>
Date: 2007-01-14 19:50:58
Message-ID: 1168804258.417969.10856.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 623425 by hasso:
Implement soft frameset reload strategy - reload individual frames only.
Frameset can be still reset via moving cursor into URL bar and pressing
the enter key.
Reviewed by Germain Garand.
BUG:66958
M +1 -1 kdebase/konqueror/konq_mainwindow.cc
M +5 -2 kdebase/konqueror/konq_view.cc
M +1 -1 kdebase/konqueror/konq_view.h
M +19 -0 kdelibs/khtml/khtml_part.cpp
M +2 -0 kdelibs/kparts/browserextension.cpp
M +7 -0 kdelibs/kparts/browserextension.h
--- branches/KDE/3.5/kdebase/konqueror/konq_mainwindow.cc #623424:623425
@@ -1766,7 +1766,7 @@
KonqOpenURLRequest req( reloadView->typedURL() );
req.userRequestedReload = true;
- if ( reloadView->prepareReload( req.args ) )
+ if ( reloadView->prepareReload( req.args, true /* softReload */ ) )
{
reloadView->lockHistory();
// Reuse current servicetype for local files, but not for remote files (it \
could have changed, e.g. over HTTP)
--- branches/KDE/3.5/kdebase/konqueror/konq_view.cc #623424:623425
@@ -170,7 +170,7 @@
// Typing "Enter" again after the URL of an aborted view, triggers a reload.
if ( m_bAborted && m_pPart && m_pPart->url() == url && !args.doPost())
{
- if ( !prepareReload( args ) )
+ if ( !prepareReload( args, false /* not softReload */ ) )
return;
if ( ext )
ext->setURLArgs( args );
@@ -1347,9 +1347,12 @@
KGlobal::_activeInstance = m_pPart->instance();
}
-bool KonqView::prepareReload( KParts::URLArgs& args )
+bool KonqView::prepareReload( KParts::URLArgs& args, bool softReload )
{
args.reload = true;
+ if ( softReload )
+ args.softReload = true;
+
// Repost form data if this URL is the result of a POST HTML form.
if ( m_doPost && !args.redirectedRequest() )
{
--- branches/KDE/3.5/kdebase/konqueror/konq_view.h #623424:623425
@@ -314,7 +314,7 @@
// Called before reloading this view. Sets args.reload to true, and offers to \
repost form data. // Returns false in case the reload must be cancelled.
- bool prepareReload( KParts::URLArgs& args );
+ bool prepareReload( KParts::URLArgs& args, bool softReload );
// overload for the QString version
void setLocationBarURL( const KURL& locationBarURL );
--- branches/KDE/3.5/kdelibs/khtml/khtml_part.cpp #623424:623425
@@ -639,6 +639,25 @@
isFrameSet = htmlDoc->body() && (htmlDoc->body()->id() == ID_FRAMESET);
}
+ if (isFrameSet && urlcmp( url.url(), m_url.url(), true, true ) && args.softReload)
+ {
+ QValueList<khtml::ChildFrame*>::Iterator it = d->m_frames.begin();
+ const QValueList<khtml::ChildFrame*>::Iterator end = d->m_frames.end();
+ for (; it != end; ++it) {
+ KHTMLPart* const part = static_cast<KHTMLPart *>((KParts::ReadOnlyPart \
*)(*it)->m_part); + if (part->inherits("KHTMLPart"))
+ {
+ // 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();
--- branches/KDE/3.5/kdelibs/kparts/browserextension.cpp #623424:623425
@@ -87,6 +87,7 @@
URLArgs::URLArgs()
{
reload = false;
+ softReload = false;
xOffset = 0;
yOffset = 0;
trustedSource = false;
@@ -116,6 +117,7 @@
delete d; d= 0;
reload = args.reload;
+ softReload = args.softReload;
xOffset = args.xOffset;
yOffset = args.yOffset;
serviceType = args.serviceType;
--- branches/KDE/3.5/kdelibs/kparts/browserextension.h #623424:623425
@@ -74,6 +74,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.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic