X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/41c14c5f8ebc00ba443f13d300f5b445aee7aa1b..ebba84fbdd1effc828f88e08966dad5982371ecc:/src/dolphinpart.cpp diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp index 21b0ccdfc..fbaa6fe49 100644 --- a/src/dolphinpart.cpp +++ b/src/dolphinpart.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -359,36 +360,32 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, item = KFileItem( S_IFDIR, (mode_t)-1, url() ); } + // TODO: We should change the signature of the slots (and signals) for being able + // to tell for which items we want a popup. + const KFileItemList items = (m_view->selectedItems().count() ? m_view->selectedItems() + : KFileItemList() << item); + KFileItemListProperties capabilities(items); + KParts::BrowserExtension::ActionGroupMap actionGroups; QList editActions; editActions += customActions; if (!_item.isNull()) { // only for context menu on one or more items - bool sDeleting = true; - bool sMoving = true; + bool supportsDeleting = capabilities.supportsDeleting(); + bool supportsMoving = capabilities.supportsMoving(); - // If the parent directory of the selected item is writable, moving - // and deleting are possible. - KFileItem parentDir = m_dirLister->rootItem(); - if (!parentDir.isNull() && !parentDir.isWritable()) { + if (!supportsDeleting) { popupFlags |= KParts::BrowserExtension::NoDeletion; - sDeleting = false; - sMoving = false; } - if ( sMoving ) + if (supportsMoving) { editActions.append(actionCollection()->action("rename")); + } - bool addTrash = false; + bool addTrash = capabilities.isLocal() && supportsMoving; bool addDel = false; - - bool isIntoTrash = _item.url().protocol() == "trash"; - - if ( sMoving && !isIntoTrash && item.isLocalFile() ) - addTrash = true; - - if ( sDeleting ) { + if (supportsDeleting) { if ( !item.isLocalFile() ) addDel = true; else if (QApplication::keyboardModifiers() & Qt::ShiftModifier) { @@ -398,8 +395,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, else { KSharedConfig::Ptr globalConfig = KSharedConfig::openConfig("kdeglobals", KConfig::IncludeGlobals); KConfigGroup configGroup(globalConfig, "KDE"); - if ( configGroup.readEntry("ShowDeleteCommand", false) ) - addDel = true; + addDel = configGroup.readEntry("ShowDeleteCommand", false); } } @@ -408,7 +404,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, if (addDel) editActions.append(actionCollection()->action("delete")); - // Normally KonqPopupMenu only shows the "Create new" subdir in the current view + // Normally KonqPopupMenu only shows the "Create new" submenu in the current view // since otherwise the created file would not be visible. // But in treeview mode we should allow it. if (m_view->itemsExpandable()) @@ -418,10 +414,6 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, actionGroups.insert("editactions", editActions); - // TODO: We should change the signature of the slots (and signals) for being able - // to tell for which items we want a popup. - KFileItemList items = (m_view->selectedItems().count() ? m_view->selectedItems() - : KFileItemList() << item); emit m_extension->popupMenu(QCursor::pos(), items, KParts::OpenUrlArguments(), @@ -433,7 +425,7 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, void DolphinPart::slotRedirection(const KUrl& oldUrl, const KUrl& newUrl) { //kDebug() << oldUrl << newUrl << "currentUrl=" << url(); - if (oldUrl == url()) { + if (oldUrl.equals(url(), KUrl::CompareWithoutTrailingSlash /* #207572 */)) { KParts::ReadOnlyPart::setUrl(newUrl); const QString prettyUrl = newUrl.pathOrUrl(); emit m_extension->setLocationBarUrl(prettyUrl); @@ -467,6 +459,11 @@ void DolphinPartBrowserExtension::paste() m_part->view()->paste(); } +void DolphinPartBrowserExtension::pasteTo(const KUrl&) +{ + m_part->view()->pasteIntoFolder(); +} + void DolphinPartBrowserExtension::reparseConfiguration() { m_part->view()->refresh();