From 6a157faf91a9c1f0aa8ec5ff399d9c61e8c1b7d1 Mon Sep 17 00:00:00 2001 From: "danm%netscape.com" Date: Fri, 8 Feb 2002 01:01:21 +0000 Subject: [PATCH] stifle infinite focus/activation recursion. bug 124299 r=hyatt,jst git-svn-id: svn://10.0.0.236/trunk@113959 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp | 9 +++++++++ mozilla/embedding/browser/webBrowser/nsWebBrowser.h | 1 + 2 files changed, 10 insertions(+) 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;