diff --git a/src/Gui/ViewProvider.cpp b/src/Gui/ViewProvider.cpp index c0538fd33e..06c4bad5a4 100644 --- a/src/Gui/ViewProvider.cpp +++ b/src/Gui/ViewProvider.cpp @@ -649,6 +649,13 @@ bool ViewProvider::mouseButtonPressed(int button, bool pressed, return false; } +void ViewProvider::setupContextMenu(QMenu* menu, QObject* receiver, const char* method) +{ + auto vector = getExtensionsDerivedFromType(); + for (Gui::ViewProviderExtension* ext : vector) + ext->extensionSetupContextMenu(menu, receiver, method); +} + bool ViewProvider::onDelete(const vector< string >& subNames) { bool del = true; diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h index 56a746f378..1b68137fd7 100644 --- a/src/Gui/ViewProvider.h +++ b/src/Gui/ViewProvider.h @@ -458,7 +458,7 @@ public: virtual bool mouseButtonPressed(int button, bool pressed, const SbVec2s &cursorPos, const View3DInventorViewer* viewer); /// set up the context-menu with the supported edit modes - virtual void setupContextMenu(QMenu*, QObject*, const char*) {} + virtual void setupContextMenu(QMenu*, QObject*, const char*); /** @name direct handling methods * This group of methods is to direct influence the diff --git a/src/Gui/ViewProviderDragger.cpp b/src/Gui/ViewProviderDragger.cpp index 66b27b6e54..4ac792ee86 100644 --- a/src/Gui/ViewProviderDragger.cpp +++ b/src/Gui/ViewProviderDragger.cpp @@ -107,6 +107,7 @@ void ViewProviderDragger::setupContextMenu(QMenu* menu, QObject* receiver, const { QAction* act = menu->addAction(QObject::tr("Transform"), receiver, member); act->setData(QVariant((int)ViewProvider::Transform)); + ViewProviderDocumentObject::setupContextMenu(menu, receiver, member); } ViewProvider *ViewProviderDragger::startEditing(int mode) { diff --git a/src/Gui/ViewProviderExtension.h b/src/Gui/ViewProviderExtension.h index 37e10518d0..f57359ae51 100644 --- a/src/Gui/ViewProviderExtension.h +++ b/src/Gui/ViewProviderExtension.h @@ -89,6 +89,7 @@ public: virtual void extensionReattach(App::DocumentObject* ) { } virtual void extensionSetDisplayMode(const char* ) { } virtual std::vector extensionGetDisplayModes(void) const {return std::vector();} + virtual void extensionSetupContextMenu(QMenu*, QObject*, const char*) {} //update data of extended opject virtual void extensionUpdateData(const App::Property*);