mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
Fix issue when deleting items with the context menu
Thanks to Jekyll Wu for the analyses of the issue! BUG: 290307 BUG: 269096 BUG: 290954 BUG: 264583 FIXED-IN: 4.8.0
This commit is contained in:
parent
6d621d299d
commit
a0115f912a
|
@ -159,10 +159,10 @@ void DolphinContextMenu::slotKeyModifierPressed(Qt::Key key, bool pressed)
|
|||
void DolphinContextMenu::slotRemoveActionTriggered()
|
||||
{
|
||||
const KActionCollection* collection = m_mainWindow->actionCollection();
|
||||
if (m_shiftPressed) {
|
||||
collection->action("delete")->trigger();
|
||||
} else {
|
||||
if (moveToTrash()) {
|
||||
collection->action("move_to_trash")->trigger();
|
||||
} else {
|
||||
collection->action("delete")->trigger();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,7 +449,7 @@ QAction* DolphinContextMenu::createPasteAction()
|
|||
return action;
|
||||
}
|
||||
|
||||
KFileItemListProperties& DolphinContextMenu::selectedItemsProperties()
|
||||
KFileItemListProperties& DolphinContextMenu::selectedItemsProperties() const
|
||||
{
|
||||
if (!m_selectedItemsProperties) {
|
||||
m_selectedItemsProperties = new KFileItemListProperties(m_selectedItems);
|
||||
|
@ -541,13 +541,12 @@ void DolphinContextMenu::addCustomActions()
|
|||
void DolphinContextMenu::updateRemoveAction()
|
||||
{
|
||||
const KActionCollection* collection = m_mainWindow->actionCollection();
|
||||
const bool moveToTrash = selectedItemsProperties().isLocal() && !m_shiftPressed;
|
||||
|
||||
// Using m_removeAction->setText(action->text()) does not apply the &-shortcut.
|
||||
// This is only done until the original action has been shown at least once. To
|
||||
// bypass this issue, the text and &-shortcut is applied manually.
|
||||
const QAction* action = 0;
|
||||
if (moveToTrash) {
|
||||
if (moveToTrash()) {
|
||||
action = collection->action("move_to_trash");
|
||||
m_removeAction->setText(i18nc("@action:inmenu", "&Move to Trash"));
|
||||
} else {
|
||||
|
@ -558,4 +557,9 @@ void DolphinContextMenu::updateRemoveAction()
|
|||
m_removeAction->setShortcuts(action->shortcuts());
|
||||
}
|
||||
|
||||
bool DolphinContextMenu::moveToTrash() const
|
||||
{
|
||||
return selectedItemsProperties().isLocal() && !m_shiftPressed;
|
||||
}
|
||||
|
||||
#include "dolphincontextmenu.moc"
|
||||
|
|
|
@ -139,7 +139,7 @@ private:
|
|||
|
||||
QAction* createPasteAction();
|
||||
|
||||
KFileItemListProperties& selectedItemsProperties();
|
||||
KFileItemListProperties& selectedItemsProperties() const;
|
||||
|
||||
/**
|
||||
* Returns the file item for m_baseUrl.
|
||||
|
@ -170,10 +170,18 @@ private:
|
|||
|
||||
/**
|
||||
* Updates m_removeAction to represent the 'Delete'-action if the shift-key
|
||||
* has been pressed. Otherwise it represents the 'Move to Trash'-action.
|
||||
* has been pressed or the selection is not local. Otherwise it represents
|
||||
* the 'Move to Trash'-action.
|
||||
*/
|
||||
void updateRemoveAction();
|
||||
|
||||
/**
|
||||
* @return True if no shift key has been pressed and the selection represents
|
||||
* only local files.
|
||||
* @see updateRemoveAction(), slotRemoveActionTriggered()
|
||||
*/
|
||||
bool moveToTrash() const;
|
||||
|
||||
private:
|
||||
struct Entry
|
||||
{
|
||||
|
@ -201,7 +209,7 @@ private:
|
|||
KFileItem* m_baseFileItem; /// File item for m_baseUrl
|
||||
|
||||
KFileItemList m_selectedItems;
|
||||
KFileItemListProperties* m_selectedItemsProperties;
|
||||
mutable KFileItemListProperties* m_selectedItemsProperties;
|
||||
|
||||
int m_context;
|
||||
KonqCopyToMenu m_copyToMenu;
|
||||
|
|
Loading…
Reference in a new issue