]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
contextmenu: Listen to new error signal from KFileItemActions
[dolphin.git] / src / dolphincontextmenu.cpp
index e2a41e907bf27a53526cdb41c6bc10d516c568f7..01e1a4109ed2e3e32967bf985627170b1ebf9bf9 100644 (file)
@@ -31,9 +31,9 @@
 #include <KLocalizedString>
 #include <KNewFileMenu>
 #include <KPluginMetaData>
-#include <KService>
 #include <KStandardAction>
 #include <KToolBar>
+#include <kio_version.h>
 
 #include <QApplication>
 #include <QClipboard>
@@ -64,7 +64,7 @@ DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
     const DolphinView* view = m_mainWindow->activeViewContainer()->view();
     m_selectedItems = view->selectedItems();
 
-    installEventFilter(this);
+    QApplication::instance()->installEventFilter(this);
 
     static_cast<KHamburgerMenu *>(m_mainWindow->actionCollection()->
                 action(QStringLiteral("hamburger_menu")))->addToMenu(this);
@@ -116,28 +116,23 @@ DolphinContextMenu::Command DolphinContextMenu::open()
     return m_command;
 }
 
-void DolphinContextMenu::childEvent(QChildEvent* event)
+bool DolphinContextMenu::eventFilter(QObject* object, QEvent* event)
 {
-    if(event->added()) {
-        event->child()->installEventFilter(this);
-    }
-    QMenu::childEvent(event);
-}
+    Q_UNUSED(object)
 
-bool DolphinContextMenu::eventFilter(QObject* dest, QEvent* event)
-{
     if(event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) {
         QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
-        if(m_removeAction && keyEvent->key() == Qt::Key_Shift) {
-            if(event->type() == QEvent::KeyPress) {
+
+        if (m_removeAction && keyEvent->key() == Qt::Key_Shift) {
+            if (event->type() == QEvent::KeyPress) {
                 m_removeAction->update(DolphinRemoveAction::ShiftState::Pressed);
             } else {
                 m_removeAction->update(DolphinRemoveAction::ShiftState::Released);
             }
-            return true;
         }
     }
-    return QMenu::eventFilter(dest, event);
+
+    return false;
 }
 
 void DolphinContextMenu::openTrashContextMenu()
@@ -228,6 +223,11 @@ void DolphinContextMenu::openItemContextMenu()
 
     KFileItemActions fileItemActions;
     fileItemActions.setParentWidget(m_mainWindow);
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 82, 0)
+    connect(&fileItemActions, &KFileItemActions::error, this, [this](const QString &errorMessage) {
+        m_mainWindow->activeViewContainer()->showMessage(errorMessage, DolphinViewContainer::Error);
+    });
+#endif
     fileItemActions.setItemListProperties(selectedItemsProps);
 
     if (m_selectedItems.count() == 1) {
@@ -319,6 +319,11 @@ void DolphinContextMenu::openViewportContextMenu()
     const KFileItemListProperties baseUrlProperties(KFileItemList() << baseFileItem());
     KFileItemActions fileItemActions;
     fileItemActions.setParentWidget(m_mainWindow);
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 82, 0)
+    connect(&fileItemActions, &KFileItemActions::error, this, [this](const QString &errorMessage) {
+        m_mainWindow->activeViewContainer()->showMessage(errorMessage, DolphinViewContainer::Error);
+    });
+#endif
     fileItemActions.setItemListProperties(baseUrlProperties);
 
     // Set up and insert 'Create New' menu