mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
Improve copying and moving items between panels
Currently, copying the selected items between panels is performed by the active panel, which is wrong, because the inactive panel cannot select the copied items after the operation is completed (as it happens when drag'n'dropping or copying using keyboard shortcuts).
This commit is contained in:
parent
a9f2abeea4
commit
78a3cd3e4b
|
@ -325,36 +325,44 @@ void DolphinTabWidget::restoreClosedTab(const QByteArray &state)
|
|||
|
||||
void DolphinTabWidget::copyToInactiveSplitView()
|
||||
{
|
||||
const DolphinTabPage *tabPage = tabPageAt(currentIndex());
|
||||
DolphinViewContainer *activeViewContainer = currentTabPage()->activeViewContainer();
|
||||
if (!tabPage->splitViewEnabled() || activeViewContainer->view()->selectedItems().isEmpty()) {
|
||||
const DolphinTabPage *tabPage = currentTabPage();
|
||||
if (!tabPage->splitViewEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (tabPage->primaryViewActive()) {
|
||||
// copy from left panel to right
|
||||
activeViewContainer->view()->copySelectedItems(activeViewContainer->view()->selectedItems(), tabPage->secondaryViewContainer()->url());
|
||||
} else {
|
||||
// copy from right panel to left
|
||||
activeViewContainer->view()->copySelectedItems(activeViewContainer->view()->selectedItems(), tabPage->primaryViewContainer()->url());
|
||||
const KFileItemList selectedItems = tabPage->activeViewContainer()->view()->selectedItems();
|
||||
if (selectedItems.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
DolphinView *inactiveView;
|
||||
if (tabPage->primaryViewActive()) {
|
||||
inactiveView = tabPage->secondaryViewContainer()->view();
|
||||
} else {
|
||||
inactiveView = tabPage->primaryViewContainer()->view();
|
||||
}
|
||||
inactiveView->copySelectedItems(selectedItems, inactiveView->url());
|
||||
}
|
||||
|
||||
void DolphinTabWidget::moveToInactiveSplitView()
|
||||
{
|
||||
const DolphinTabPage *tabPage = tabPageAt(currentIndex());
|
||||
DolphinViewContainer *activeViewContainer = currentTabPage()->activeViewContainer();
|
||||
if (!tabPage->splitViewEnabled() || activeViewContainer->view()->selectedItems().isEmpty()) {
|
||||
const DolphinTabPage *tabPage = currentTabPage();
|
||||
if (!tabPage->splitViewEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (tabPage->primaryViewActive()) {
|
||||
// move from left panel to right
|
||||
activeViewContainer->view()->moveSelectedItems(activeViewContainer->view()->selectedItems(), tabPage->secondaryViewContainer()->url());
|
||||
} else {
|
||||
// move from right panel to left
|
||||
activeViewContainer->view()->moveSelectedItems(activeViewContainer->view()->selectedItems(), tabPage->primaryViewContainer()->url());
|
||||
const KFileItemList selectedItems = tabPage->activeViewContainer()->view()->selectedItems();
|
||||
if (selectedItems.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
DolphinView *inactiveView;
|
||||
if (tabPage->primaryViewActive()) {
|
||||
inactiveView = tabPage->secondaryViewContainer()->view();
|
||||
} else {
|
||||
inactiveView = tabPage->primaryViewContainer()->view();
|
||||
}
|
||||
inactiveView->moveSelectedItems(selectedItems, inactiveView->url());
|
||||
}
|
||||
|
||||
void DolphinTabWidget::detachTab(int index)
|
||||
|
|
|
@ -814,6 +814,14 @@ void DolphinView::copySelectedItemsToClipboard()
|
|||
|
||||
void DolphinView::copySelectedItems(const KFileItemList &selection, const QUrl &destinationUrl)
|
||||
{
|
||||
if (selection.isEmpty() || !destinationUrl.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_clearSelectionBeforeSelectingNewItems = true;
|
||||
m_markFirstNewlySelectedItemAsCurrent = true;
|
||||
m_selectJobCreatedItems = true;
|
||||
|
||||
KIO::CopyJob *job = KIO::copy(selection.urlList(), destinationUrl, KIO::DefaultFlags);
|
||||
KJobWidgets::setWindow(job, this);
|
||||
|
||||
|
@ -825,6 +833,14 @@ void DolphinView::copySelectedItems(const KFileItemList &selection, const QUrl &
|
|||
|
||||
void DolphinView::moveSelectedItems(const KFileItemList &selection, const QUrl &destinationUrl)
|
||||
{
|
||||
if (selection.isEmpty() || !destinationUrl.isValid()) {
|
||||
return;
|
||||
}
|
||||
|
||||
m_clearSelectionBeforeSelectingNewItems = true;
|
||||
m_markFirstNewlySelectedItemAsCurrent = true;
|
||||
m_selectJobCreatedItems = true;
|
||||
|
||||
KIO::CopyJob *job = KIO::move(selection.urlList(), destinationUrl, KIO::DefaultFlags);
|
||||
KJobWidgets::setWindow(job, this);
|
||||
|
||||
|
|
Loading…
Reference in a new issue