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

List:       kfm-devel
Subject:    Re: [PATCH] Get rid of dialogs when visiting netvibes.com
From:       Aurélien Gâteau <aurelien.gateau () free ! fr>
Date:       2008-01-14 12:44:23
Message-ID: E1JEOfw-00018O-BH () trinity
[Download RAW message or body]

Germain Garand wrote:

> Le Jeudi 10 Janvier 2008 10:11, Aurélien Gâteau a écrit :
>> Germain Garand wrote:
>> > so it would be hard to argue against extending that check to
>> > ChildFrame::IFrame for consistency.
>>
>> Thanks a lot! Attached simple patch do what you suggest. I believe it's
>> the best way to fix this.
>>
> 
> the patch is not enough I think because we currently do not save the frame
> type in the page cache. So e.g. using back/forward, you'd get the dialog
> again.

You are right, here is a new version.

Aurélien

["kdelibs_netvibes_nodialog4.diff" (text/x-diff)]

Index: khtml/khtml_part.cpp
===================================================================
--- khtml/khtml_part.cpp	(revision 761058)
+++ khtml/khtml_part.cpp	(working copy)
@@ -4395,7 +4395,7 @@
     // Before attempting to load a part, check if the user wants that.
     // Many don't like getting ZIP files embedded.
     // However we don't want to ask for flash and other plugin things..
-    if ( child->m_type != khtml::ChildFrame::Object )
+    if ( child->m_type != khtml::ChildFrame::Object && child->m_type != \
khtml::ChildFrame::IFrame )  {
       QString suggestedFileName;
       int disposition = 0;
@@ -5362,6 +5362,7 @@
   QStringList frameNameLst, frameServiceTypeLst, frameServiceNameLst;
   KUrl::List frameURLLst;
   QList<QByteArray> frameStateBufferLst;
+  QList<int> frameTypeLst;
 
   ConstFrameIt it = d->m_frames.begin();
   const ConstFrameIt end = d->m_frames.end();
@@ -5382,11 +5383,13 @@
       (*it)->m_extension->saveState( frameStream );
 
     frameStateBufferLst << state;
+
+    frameTypeLst << int( (*it)->m_type );
   }
 
   // Save frame data
   stream << (quint32) frameNameLst.count();
-  stream << frameNameLst << frameServiceTypeLst << frameServiceNameLst << \
frameURLLst << frameStateBufferLst; +  stream << frameNameLst << frameServiceTypeLst \
<< frameServiceNameLst << frameURLLst << frameStateBufferLst << frameTypeLst;  \
#ifndef NDEBUG  s_saveStateIndentLevel = indentLevel;
 #endif
@@ -5398,6 +5401,7 @@
   qint32 xOffset, yOffset, wContents, hContents, mWidth, mHeight;
   quint32 frameCount;
   QStringList frameNames, frameServiceTypes, docState, frameServiceNames;
+  QList<int> frameTypes;
   KUrl::List frameURLs;
   QList<QByteArray> frameStateBuffers;
   QList<int> fSizes;
@@ -5448,7 +5452,7 @@
   setPageSecurity( d->m_ssl_in_use ? Encrypted : NotCrypted );
 
   stream >> frameCount >> frameNames >> frameServiceTypes >> frameServiceNames
-         >> frameURLs >> frameStateBuffers;
+         >> frameURLs >> frameStateBuffers >> frameTypes;
 
   d->m_bComplete = false;
   d->m_bLoadEventEmitted = false;
@@ -5475,8 +5479,9 @@
     QStringList::ConstIterator fServiceNameIt = frameServiceNames.begin();
     KUrl::List::ConstIterator fURLIt = frameURLs.begin();
     QList<QByteArray>::ConstIterator fBufferIt = frameStateBuffers.begin();
+    QList<int>::ConstIterator fFrameTypeIt = frameTypes.begin();
 
-    for (; fIt != fEnd; ++fIt, ++fNameIt, ++fServiceTypeIt, ++fServiceNameIt, \
++fURLIt, ++fBufferIt ) +    for (; fIt != fEnd; ++fIt, ++fNameIt, ++fServiceTypeIt, \
++fServiceNameIt, ++fURLIt, ++fBufferIt, ++fFrameTypeIt )  {
       khtml::ChildFrame* const child = *fIt;
 
@@ -5487,6 +5492,7 @@
         child->m_bPreloaded = true;
         child->m_name = *fNameIt;
         child->m_serviceName = *fServiceNameIt;
+        child->m_type = static_cast<khtml::ChildFrame::Type>(*fFrameTypeIt);
         processObjectRequest( child, *fURLIt, *fServiceTypeIt );
       }
       if ( child->m_part )
@@ -5534,13 +5540,15 @@
     QStringList::ConstIterator fServiceNameIt = frameServiceNames.begin();
     KUrl::List::ConstIterator fURLIt = frameURLs.begin();
     QList<QByteArray>::ConstIterator fBufferIt = frameStateBuffers.begin();
+    QList<int>::ConstIterator fFrameTypeIt = frameTypes.begin();
 
-    for (; fNameIt != fNameEnd; ++fNameIt, ++fServiceTypeIt, ++fServiceNameIt, \
++fURLIt, ++fBufferIt ) +    for (; fNameIt != fNameEnd; ++fNameIt, ++fServiceTypeIt, \
++fServiceNameIt, ++fURLIt, ++fBufferIt, ++fFrameTypeIt )  {
       khtml::ChildFrame* const newChild = new khtml::ChildFrame;
       newChild->m_bPreloaded = true;
       newChild->m_name = *fNameIt;
       newChild->m_serviceName = *fServiceNameIt;
+      newChild->m_type = static_cast<khtml::ChildFrame::Type>(*fFrameTypeIt);
 
 //      kDebug( 6050 ) << *fNameIt << " ---- " << *fServiceTypeIt;
 



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

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