diff --git a/src/Mod/PartDesign/Gui/ViewProviderBoolean.cpp b/src/Mod/PartDesign/Gui/ViewProviderBoolean.cpp index 3b9807723d..08e2bcb35d 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderBoolean.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderBoolean.cpp @@ -65,9 +65,7 @@ ViewProviderBoolean::~ViewProviderBoolean() void ViewProviderBoolean::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit boolean"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit boolean")); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderHelix.cpp b/src/Mod/PartDesign/Gui/ViewProviderHelix.cpp index dc4933c576..6fb94b54b3 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderHelix.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderHelix.cpp @@ -53,9 +53,7 @@ ViewProviderHelix::~ViewProviderHelix() void ViewProviderHelix::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit helix"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit helix")); PartDesignGui::ViewProviderAddSub::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderHole.cpp b/src/Mod/PartDesign/Gui/ViewProviderHole.cpp index 2bd824e0f3..87db71f283 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderHole.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderHole.cpp @@ -60,9 +60,7 @@ std::vector ViewProviderHole::claimChildren(void)const void ViewProviderHole::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit hole"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit hole")); PartGui::ViewProviderPart::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderLoft.cpp b/src/Mod/PartDesign/Gui/ViewProviderLoft.cpp index 6f260f3b78..68e946a1f1 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderLoft.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderLoft.cpp @@ -75,9 +75,7 @@ std::vector ViewProviderLoft::claimChildren(void)const void ViewProviderLoft::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit loft"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit loft")); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPipe.cpp b/src/Mod/PartDesign/Gui/ViewProviderPipe.cpp index 5c875153be..1d20cbb4a8 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPipe.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPipe.cpp @@ -83,9 +83,7 @@ std::vector ViewProviderPipe::claimChildren(void)const void ViewProviderPipe::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit pipe"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit pipe")); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderPrimitive.cpp b/src/Mod/PartDesign/Gui/ViewProviderPrimitive.cpp index dddb5b5782..cccc251a15 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderPrimitive.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderPrimitive.cpp @@ -72,9 +72,7 @@ void ViewProviderPrimitive::attach(App::DocumentObject* obj) { void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit primitive"), receiver, member); - act->setData(QVariant((int)ViewProvider::Default)); + addDefaultAction(menu, QObject::tr("Edit primitive")); PartDesignGui::ViewProvider::setupContextMenu(menu, receiver, member); } diff --git a/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.cpp b/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.cpp index 31e7113fad..116b4fc8b0 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.cpp @@ -33,7 +33,9 @@ #endif #include +#include #include +#include #include #include @@ -188,9 +190,23 @@ void ViewProviderShapeBinder::highlightReferences(const bool on, bool /*auxiliar void ViewProviderShapeBinder::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { + Q_UNUSED(receiver) + Q_UNUSED(member) + QAction* act; - act = menu->addAction(QObject::tr("Edit shape binder"), receiver, member); + act = menu->addAction(QObject::tr("Edit shape binder")); act->setData(QVariant((int)ViewProvider::Default)); + + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + func->trigger(act, [this]() { + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); + + Gui::Document* document = this->getDocument(); + if (document) { + document->setEdit(this, ViewProvider::Default); + } + }); } //===================================================================================== @@ -257,18 +273,18 @@ void ViewProviderSubShapeBinder::setupContextMenu(QMenu* menu, QObject* receiver { QAction* act; act = menu->addAction(QObject::tr("Synchronize"), receiver, member); - act->setData(QVariant((int)0)); + act->setData(QVariant((int)Synchronize)); act = menu->addAction(QObject::tr("Select bound object"), receiver, member); - act->setData(QVariant((int)1)); + act->setData(QVariant((int)SelectObject)); } bool ViewProviderSubShapeBinder::setEdit(int ModNum) { switch(ModNum) { - case 0: + case Synchronize: updatePlacement(true); break; - case 1: { + case SelectObject: { auto self = dynamic_cast(getObject()); if(!self || !self->Support.getValue()) break; diff --git a/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.h b/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.h index ba30ec742b..7621d41625 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.h +++ b/src/Mod/PartDesign/Gui/ViewProviderShapeBinder.h @@ -25,6 +25,7 @@ #define PARTGUI_ViewProviderShapeBinder_H #include +#include namespace PartDesignGui { @@ -73,6 +74,10 @@ public: virtual bool setEdit(int ModNum) override; private: + enum { + Synchronize = 0, + SelectObject = 1 + }; void updatePlacement(bool transaction); };