diff --git a/src/Mod/Part/Gui/ViewProvider.cpp b/src/Mod/Part/Gui/ViewProvider.cpp index efe17f7298..1c70fedc6b 100644 --- a/src/Mod/Part/Gui/ViewProvider.cpp +++ b/src/Mod/Part/Gui/ViewProvider.cpp @@ -31,9 +31,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -57,10 +59,9 @@ ViewProviderPart::~ViewProviderPart() bool ViewProviderPart::doubleClicked(void) { - std::string Msg("Edit "); - Msg += this->pcObject->Label.getValue(); try { - Gui::Command::openCommand(Msg.c_str()); + QString text = QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())); + Gui::Command::openCommand(text.toUtf8()); FCMD_SET_EDIT(pcObject); return true; } @@ -113,12 +114,25 @@ ViewProviderPrimitive::~ViewProviderPrimitive() void ViewProviderPrimitive::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - QAction* act; - act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue())), receiver, member); + Gui::ActionFunction* func = new Gui::ActionFunction(menu); + QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); + func->trigger(act, boost::bind(&ViewProviderPrimitive::startDefaultEditMode, this)); + ViewProviderPart::setupContextMenu(menu, receiver, member); } +void ViewProviderPrimitive::startDefaultEditMode() +{ + 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); + } +} + bool ViewProviderPrimitive::setEdit(int ModNum) { if (ModNum == ViewProvider::Default) { diff --git a/src/Mod/Part/Gui/ViewProvider.h b/src/Mod/Part/Gui/ViewProvider.h index cb32fa3cbe..390d629012 100644 --- a/src/Mod/Part/Gui/ViewProvider.h +++ b/src/Mod/Part/Gui/ViewProvider.h @@ -76,6 +76,9 @@ public: protected: bool setEdit(int ModNum); void unsetEdit(int ModNum); + +private: + void startDefaultEditMode(); }; } // namespace PartGui