[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 66958] Reload does not reload the current page in web sites with
From:       Germain Garand <germain () ebooksfrance ! com>
Date:       2007-07-23 0:58:40
Message-ID: 20070723005840.15071.qmail () ktown ! kde ! org
[Download RAW message or body]

------- 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<khtml::ChildFrame*>::Iterator it = d->m_frames.begin();
+    const QList<khtml::ChildFrame*>::Iterator end = d->m_frames.end();
+    for (; it != end; ++it) {
+      KHTMLPart* const part = qobject_cast<KHTMLPart *>( (*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<khtml::ChildFrame*>::Iterator it = m_frames.begin();
     const QList<khtml::ChildFrame*>::Iterator itEnd = m_frames.end();
     for (; it != itEnd; ++it) {
-      KHTMLPart* const part = static_cast<KHTMLPart *>((KParts::ReadOnlyPart \
                *)(*it)->m_part);
-      if (part->inherits("KHTMLPart"))
+      KHTMLPart* const part = qobject_cast<KHTMLPart *>( (*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.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic