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

List:       kde-commits
Subject:    branches/KDE/3.5/kdelibs/khtml
From:       Maks Orlovich <maksim () kde ! org>
Date:       2006-06-29 23:21:49
Message-ID: 1151623309.992193.15038.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 556326 by orlovich:

Make this show-popups-thingie a bit less of a DanglingPointerTown.
Fixes crashes on browsing away from cnn.com, other sites.
BUG:129187


 M  +18 -11    khtml_part.cpp  
 M  +1 -1      khtmlpart_p.h  


--- branches/KDE/3.5/kdelibs/khtml/khtml_part.cpp #556325:556326
@@ -1876,10 +1876,14 @@
     removeJSErrorExtension();
     setSuppressedPopupIndicator( false );
     d->m_openableSuppressedPopups = 0;
-    for ( KHTMLPart* part = d->m_suppressedPopupOriginParts.first(); part; part = \
                d->m_suppressedPopupOriginParts.next() ) {
-       KJS::Window *w = KJS::Window::retrieveWindow( part );
-       if (w)
-           w->forgetSuppressedWindows();
+    for ( QValueListIterator<QGuardedPtr<KHTMLPart> > i = \
d->m_suppressedPopupOriginParts.begin(); +          i != \
d->m_suppressedPopupOriginParts.end(); ++i ) { +       
+      if (KHTMLPart* part = *i) {
+        KJS::Window *w = KJS::Window::retrieveWindow( part );
+        if (w)
+          w->forgetSuppressedWindows();
+      }
     }
   }
 
@@ -7360,7 +7364,7 @@
 
     if ( enable && originPart ) {
         d->m_openableSuppressedPopups++;
-        if ( d->m_suppressedPopupOriginParts.find( originPart ) == -1 )
+        if ( d->m_suppressedPopupOriginParts.findIndex( originPart ) == -1 )
             d->m_suppressedPopupOriginParts.append( originPart );
     }
 
@@ -7405,12 +7409,15 @@
 }
 
 void KHTMLPart::showSuppressedPopups() {
-    for ( KHTMLPart* part = d->m_suppressedPopupOriginParts.first(); part; part = \
                d->m_suppressedPopupOriginParts.next() ) {
-       KJS::Window *w = KJS::Window::retrieveWindow( part );
-       if (w) {
-           w->showSuppressedWindows();
-           w->forgetSuppressedWindows();
-       }
+    for ( QValueListIterator<QGuardedPtr<KHTMLPart> > i = \
d->m_suppressedPopupOriginParts.begin(); +          i != \
d->m_suppressedPopupOriginParts.end(); ++i ) { +      if (KHTMLPart* part = *i) {
+        KJS::Window *w = KJS::Window::retrieveWindow( part );
+        if (w) {
+            w->showSuppressedWindows();
+            w->forgetSuppressedWindows();
+        }
+      }
     }
     setSuppressedPopupIndicator( false );
     d->m_openableSuppressedPopups = 0;
--- branches/KDE/3.5/kdelibs/khtml/khtmlpart_p.h #556325:556326
@@ -316,7 +316,7 @@
   KURLLabel* m_statusBarUALabel;
   KURLLabel* m_statusBarJSErrorLabel;
   KURLLabel* m_statusBarPopupLabel;
-  QPtrList<KHTMLPart> m_suppressedPopupOriginParts;
+  QValueList<QGuardedPtr<KHTMLPart> > m_suppressedPopupOriginParts;
   int m_openableSuppressedPopups;
   DOM::DocumentImpl *m_doc;
   khtml::Decoder *m_decoder;


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

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