diff options
Diffstat (limited to 'dom/xul/nsXULElement.cpp')
-rw-r--r-- | dom/xul/nsXULElement.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/dom/xul/nsXULElement.cpp b/dom/xul/nsXULElement.cpp index 93d422d1e9..2ae03e0b17 100644 --- a/dom/xul/nsXULElement.cpp +++ b/dom/xul/nsXULElement.cpp @@ -523,6 +523,18 @@ nsXULElement::IsFocusableInternal(int32_t *aTabIndex, bool aWithMouse) // elements are not focusable by default bool shouldFocus = false; +#ifdef XP_MACOSX + // on Mac, mouse interactions only focus the element if it's a list, + // or if it's a remote target, since the remote target must handle + // the focus. + if (aWithMouse && + IsNonList(mNodeInfo) && + !EventStateManager::IsRemoteTarget(this)) + { + return false; + } +#endif + nsCOMPtr<nsIDOMXULControlElement> xulControl = do_QueryObject(this); if (xulControl) { // a disabled element cannot be focused and is not part of the tab order |