From a760303dd89199beb31f1df9a8f99c4eb989957b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Tue, 31 May 2022 08:56:09 +0200 Subject: [PATCH] Fix the last wrong condition from commit 99739b61143c05f7fb1157dc145e19e9c090de6e. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert the wrong fix from commit 3d3e77773df70317267c2d471c37e9374256590d. If desktop file does not include X-TDE-Protocols property, use X-KDE-Protocols property to limit the use of TDEIO protocols for non-TDE programs. This resolves issue TDE/tdebase#224. Signed-off-by: Slávek Banko (cherry picked from commit eaa7f3e3d4eac4876803d20bdda9ee0d701d5f5b) --- kio/kio/krun.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/kio/kio/krun.cpp b/kio/kio/krun.cpp index 298cc93eb..f49cc441c 100644 --- a/kio/kio/krun.cpp +++ b/kio/kio/krun.cpp @@ -699,8 +699,12 @@ static pid_t runTempService( const KService& _service, const KURL::List& _urls, static KURL::List resolveURLs( const KURL::List& _urls, const KService& _service ) { // Check which protocols the application supports. - // This can be a list of actual protocol names, or just KIO for KDE apps. + // This can be a list of actual protocol names, or just TDEIO for TDE apps, or KIO for KDE apps. TQStringList supportedProtocols = _service.property("X-KDE-Protocols").toStringList(); + if (supportedProtocols.isEmpty()) + { + supportedProtocols = _service.property("X-TDE-Protocols").toStringList(); + } KRunMX1 mx1( _service ); TQString exec = _service.exec(); if ( mx1.expandMacrosShellQuote( exec ) && !mx1.hasUrls ) { @@ -708,9 +712,9 @@ static KURL::List resolveURLs( const KURL::List& _urls, const KService& _service } else { if ( supportedProtocols.isEmpty() ) { - // compat mode: assume KIO if not set and it's a KDE app + // compat mode: assume KIO if not set and it's a TDE or KDE app TQStringList categories = _service.property("Categories").toStringList(); - if (( categories.find("TDE") != categories.end() ) && ( categories.find("KDE") != categories.end() )) + if ((categories.find("TDE") != categories.end()) || (categories.find("KDE") != categories.end())) supportedProtocols.append( "KIO" ); else { // if no KDE app, be a bit over-generic supportedProtocols.append( "http"); @@ -721,13 +725,13 @@ static KURL::List resolveURLs( const KURL::List& _urls, const KService& _service kdDebug(7010) << "supportedProtocols:" << supportedProtocols << endl; KURL::List urls( _urls ); - if ( supportedProtocols.find( "KIO" ) == supportedProtocols.end() ) { + if ((supportedProtocols.find("KIO") == supportedProtocols.end()) && + (supportedProtocols.find("TDEIO") == supportedProtocols.end())) { for( KURL::List::Iterator it = urls.begin(); it != urls.end(); ++it ) { const KURL url = *it; bool supported = url.isLocalFile() || supportedProtocols.find( url.protocol().lower() ) != supportedProtocols.end(); kdDebug(7010) << "Looking at url=" << url << " supported=" << supported << endl; - if ( !supported && KProtocolInfo::protocolClass(url.protocol()) == ":local" && - !url.url().startsWith("media:/") && !url.url().startsWith("system:/media")) + if ((!supported) && (KProtocolInfo::protocolClass(url.protocol()) == ":local")) { // Maybe we can resolve to a local URL? KURL localURL = KIO::NetAccess::mostLocalURL( url, 0 );