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