MCPcopy Create free account
hub / github.com/KDE/kdevelop / contextMenuEvent

Method contextMenuEvent

plugins/documentview/kdevdocumentview.cpp:177–224  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

175}
176
177void KDevDocumentView::contextMenuEvent( QContextMenuEvent * event )
178{
179 QModelIndex proxyIndex = indexAt( event->pos() );
180 // for now, ignore clicks on empty space or folder items
181 if (!proxyIndex.isValid() || !proxyIndex.parent().isValid()) {
182 return;
183 }
184
185 updateSelectedDocs();
186
187 if (!m_selectedDocs.isEmpty())
188 {
189 auto* ctxMenu = new QMenu(this);
190
191 KDevelop::FileContext context(m_selectedDocs);
192 const QList<KDevelop::ContextMenuExtension> extensions =
193 m_plugin->core()->pluginController()->queryPluginsForContextMenuExtensions(&context, ctxMenu);
194
195 QList<QAction*> vcsActions;
196 QList<QAction*> fileActions;
197 QList<QAction*> editActions;
198 QList<QAction*> extensionActions;
199 for (const KDevelop::ContextMenuExtension& ext : extensions) {
200 fileActions += ext.actions(KDevelop::ContextMenuExtension::FileGroup);
201 vcsActions += ext.actions(KDevelop::ContextMenuExtension::VcsGroup);
202 editActions += ext.actions(KDevelop::ContextMenuExtension::EditGroup);
203 extensionActions += ext.actions(KDevelop::ContextMenuExtension::ExtensionGroup);
204 }
205
206 appendActions(ctxMenu, fileActions);
207
208 QAction* save = KStandardAction::save(this, SLOT(saveSelected()), ctxMenu);
209 save->setEnabled(selectedDocHasChanges());
210 ctxMenu->addAction(save);
211 ctxMenu->addAction(QIcon::fromTheme(QStringLiteral("view-refresh")), i18nc("@action:inmenu", "Reload"), this, SLOT(reloadSelected()));
212
213 appendActions(ctxMenu, editActions);
214 appendActions(ctxMenu, vcsActions);
215 appendActions(ctxMenu, extensionActions);
216
217 ctxMenu->addAction(QIcon::fromTheme(QStringLiteral("document-close")), i18nc("@action:inmenu", "Close"), this, SLOT(closeSelected()));
218 QAction* closeUnselected = ctxMenu->addAction(QIcon::fromTheme(QStringLiteral("document-close")), i18nc("@action:inmenu", "Close All Other"), this, SLOT(closeUnselected()));
219 closeUnselected->setEnabled(!m_unselectedDocs.isEmpty());
220
221 ctxMenu->exec(event->globalPos());
222 delete ctxMenu;
223 }
224}
225
226void KDevDocumentView::appendActions(QMenu* menu, const QList<QAction*>& actions)
227{

Callers

nothing calls this directly

Calls 12

appendActionsFunction · 0.85
posMethod · 0.80
pluginControllerMethod · 0.80
execMethod · 0.80
isValidMethod · 0.45
parentMethod · 0.45
isEmptyMethod · 0.45
coreMethod · 0.45
actionsMethod · 0.45
setEnabledMethod · 0.45
addActionMethod · 0.45

Tested by

no test coverage detected