Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="target"></param>
        /// <param name="skipDisplayList"></param>
        public void ValidateClient(InvalidationManagerClient target, bool skipDisplayList = false)
        {
            InvalidationManagerClient lastCurrentObject = _currentObject;

            int oldTargetLevel = _targetLevel;

            if (MaxHDepth == _targetLevel)
            {
                _targetLevel = target.NestLevel;
            }

            _done = false;

            while (!_done)
            {
                // assume we won't find anything
                _done = true;

                /**
                 * 1) Validate properties
                 * */
                _propertyInvalidator.ValidateClient(target, ref _currentObject);

                /**
                 * 2) Validate size
                 * */
                //InvalidationHelper.Log("## Validate size", target);
                _sizeInvalidator.ValidateClient(target, ref _currentObject);

                /**
                 * 3) Validate display list
                 * */
                if (!skipDisplayList)
                {
                    _displayListInvalidator.ValidateClient(target, ref _currentObject);
                }

                /**
                 * 4) Validate transforms
                 * */
                _transformInvalidator.ValidateClient(target, ref _currentObject);                 // moved 20130807

                /**
                 * 5) Validate events
                 * */
                _eventInvalidator.ValidateClient(target, ref _currentObject);
            }

            if (MaxHDepth == oldTargetLevel)
            {
                _targetLevel = MaxHDepth;
                if (!skipDisplayList)
                {
                    _obj = _updateCompleteQueue.RemoveLargestChild(target);
                    while (null != _obj)
                    {
                        if (!_obj.Initialized)
                        {
                            _obj.Initialized = true;
                        }

                        if (_obj.HasEventListener(FrameworkEvent.UPDATE_COMPLETE))
                        {
                            _obj.DispatchEvent(new FrameworkEvent(FrameworkEvent.UPDATE_COMPLETE));
                        }
                        _obj.UpdateFlag = false;
                        _obj            = _updateCompleteQueue.RemoveLargestChild(target);
                    }
                }
            }

            _currentObject = lastCurrentObject;
        }