[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