author | Olli Pettay <Olli.Pettay@helsinki.fi> |
Tue, 28 Jan 2014 09:15:47 -0800 | |
changeset 181694 | 042a31391d5585840da4e114af557efeaab58d51 |
parent 181693 | 6f90f9c6b49d02847819710e2c7942fb93064a5d |
child 181695 | d7a6a64b42f0268cecb94026aa334fb3eb13304c |
push id | 3343 |
push user | ffxbld |
push date | Mon, 17 Mar 2014 21:55:32 +0000 |
treeherder | mozilla-beta@2f7d3415f79f [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mrbkap |
bugs | 959585 |
milestone | 29.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/base/nsGlobalWindow.cpp +++ b/dom/base/nsGlobalWindow.cpp @@ -8220,20 +8220,30 @@ nsGlobalWindow::EnterModalState() if (activeShell) { nsRefPtr<nsFrameSelection> frameSelection = activeShell->FrameSelection(); frameSelection->SetMouseDownState(false); } } } + // Clear the capturing content if it is under topDoc. + // Usually the activeESM check above does that, but there are cases when + // we don't have activeESM, or it is for different document. + nsIDocument* topDoc = topWin->GetExtantDoc(); + nsIContent* capturingContent = nsIPresShell::GetCapturingContent(); + if (capturingContent && topDoc && + nsContentUtils::ContentIsCrossDocDescendantOf(capturingContent, topDoc)) { + nsIPresShell::SetCapturingContent(nullptr, 0); + } + if (topWin->mModalStateDepth == 0) { NS_ASSERTION(!mSuspendedDoc, "Shouldn't have mSuspendedDoc here!"); - mSuspendedDoc = topWin->GetExtantDoc(); + mSuspendedDoc = topDoc; if (mSuspendedDoc) { mSuspendedDoc->SuppressEventHandling(); } } topWin->mModalStateDepth++; } // static