-QList<QAction*> VersionControlObserver::contextMenuActions(const QString& directory) const
-{
- QList<QAction*> actions;
- if (isVersioned() && m_updateItemStatesThread->lockPlugin()) {
- actions = m_plugin->contextMenuActions(directory);
- m_updateItemStatesThread->unlockPlugin();
+ if (!m_model || hasNullItems) {
+ return actions;
+ }
+
+ KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin);
+ if (pluginV2) {
+ // Use version 2 of the KVersionControlPlugin which allows providing actions
+ // also for non-versioned directories.
+ 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);
+ }
+ }
+
+ actions = directory.isEmpty() ? m_plugin->contextMenuActions(items)
+ : m_plugin->contextMenuActions(directory);