summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandreykproductengine <akleshchev@productengine.com>2014-12-01 19:31:09 +0200
committerandreykproductengine <akleshchev@productengine.com>2014-12-01 19:31:09 +0200
commit1cea21dcb9071bd68b8e36e73c96bd74a8ac6dcd (patch)
tree5051233627338e2831dccffa0a4c88853b2feefe
parent1be14992c6d92f8e32068704190650229c2de88f (diff)
MAINT-4700 FIXED Viewer cursor defaults to 'grab' mode when clicking on child prim of linkset that was recently physical and sat-upon
-rwxr-xr-xindra/llprimitive/object_flags.h1
-rwxr-xr-xindra/newview/llselectmgr.cpp15
2 files changed, 12 insertions, 4 deletions
diff --git a/indra/llprimitive/object_flags.h b/indra/llprimitive/object_flags.h
index 31dbd15ae0..88eaeb034a 100755
--- a/indra/llprimitive/object_flags.h
+++ b/indra/llprimitive/object_flags.h
@@ -69,6 +69,7 @@ const U32 FLAGS_TEMPORARY_ON_REZ = (1U << 29);
//const U32 FLAGS_UNUSED_007 = (1U << 31); // was FLAGS_ZLIB_COMPRESSED
const U32 FLAGS_LOCAL = FLAGS_ANIM_SOURCE | FLAGS_CAMERA_SOURCE;
+const U32 FLAGS_WORLD = FLAGS_USE_PHYSICS | FLAGS_PHANTOM | FLAGS_TEMPORARY_ON_REZ;
typedef enum e_havok_joint_type
{
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 9d088d02f8..b13c30b6d4 100755
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -4643,11 +4643,18 @@ struct LLSelectMgrApplyFlags : public LLSelectedObjectFunctor
BOOL mState;
virtual bool apply(LLViewerObject* object)
{
- if ( object->permModify() && // preemptive permissions check
- object->isRoot()) // don't send for child objects
+ if ( object->permModify())
{
- object->setFlags( mFlags, mState);
- }
+ if (object->isRoot()) // don't send for child objects
+ {
+ object->setFlags( mFlags, mState);
+ }
+ else if (FLAGS_WORLD & mFlags && ((LLViewerObject*)object->getRoot())->isSelected())
+ {
+ // FLAGS_WORLD are shared by all items in linkset
+ object->setFlagsWithoutUpdate(FLAGS_WORLD & mFlags, mState);
+ }
+ };
return true;
}
};