- KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
- if (pluginV2) {
- // Use version 2 of the KVersionControlPlugin which allows providing actions
- // also for non-versioned directories.
- if (m_updateItemStatesThread && m_updateItemStatesThread->lockPlugin()) {
- actions = pluginV2->actions(items);
- m_updateItemStatesThread->unlockPlugin();
- } else {
- actions = pluginV2->actions(items);
- }
- } else if (isVersioned()) {
- // Support deprecated interfaces from KVersionControlPlugin version 1.
- // Context menu actions where only available for versioned directories.
- QString directory;
- if (items.count() == 1) {
- const KFileItem rootItem = m_model->rootItem();
- if (!rootItem.isNull() && items.first().url() == rootItem.url()) {
- directory = rootItem.url().path(KUrl::AddTrailingSlash);
- }
- }
-
- if (m_updateItemStatesThread && m_updateItemStatesThread->lockPlugin()) {
- actions = directory.isEmpty() ? m_plugin->contextMenuActions(items)
- : m_plugin->contextMenuActions(directory);
- m_updateItemStatesThread->unlockPlugin();
- } else {
- actions = directory.isEmpty() ? m_plugin->contextMenuActions(items)
- : m_plugin->contextMenuActions(directory);
+ if (isVersionControlled()) {
+ return m_plugin->versionControlActions(items);
+ } else {
+ QList<QAction *> actions;
+ for (const QPointer<KVersionControlPlugin> &plugin : qAsConst(m_plugins)) {
+ actions << plugin->outOfVersionControlActions(items);