diff --git a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp index 9eb97c822c6..8c8ad1a5fdb 100644 --- a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp +++ b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp @@ -79,6 +79,7 @@ static NS_DEFINE_CID(kLookAndFeelCID, NS_LOOKANDFEEL_CID); nsWebBrowser::nsWebBrowser() : mDocShellTreeOwner(nsnull), mInitInfo(nsnull), mContentType(typeContentWrapper), + mActivating(PR_FALSE), mParentNativeWindow(nsnull), mProgressListener(nsnull), mBackgroundColor(0), @@ -1605,6 +1606,13 @@ NS_IMETHODIMP nsWebBrowser::GetPrimaryContentWindow(nsIDOMWindowInternal **aDOMW /* void activate (); */ NS_IMETHODIMP nsWebBrowser::Activate(void) { + // stop infinite recursion from windows with onfocus handlers that + // reactivate the window + if (mActivating) + return NS_OK; + + mActivating = PR_TRUE; + // try to set focus on the last focused window as stored in the // focus controller object. nsCOMPtr domWindowExternal; @@ -1664,6 +1672,7 @@ NS_IMETHODIMP nsWebBrowser::Activate(void) } } + mActivating = PR_FALSE; return NS_OK; } diff --git a/mozilla/embedding/browser/webBrowser/nsWebBrowser.h b/mozilla/embedding/browser/webBrowser/nsWebBrowser.h index 8b9e26d5b24..0746f9edd0d 100644 --- a/mozilla/embedding/browser/webBrowser/nsWebBrowser.h +++ b/mozilla/embedding/browser/webBrowser/nsWebBrowser.h @@ -137,6 +137,7 @@ protected: nsCOMPtr mWWatch; nsWebBrowserInitInfo* mInitInfo; PRUint32 mContentType; + PRBool mActivating; nativeWindow mParentNativeWindow; nsIWebProgressListener *mProgressListener; nsCOMPtr mWebProgress;