ModuleBase_Operation* anOperation = myWorkshop->currentOperation();
if (anOperation) {
ModuleBase_IPropertyPanel* aPanel = anOperation->propertyPanel();
- ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget();
- if (myIsInternalEditOperation && (!anActiveWidget || !anActiveWidget->isViewerSelector()))
- aWidget = myInternalActiveWidget;
+ if (aPanel) { // check for case when the operation is started but property panel is not filled
+ ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget();
+ if (myIsInternalEditOperation && (!anActiveWidget || !anActiveWidget->isViewerSelector()))
+ aWidget = myInternalActiveWidget;
+ }
}
return aWidget;
}
resetFlags();
}
-bool PartSet_SketcherReetntrantMgr::processMouseMoved(ModuleBase_IViewWindow* /* theWnd*/,
- QMouseEvent* /* theEvent*/)
+bool PartSet_SketcherReetntrantMgr::processMouseMoved(ModuleBase_IViewWindow* theWnd,
+ QMouseEvent* theEvent)
{
bool aProcessed = false;
if (!isActiveMgr())
if (aLastFeature) {
ModuleBase_ModelWidget* anActiveWidget = module()->activeWidget();
ModuleBase_IPropertyPanel* aPanel = myWorkshop->currentOperation()->propertyPanel();
- bool aWidgetIsFilled = false;
FeaturePtr aCurrentFeature = aFOperation->feature();
bool isLineFeature = false, isArcFeature = false;
anActiveWidget = module()->activeWidget();
aCurrentFeature = anActiveWidget->feature();
aProcessed = true;
- if (isLineFeature || isArcFeature)
- aWidgetIsFilled = true;
- }
- if (aWidgetIsFilled)
aPanel->activateNextWidget(anActiveWidget);
+ } else {
+ // processing mouse move in active widget of restarted operation
+ ModuleBase_ModelWidget* anActiveWidget = module()->activeWidget();
+ PartSet_MouseProcessor* aProcessor = dynamic_cast<PartSet_MouseProcessor*>(anActiveWidget);
+ if (aProcessor)
+ aProcessor->mouseMoved(theWnd, theEvent);
+ }
}
}
return aProcessed;