X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetSketchLabel.cpp;h=2ce6f152e509dc63d733a5228c3e3a327f96f137;hb=1834431e0e067cbb4616f42679562d56af528f5e;hp=2bf6d00aa5f2b1619e77eecd195f91b418ebe643;hpb=1dc66757c39c4a7b142404110e0e02ad98e0699a;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetSketchLabel.cpp b/src/PartSet/PartSet_WidgetSketchLabel.cpp index 2bf6d00aa..2ce6f152e 100644 --- a/src/PartSet/PartSet_WidgetSketchLabel.cpp +++ b/src/PartSet/PartSet_WidgetSketchLabel.cpp @@ -85,6 +85,17 @@ PartSet_WidgetSketchLabel::~PartSet_WidgetSketchLabel() erasePreviewPlanes(); } +bool PartSet_WidgetSketchLabel::setSelection(const QList& theValues, int& thePosition) +{ + // do not use the given selection if the plane of the sketch has been already set. + // If this check is absent, a selected plane in the viewer can be set in the sketch + // even if the sketch is built on another plane. + if (plane().get()) + return true; + + return ModuleBase_WidgetValidated::setSelection(theValues, thePosition); +} + QList PartSet_WidgetSketchLabel::getControls() const { QList aResult; @@ -94,26 +105,12 @@ QList PartSet_WidgetSketchLabel::getControls() const void PartSet_WidgetSketchLabel::onSelectionChanged() { - ModuleBase_ViewerPrs aPrs; - // 1. find selected presentation either in the viewer or in OB - XGUI_Selection* aSelection = myWorkshop->selector()->selection(); - QList aSelected = aSelection->getSelected(); - // the selection in OCC viewer - the selection of a face in the viewer - // it can be th main plane's face of a face on a visualized body - if (!aSelected.empty()) { - aPrs = aSelected.first(); - } - else { - // the selection in Object Browser: the plane object can be used as sketch plane - QObjectPtrList anObjects = aSelection->selectedObjects(); - if (!anObjects.empty()) { - aPrs.setObject(anObjects.first()); - } - } - if (aPrs.isEmpty()) + QList aSelectedPrs = getSelectedEntitiesOrObjects( + myWorkshop->selector()->selection()); + if (aSelectedPrs.empty()) return; - - if (!isValidSelection(aPrs)) + ModuleBase_ViewerPrs aPrs = aSelectedPrs.first(); + if (aPrs.isEmpty() || !isValidSelection(aPrs)) return; // 2. set the selection to sketch @@ -229,7 +226,7 @@ bool PartSet_WidgetSketchLabel::setSelectionCustom(const ModuleBase_ViewerPrs& t } else if (!aShape.IsNull()) { aDir = setSketchPlane(aShape); - isOwnerSet = aDir; + isOwnerSet = aDir.get(); } return isOwnerSet; }