]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'Applications/17.08'
authorElvis Angelaccio <elvis.angelaccio@kde.org>
Sun, 17 Sep 2017 09:56:42 +0000 (11:56 +0200)
committerElvis Angelaccio <elvis.angelaccio@kde.org>
Sun, 17 Sep 2017 09:56:42 +0000 (11:56 +0200)
1  2 
src/dolphinremoveaction.cpp
src/views/dolphinviewactionhandler.cpp

index ce305993474efc832ead079983f11615062ac8d2,79d6bed6021bee4dec7ba231cdcea1438de93073..ab1117770f2b76537d675b325cb3bcc60ad4dcfd
@@@ -40,33 -39,28 +40,39 @@@ void DolphinRemoveAction::slotRemoveAct
      }
  }
  
 -void DolphinRemoveAction::update()
 +void DolphinRemoveAction::update(ShiftState shiftState)
  {
 -    Q_ASSERT(m_collection);
 -    // Using 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.
 -    if (qApp->queryKeyboardModifiers() & Qt::ShiftModifier) {
 -        m_action = m_collection ? m_collection->action(KStandardAction::name(KStandardAction::DeleteFile)) : 0;
 -        setText(i18nc("@action:inmenu", "&Delete"));
 +    if (!m_collection) {
 +        m_action = nullptr;
 +        return;
 +    }
 +
 +    if (shiftState == ShiftState::Unknown) {
 +        shiftState = QGuiApplication::keyboardModifiers() & Qt::ShiftModifier ? ShiftState::Pressed : ShiftState::Released;
 +    }
 +
 +    switch (shiftState) {
-     case ShiftState::Pressed:
++    case ShiftState::Pressed: {
 +        m_action = m_collection->action(KStandardAction::name(KStandardAction::DeleteFile));
+         // Make sure we show Shift+Del in the context menu.
+         auto deleteShortcuts = m_action->shortcuts();
+         deleteShortcuts.removeAll(Qt::SHIFT | Qt::Key_Delete);
+         deleteShortcuts.prepend(Qt::SHIFT | Qt::Key_Delete);
+         m_collection->setDefaultShortcuts(this, deleteShortcuts);
 -    } else {
 -        m_action = m_collection ? m_collection->action(QStringLiteral("move_to_trash")) : 0;
 -        setText(i18nc("@action:inmenu", "&Move to Trash"));
 +        break;
++    }
 +    case ShiftState::Released:
 +        m_action = m_collection->action(KStandardAction::name(KStandardAction::MoveToTrash));
+         m_collection->setDefaultShortcuts(this, m_action->shortcuts());
 +        break;
 +    case ShiftState::Unknown:
 +        Q_UNREACHABLE();
 +        break;
      }
  
      if (m_action) {
 +        setText(m_action->text());
          setIcon(m_action->icon());
-         m_collection->setDefaultShortcuts(this, m_action->shortcuts());
          setEnabled(m_action->isEnabled());
      }
  }
index 447d46f53cbfb3b27e39001ac82a940908c26e30,f4104d9cfeef21e166f989cc7d67457c67e00bae..d0b9e7dc1ea6eb0e3505f87d1c5b87ee9195d7c1
@@@ -107,12 -107,27 +107,17 @@@ void DolphinViewActionHandler::createAc
  
      // File menu
  
 -    QAction* rename = m_actionCollection->addAction(QStringLiteral("rename"));
 -    rename->setText(i18nc("@action:inmenu File", "Rename..."));
 -    m_actionCollection->setDefaultShortcut(rename, Qt::Key_F2);
 -    rename->setIcon(QIcon::fromTheme(QStringLiteral("edit-rename")));
 -    connect(rename, &QAction::triggered, this, &DolphinViewActionHandler::slotRename);
 -
 -    QAction* moveToTrash = m_actionCollection->addAction(QStringLiteral("move_to_trash"));
 -    moveToTrash->setText(i18nc("@action:inmenu File", "Move to Trash"));
 -    moveToTrash->setIcon(QIcon::fromTheme(QStringLiteral("user-trash")));
 -    m_actionCollection->setDefaultShortcut(moveToTrash, QKeySequence::Delete);
 -    connect(moveToTrash, &QAction::triggered,
 -            this, &DolphinViewActionHandler::slotTrashActivated);
 +    KStandardAction::renameFile(this, &DolphinViewActionHandler::slotRename, m_actionCollection);
  
-     KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection);
 +    KStandardAction::moveToTrash(this, &DolphinViewActionHandler::slotTrashActivated, m_actionCollection);
+     auto deleteAction = KStandardAction::deleteFile(this, &DolphinViewActionHandler::slotDeleteItems, m_actionCollection);
+     auto deleteShortcuts = deleteAction->shortcuts();
+     if (!deleteShortcuts.contains(Qt::SHIFT | Qt::Key_Delete)) {
+         deleteShortcuts.append(Qt::SHIFT | Qt::Key_Delete);
+         m_actionCollection->setDefaultShortcuts(deleteAction, deleteShortcuts);
+     }
  
 -    // This action is useful for being enabled when "move_to_trash" should be
 +    // This action is useful for being enabled when KStandardAction::MoveToTrash should be
      // disabled and KStandardAction::DeleteFile is enabled (e.g. non-local files), so that Key_Del
      // can be used for deleting the file (#76016). It needs to be a separate action
      // so that the Edit menu isn't affected.