deactivate root focus controller as well as your own while deactivating yourself. bug 122462 / bugscape 11864 code=saari,myself r=bryner,hyatt

This commit is contained in:
danm%netscape.com 2002-01-29 21:42:07 +00:00
Родитель 306aedf985
Коммит aef095fb3d
2 изменённых файлов: 29 добавлений и 19 удалений

Просмотреть файл

@ -1662,26 +1662,31 @@ NS_IMETHODIMP nsWebBrowser::Activate(void)
/* void deactivate (); */
NS_IMETHODIMP nsWebBrowser::Deactivate(void)
{
/* At this time we don't clear mWWatch's ActiveWindow; we just allow
the presumed other newly active window to set it when it comes in.
This seems harmless and maybe safer, but we have no real evidence
either way just yet. */
NS_ENSURE_STATE(mDocShell);
nsCOMPtr<nsIPresShell> presShell;
mDocShell->GetPresShell(getter_AddRefs(presShell));
if(!presShell)
return NS_OK;
nsCOMPtr<nsIDOMWindow> domWindow;
GetContentDOMWindow(getter_AddRefs(domWindow));
if (domWindow) {
nsCOMPtr<nsPIDOMWindow> privateDOMWindow = do_QueryInterface(domWindow);
if(privateDOMWindow)
privateDOMWindow->Deactivate();
}
/* At this time we don't clear mWWatch's ActiveWindow; we just allow
the presumed other newly active window to set it when it comes in.
This seems harmless and maybe safer, but we have no real evidence
either way just yet. */
NS_ENSURE_STATE(mDocShell);
nsCOMPtr<nsIPresShell> presShell;
mDocShell->GetPresShell(getter_AddRefs(presShell));
if(!presShell)
return NS_OK;
nsCOMPtr<nsIDOMWindow> domWindow;
GetContentDOMWindow(getter_AddRefs(domWindow));
if (domWindow) {
nsCOMPtr<nsPIDOMWindow> privateDOMWindow = do_QueryInterface(domWindow);
if(privateDOMWindow) {
nsCOMPtr<nsIFocusController> focusController;
privateDOMWindow->GetRootFocusController(getter_AddRefs(focusController));
if (focusController)
focusController->SetActive(PR_FALSE);
privateDOMWindow->Deactivate();
}
}
return NS_OK;
}
/* void setFocusAtFirstElement (); */

Просмотреть файл

@ -542,8 +542,13 @@ nsWebShellWindow::HandleEvent(nsGUIEvent *aEvent)
else */
if (domWindow) {
nsCOMPtr<nsPIDOMWindow> privateDOMWindow = do_QueryInterface(domWindow);
if(privateDOMWindow)
if(privateDOMWindow) {
nsCOMPtr<nsIFocusController> focusController;
privateDOMWindow->GetRootFocusController(getter_AddRefs(focusController));
if (focusController)
focusController->SetActive(PR_FALSE);
privateDOMWindow->Deactivate();
}
}
break;
}