Fix for bug 109081. IsEnable/GetEnable should return true by default and not false. That will avoid the regression 128659 caused by my previous checking for 109081. R=bryner, SR=blizzard, A=blizzard

This commit is contained in:
ducarroz%netscape.com 2002-03-04 22:50:11 +00:00
parent cab04c2fb6
commit f62c1a7727
6 changed files with 24 additions and 9 deletions

View File

@ -2063,6 +2063,12 @@ GlobalWindowImpl::Focus()
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
if (treeOwnerAsWin) {
PRBool isEnabled = PR_TRUE;
if (NS_SUCCEEDED(treeOwnerAsWin->GetEnabled(&isEnabled)) && !isEnabled) {
NS_WARNING( "Should not try to set the focus on a disabled window" );
return NS_ERROR_FAILURE;
}
treeOwnerAsWin->SetVisibility(PR_TRUE);
nsCOMPtr<nsIEmbeddingSiteWindow> embeddingWin(do_GetInterface(treeOwnerAsWin));
if (embeddingWin)
@ -3413,8 +3419,15 @@ GlobalWindowImpl::Activate()
*/
nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
if (treeOwnerAsWin)
if (treeOwnerAsWin) {
PRBool isEnabled = PR_TRUE;
if (NS_SUCCEEDED(treeOwnerAsWin->GetEnabled(&isEnabled)) && !isEnabled) {
NS_WARNING( "Should not try to activate a disabled window" );
return NS_ERROR_FAILURE;
}
treeOwnerAsWin->SetVisibility(PR_TRUE);
}
nsCOMPtr<nsIPresShell> presShell;
mDocShell->GetPresShell(getter_AddRefs(presShell));

View File

@ -1166,7 +1166,9 @@ NS_METHOD nsWindow::Enable(PRBool aState)
NS_METHOD nsWindow::IsEnabled(PRBool *aState)
{
NS_ENSURE_ARG_POINTER(aState);
// looks easy enough, but...
*aState = PR_TRUE;
return NS_ERROR_NOT_IMPLEMENTED;
}

View File

@ -566,6 +566,8 @@ NS_IMETHODIMP nsChildView::Enable(PRBool aState)
NS_IMETHODIMP nsChildView::IsEnabled(PRBool *aState)
{
// unimplemented.
if (*aState)
*aState = PR_TRUE;
return NS_OK;
}

View File

@ -577,7 +577,7 @@ NS_IMETHODIMP nsWidget::Enable(PRBool aState)
NS_IMETHODIMP nsWidget::IsEnabled(PRBool *aState)
{
NS_ENSURE_ARG_POINTER(aState);
*aState = mWidget && GTK_WIDGET_SENSITIVE(mWidget) ? PR_TRUE : PR_FALSE;
*aState = !mWidget || GTK_WIDGET_SENSITIVE(mWidget);
return NS_OK;
}

View File

@ -1885,9 +1885,7 @@ NS_METHOD nsWindow::Enable(PRBool bState)
NS_METHOD nsWindow::IsEnabled(PRBool *aState)
{
NS_ENSURE_ARG_POINTER(aState);
*aState = PR_FALSE;
if (mWnd && ::IsWindowEnabled(mWnd))
*aState = PR_TRUE;
*aState = !mWnd || ::IsWindowEnabled(mWnd);
return NS_OK;
}

View File

@ -718,10 +718,10 @@ NS_IMETHODIMP nsXULWindow::GetEnabled(PRBool *aEnabled)
{
NS_ENSURE_ARG_POINTER(aEnabled);
if (mWindow)
mWindow->IsEnabled(aEnabled);
else
*aEnabled = PR_FALSE; // better guess than most
return NS_OK;
return mWindow->IsEnabled(aEnabled);
*aEnabled = PR_TRUE; // better guess than most
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP nsXULWindow::SetEnabled(PRBool aEnable)