// Token: 0x060067A1 RID: 26529 RVA: 0x001D07BC File Offset: 0x001CE9BC
        internal override bool InvalidateStructure(int startPosition)
        {
            int paragraphStartCharacterPosition = base.ParagraphStartCharacterPosition;

            if (startPosition <= paragraphStartCharacterPosition + TextContainerHelper.ElementEdgeCharacterLength)
            {
                BaseParagraph baseParagraph = this._firstChild;
                while (baseParagraph != null)
                {
                    BaseParagraph baseParagraph2 = baseParagraph;
                    baseParagraph = baseParagraph.Next;
                    baseParagraph2.Dispose();
                    baseParagraph2.Next     = null;
                    baseParagraph2.Previous = null;
                }
                this._firstChild = (this._lastFetchedChild = null);
            }
            else
            {
                BaseParagraph baseParagraph = this._firstChild;
                while (baseParagraph != null)
                {
                    if (baseParagraph.ParagraphStartCharacterPosition + baseParagraph.LastFormatCch >= startPosition)
                    {
                        if (!baseParagraph.InvalidateStructure(startPosition))
                        {
                            baseParagraph = baseParagraph.Next;
                        }
                        if (baseParagraph != null)
                        {
                            if (baseParagraph.Previous != null)
                            {
                                baseParagraph.Previous.Next = null;
                                this._lastFetchedChild      = baseParagraph.Previous;
                            }
                            else
                            {
                                this._firstChild = (this._lastFetchedChild = null);
                            }
                            while (baseParagraph != null)
                            {
                                BaseParagraph baseParagraph3 = baseParagraph;
                                baseParagraph = baseParagraph.Next;
                                baseParagraph3.Dispose();
                                baseParagraph3.Next     = null;
                                baseParagraph3.Previous = null;
                            }
                            break;
                        }
                        break;
                    }
                    else
                    {
                        baseParagraph = baseParagraph.Next;
                    }
                }
            }
            return(startPosition < paragraphStartCharacterPosition + TextContainerHelper.ElementEdgeCharacterLength);
        }
Exemple #2
0
        // Token: 0x06006B36 RID: 27446 RVA: 0x001EF6F4 File Offset: 0x001ED8F4
        internal override bool InvalidateStructure(int startPosition)
        {
            Invariant.Assert(base.ParagraphEndCharacterPosition >= startPosition);
            bool result = false;

            if (base.ParagraphStartCharacterPosition == startPosition)
            {
                result = true;
                AnchoredBlock anchoredBlock = null;
                if (this._attachedObjects != null && this._attachedObjects.Count > 0)
                {
                    anchoredBlock = (AnchoredBlock)this._attachedObjects[0].Element;
                }
                if (anchoredBlock != null && startPosition == anchoredBlock.ElementStartOffset)
                {
                    StaticTextPointer staticTextPointerFromCP = TextContainerHelper.GetStaticTextPointerFromCP(base.StructuralCache.TextContainer, startPosition);
                    if (staticTextPointerFromCP.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.ElementStart)
                    {
                        result = (anchoredBlock != staticTextPointerFromCP.GetAdjacentElement(LogicalDirection.Forward));
                    }
                }
            }
            this.InvalidateTextFormatCache();
            if (this._attachedObjects != null)
            {
                for (int i = 0; i < this._attachedObjects.Count; i++)
                {
                    BaseParagraph para = this._attachedObjects[i].Para;
                    if (para.ParagraphEndCharacterPosition >= startPosition)
                    {
                        para.InvalidateStructure(startPosition);
                    }
                }
            }
            return(result);
        }