CVS commit by faure: Don't show actions (servicemenus) for trashed items nor trash.desktop by default. BUG: 97607 M +25 -12 konq_popupmenu.cc 1.214 --- kdebase/libkonq/konq_popupmenu.cc #1.213:1.214 @@ -599,4 +599,5 @@ void KonqPopupMenu::setup(KonqPopupFlags PopupServices s; + KURL urlForServiceMenu( m_lstItems.first()->url() ); // 1 - Look for builtin and user-defined services @@ -610,4 +611,9 @@ void KonqPopupMenu::setup(KonqPopupFlags const QString priority = cfg.readEntry("X-KDE-Priority"); const QString submenuName = cfg.readEntry( "X-KDE-Submenu" ); + if ( cfg.readEntry("Type") == "Link" ) { + urlForServiceMenu = cfg.readEntry("URL"); + // TODO: Do we want to make all the actions apply on the target + // of the .desktop file instead of the .desktop file itself? + } ServiceList* list = s.selectList( priority, submenuName ); (*list) = KDEDesktopMimeType::userDefinedServices( path, cfg, url.isLocalFile() ); @@ -667,5 +673,12 @@ void KonqPopupMenu::setup(KonqPopupFlags { const QString protocol = cfg.readEntry( "X-KDE-Protocol" ); - if ( protocol != m_sViewURL.protocol() ) + if ( protocol != urlForServiceMenu.protocol() ) + continue; + } + else if ( urlForServiceMenu.protocol() == "trash" ) + { + // Require servicemenus for the trash to ask for protocol=trash explicitely. + // Trashed files aren't supposed to be available for actions. + // One might want a servicemenu for trash.desktop itself though. continue; }