diff --git a/layout/generic/Selection.h b/layout/generic/Selection.h index bb3e3b6e49f9..ef3ce0fda57d 100644 --- a/layout/generic/Selection.h +++ b/layout/generic/Selection.h @@ -101,15 +101,12 @@ public: enum { SCROLL_SYNCHRONOUS = 1<<1, SCROLL_FIRST_ANCESTOR_ONLY = 1<<2, - SCROLL_DO_FLUSH = 1<<3, // only matters if SCROLL_SYNCHRONOUS is passed too + SCROLL_DO_FLUSH = 1<<3, SCROLL_OVERFLOW_HIDDEN = 1<<5, SCROLL_FOR_CARET_MOVE = 1<<6 }; - // If aFlags doesn't contain SCROLL_SYNCHRONOUS, then we'll flush when - // the scroll event fires so we make sure to scroll to the right place. - // Otherwise, if SCROLL_DO_FLUSH is also in aFlags, then this method will - // flush layout and you MUST hold a strong ref on 'this' for the duration - // of this call. This might destroy arbitrary layout objects. + // aDoFlush only matters if aIsSynchronous is true. If not, we'll just flush + // when the scroll event fires so we make sure to scroll to the right place. nsresult ScrollIntoView(SelectionRegion aRegion, nsIPresShell::ScrollAxis aVertical = nsIPresShell::ScrollAxis(), diff --git a/layout/generic/nsSelection.cpp b/layout/generic/nsSelection.cpp index 3beefbb8031f..58d18b46d64b 100644 --- a/layout/generic/nsSelection.cpp +++ b/layout/generic/nsSelection.cpp @@ -1974,9 +1974,10 @@ nsFrameSelection::ScrollSelectionIntoView(SelectionType aSelectionType, // After ScrollSelectionIntoView(), the pending notifications might be // flushed and PresShell/PresContext/Frames may be dead. See bug 418470. - RefPtr sel = mDomSelections[index]; - return sel->ScrollIntoView(aRegion, verticalScroll, - nsIPresShell::ScrollAxis(), flags); + return mDomSelections[index]->ScrollIntoView(aRegion, + verticalScroll, + nsIPresShell::ScrollAxis(), + flags); } nsresult @@ -6170,7 +6171,6 @@ Selection::ScrollSelectionIntoViewEvent::Run() int32_t flags = Selection::SCROLL_DO_FLUSH | Selection::SCROLL_SYNCHRONOUS; - RefPtr kungFuDeathGrip = mSelection; mSelection->mScrollEvent.Forget(); mSelection->ScrollIntoView(mRegion, mVerticalScroll, mHorizontalScroll, mFlags | flags);