Salome HOME
projects
/
modules
/
shaper.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git]
/
src
/
SketchSolver
/
SketchSolver_ConstraintManager.cpp
diff --git
a/src/SketchSolver/SketchSolver_ConstraintManager.cpp
b/src/SketchSolver/SketchSolver_ConstraintManager.cpp
index e54a41292763daec52ac101d8d6bbbe10bcccbeb..71f062c392a6a3de9537a2c31ed20066c6a36929 100644
(file)
--- a/
src/SketchSolver/SketchSolver_ConstraintManager.cpp
+++ b/
src/SketchSolver/SketchSolver_ConstraintManager.cpp
@@
-114,7
+114,7
@@
void SketchSolver_ConstraintManager::processEvent(
}
// Solve the set of constraints
}
// Solve the set of constraints
- resolveConstraints(
);
+ resolveConstraints(
isMovedEvt); // send update for movement in any case
} else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED)) {
std::shared_ptr<ModelAPI_ObjectDeletedMessage> aDeleteMsg =
std::dynamic_pointer_cast<ModelAPI_ObjectDeletedMessage>(theMessage);
} else if (theMessage->eventID() == Events_Loop::loop()->eventByName(EVENT_OBJECT_DELETED)) {
std::shared_ptr<ModelAPI_ObjectDeletedMessage> aDeleteMsg =
std::dynamic_pointer_cast<ModelAPI_ObjectDeletedMessage>(theMessage);
@@
-372,7
+372,7
@@
std::shared_ptr<ModelAPI_CompositeFeature> SketchSolver_ConstraintManager
// Class: SketchSolver_Session
// Purpose: change entities according to available constraints
// ============================================================================
// Class: SketchSolver_Session
// Purpose: change entities according to available constraints
// ============================================================================
-void SketchSolver_ConstraintManager::resolveConstraints()
+void SketchSolver_ConstraintManager::resolveConstraints(
const bool theForceUpdate
)
{
myIsComputed = true;
bool needToUpdate = false;
{
myIsComputed = true;
bool needToUpdate = false;
@@
-388,12
+388,15
@@
void SketchSolver_ConstraintManager::resolveConstraints()
if ((*aGroupIter)->resolveConstraints())
needToUpdate = true;
if ((*aGroupIter)->resolveConstraints())
needToUpdate = true;
- // Features may be updated => now send events, b
tu
for all changed at once
+ // Features may be updated => now send events, b
ut
for all changed at once
if (isUpdateFlushed) {
Events_Loop::loop()->setFlushed(anUpdateEvent, true);
}
if (isUpdateFlushed) {
Events_Loop::loop()->setFlushed(anUpdateEvent, true);
}
- if (needToUpdate)
- Events_Loop::loop()->flush(anUpdateEvent);
+ // Must be before flush because on "Updated" flush the results may be produced
+ // and the creation event is appeared with many new objects. If myIsComputed these
+ // events are missed in processEvents and some elements are not added.
myIsComputed = false;
myIsComputed = false;
+ if (needToUpdate || theForceUpdate)
+ Events_Loop::loop()->flush(anUpdateEvent);
}
}