diff --git a/mozilla/dom/src/base/nsFocusController.cpp b/mozilla/dom/src/base/nsFocusController.cpp index 723a4deeac4..95cba0ab506 100644 --- a/mozilla/dom/src/base/nsFocusController.cpp +++ b/mozilla/dom/src/base/nsFocusController.cpp @@ -105,7 +105,11 @@ nsFocusController::GetFocusedWindow(nsIDOMWindowInternal** aWindow) NS_IMETHODIMP nsFocusController::SetFocusedElement(nsIDOMElement* aElement) { - mPreviousElement = mCurrentElement; + if (mCurrentElement) + mPreviousElement = mCurrentElement; + else if (aElement) + mPreviousElement = aElement; + mCurrentElement = aElement; if (!mSuppressFocus) { @@ -309,8 +313,10 @@ nsFocusController::Focus(nsIDOMEvent* aEvent) nsCOMPtr windowDoc; mCurrentWindow->GetDocument(getter_AddRefs(windowDoc)); if (ownerDoc != windowDoc) - mCurrentElement = nsnull; + mCurrentElement = mPreviousElement = nsnull; } + else + mPreviousElement = nsnull; if (!mCurrentElement) UpdateCommands(NS_LITERAL_STRING("focus"));