From b4f2be2aec3f9c9cdf89adbf201beaef0075192b Mon Sep 17 00:00:00 2001 From: "saari%netscape.com" Date: Tue, 19 Sep 2000 03:16:30 +0000 Subject: [PATCH] focus fixes for 52150 et all. r=hyatt git-svn-id: svn://10.0.0.236/trunk@79508 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xpfe/appshell/src/nsWebShellWindow.cpp | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp b/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp index 9e492fe0ab4..faf7f6b12a6 100644 --- a/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp +++ b/mozilla/xpfe/appshell/src/nsWebShellWindow.cpp @@ -472,12 +472,46 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent) break; } - case NS_MOUSE_ACTIVATE: + case NS_MOUSE_ACTIVATE:{ + break; + } + case NS_ACTIVATE: { #ifdef DEBUG_saari printf("nsWebShellWindow::NS_ACTIVATE\n"); #endif +// Sucky platform specific code to get around event dispatch ordering +#ifdef WIN32 + void* data; + aEvent->widget->GetClientData(data); + if (!data) + break; + + nsCOMPtr domWindow; + ((nsWebShellWindow *)data)->ConvertWebShellToDOMWindow(webShell, getter_AddRefs(domWindow)); + /* + nsCOMPtr contentShell; + ((nsWebShellWindow *)data)->GetContentWebShell(getter_AddRefs(contentShell)); + if (contentShell) { + + if (NS_SUCCEEDED(((nsWebShellWindow *)data)-> + ConvertWebShellToDOMWindow(contentShell, getter_AddRefs(domWindow)))) { + if(domWindow){ + nsCOMPtr privateDOMWindow = do_QueryInterface(domWindow); + if(privateDOMWindow) + privateDOMWindow->Activate(); + } + } + } + else */ + if (domWindow) { + nsCOMPtr privateDOMWindow = do_QueryInterface(domWindow); + if(privateDOMWindow) + privateDOMWindow->Activate(); + } +#endif break; + } case NS_DEACTIVATE: { @@ -491,6 +525,8 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent) break; nsCOMPtr domWindow; + ((nsWebShellWindow *)data)->ConvertWebShellToDOMWindow(webShell, getter_AddRefs(domWindow)); + /* nsCOMPtr contentShell; ((nsWebShellWindow *)data)->GetContentWebShell(getter_AddRefs(contentShell)); if (contentShell) { @@ -504,12 +540,12 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent) } } } - else if (domWindow) { + else */ + if (domWindow) { nsCOMPtr privateDOMWindow = do_QueryInterface(domWindow); if(privateDOMWindow) privateDOMWindow->Deactivate(); } - break; }