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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user