Bug 415026 IME is always enabled in a page has contentEditable=true r+sr=roc, a1.9=mtschrep
git-svn-id: svn://10.0.0.236/trunk@245235 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -520,7 +520,17 @@ public:
|
||||
};
|
||||
virtual PRUint32 GetDesiredIMEState()
|
||||
{
|
||||
return IME_STATUS_DISABLE;
|
||||
if (!HasFlag(NODE_IS_EDITABLE))
|
||||
return IME_STATUS_DISABLE;
|
||||
nsIContent *editableAncestor = nsnull;
|
||||
for (nsIContent* parent = GetParent();
|
||||
parent && parent->HasFlag(NODE_IS_EDITABLE);
|
||||
parent = parent->GetParent())
|
||||
editableAncestor = parent;
|
||||
// This is in another editable content, use the result of it.
|
||||
if (editableAncestor)
|
||||
return editableAncestor->GetDesiredIMEState();
|
||||
return IME_STATUS_ENABLE;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -237,22 +237,10 @@ nsIMEStateManager::GetNewIMEState(nsPresContext* aPresContext,
|
||||
return nsIContent::IME_STATUS_DISABLE;
|
||||
}
|
||||
|
||||
if (sInstalledMenuKeyboardListener)
|
||||
if (sInstalledMenuKeyboardListener || !aContent)
|
||||
return nsIContent::IME_STATUS_DISABLE;
|
||||
|
||||
PRBool isEditable = PR_FALSE;
|
||||
nsCOMPtr<nsISupports> container = aPresContext->GetContainer();
|
||||
nsCOMPtr<nsIEditorDocShell> editorDocShell(do_QueryInterface(container));
|
||||
if (editorDocShell)
|
||||
editorDocShell->GetEditable(&isEditable);
|
||||
|
||||
if (isEditable)
|
||||
return nsIContent::IME_STATUS_ENABLE;
|
||||
|
||||
if (aContent)
|
||||
return aContent->GetDesiredIMEState();
|
||||
|
||||
return nsIContent::IME_STATUS_DISABLE;
|
||||
return aContent->GetDesiredIMEState();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user