Assembly: Fix context menu 'Activate object' not working and causing crash (#17092)

* Assembly: Add setupContextMenu to ViewProviderAssembly.h

* Assembly: Fix right click 'activate object' menu not setting edit

* add QMenu header

* Add NOLINT

* Add one more space before //NOLINT or clang cries...

* Fix isInEditMode

* add isInEditMode to ViewProviderAssemblyPy.xml

* add isInEditMode to ViewProviderAssemblyPyImp.cpp

* update activeAssembly() in Utils to make sure isInEditMode
This commit is contained in:
PaddleStroke
2024-10-14 15:29:49 +02:00
committed by GitHub
parent eab65cc42c
commit ad6d148935
5 changed files with 39 additions and 7 deletions

View File

@@ -27,6 +27,7 @@
#include <boost/core/ignore_unused.hpp>
#include <QMessageBox>
#include <QTimer>
#include <QMenu>
#include <vector>
#include <sstream>
#include <iostream>
@@ -48,6 +49,7 @@
#include <Base/Tools.h>
#include <Gui/ActionFunction.h>
#include <Gui/Application.h>
#include <Gui/BitmapFactory.h>
#include <Gui/CommandT.h>
@@ -112,6 +114,20 @@ QIcon ViewProviderAssembly::getIcon() const
return Gui::BitmapFactory().pixmap("Geoassembly.svg");
}
void ViewProviderAssembly::setupContextMenu(QMenu* menu, QObject* receiver, const char* member)
{
auto func = new Gui::ActionFunction(menu);
QAction* act = menu->addAction(QObject::tr("Active object"));
act->setCheckable(true);
act->setChecked(isActivePart());
func->trigger(act, [this]() {
this->doubleClicked();
});
ViewProviderDragger::setupContextMenu(menu, receiver, member); // NOLINT
}
bool ViewProviderAssembly::doubleClicked()
{
if (isInEditMode()) {
@@ -292,12 +308,7 @@ void ViewProviderAssembly::setEditViewer(Gui::View3DInventorViewer* viewer, int
bool ViewProviderAssembly::isInEditMode() const
{
App::DocumentObject* activePart = getActivePart();
if (!activePart) {
return false;
}
return activePart == this->getObject();
return asmDragger != nullptr;
}
App::DocumentObject* ViewProviderAssembly::getActivePart() const