PD: 0004742: Editing features by context menu may not be undoable

This commit is contained in:
wmayer
2021-12-06 14:11:10 +01:00
parent 3f97cb660e
commit e71051f4f0
8 changed files with 32 additions and 23 deletions

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -60,9 +60,7 @@ std::vector<App::DocumentObject*> 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);
}

View File

@@ -75,9 +75,7 @@ std::vector<App::DocumentObject*> 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);
}

View File

@@ -83,9 +83,7 @@ std::vector<App::DocumentObject*> 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);
}

View File

@@ -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);
}

View File

@@ -33,7 +33,9 @@
#endif
#include <Base/Console.h>
#include <Gui/ActionFunction.h>
#include <Gui/Application.h>
#include <Gui/Command.h>
#include <Gui/Control.h>
#include <Gui/Document.h>
@@ -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<PartDesign::SubShapeBinder*>(getObject());
if(!self || !self->Support.getValue())
break;

View File

@@ -25,6 +25,7 @@
#define PARTGUI_ViewProviderShapeBinder_H
#include <Mod/Part/Gui/ViewProvider.h>
#include <Mod/PartDesign/PartDesignGlobal.h>
namespace PartDesignGui {
@@ -73,6 +74,10 @@ public:
virtual bool setEdit(int ModNum) override;
private:
enum {
Synchronize = 0,
SelectObject = 1
};
void updatePlacement(bool transaction);
};