Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > f56245b36fb217cb826b4585621bb690 > files > 42

kdelibs-3.5.4-26.el5_7.1.src.rpm

Index: khtml/khtml_ext.cpp
===================================================================
--- khtml/khtml_ext.cpp	(Revision 579135)
+++ khtml/khtml_ext.cpp	(Revision 579136)
@@ -38,6 +38,7 @@
 #include <qclipboard.h>
 #include <qfileinfo.h>
 #include <qpopupmenu.h>
+#include <qurl.h>
 #include <qmetaobject.h>
 #include <private/qucomextra_p.h>
 #include <qdragobject.h>
@@ -273,7 +274,9 @@
     if( !KURIFilter::self()->filterURI(data, list) )
     {
         KDesktopFile file("searchproviders/google.desktop", true, "services");
-        data.setData(file.readEntry("Query").replace("\\{@}", m_part->selectedText()));
+	QString encodedSearchTerm = m_part->selectedText();
+	QUrl::encode(encodedSearchTerm);
+	data.setData(file.readEntry("Query").replace("\\{@}", encodedSearchTerm));
     }
 
     KParts::URLArgs args;
@@ -441,6 +444,7 @@
 
       // search text
       QString selectedText = khtml->selectedText();
+      selectedText.replace("&", "&&");
       if ( selectedText.length()>18 ) {
         selectedText.truncate(15);
         selectedText+="...";
Index: khtml/khtml_ext.cpp
===================================================================
--- khtml/khtml_ext.cpp	(Revision 583922)
+++ khtml/khtml_ext.cpp	(Revision 583923)
@@ -476,7 +476,8 @@
         name = "Google";
       }
 
-      new KAction( i18n( "Search '%1' at %2" ).arg( selectedText ).arg( name ), icon, 0, d->m_khtml->browserExtension(),
+      // using .arg(foo, bar) instead of .arg(foo).arg(bar), as foo can contain %x
+      new KAction( i18n( "Search '%1' at %2" ).arg( selectedText, name ), icon, 0, d->m_khtml->browserExtension(),
                      SLOT( searchProvider() ), actionCollection(), "searchProvider" );
 
       // favorite search providers