diff --git a/mozilla/layout/forms/nsListControlFrame.cpp b/mozilla/layout/forms/nsListControlFrame.cpp index e61a6fa00e4..544b3c7e72f 100644 --- a/mozilla/layout/forms/nsListControlFrame.cpp +++ b/mozilla/layout/forms/nsListControlFrame.cpp @@ -2034,6 +2034,17 @@ nsListControlFrame::MouseDown(nsIDOMEvent* aMouseEvent) } else { // NOTE: the combo box is responsible for dropping it down if (mComboboxFrame) { + nsIEventStateManager *stateManager; + if (NS_OK == mPresContext->GetEventStateManager(&stateManager)) { + nsIFrame * frame; + stateManager->GetEventTarget(&frame); + nsCOMPtr listFrame(do_QueryInterface(frame)); + if (listFrame) { + return NS_OK; + } + NS_RELEASE(stateManager); + } + PRBool isDroppedDown; mComboboxFrame->IsDroppedDown(&isDroppedDown); mComboboxFrame->ShowDropDown(!isDroppedDown); diff --git a/mozilla/layout/html/forms/src/nsListControlFrame.cpp b/mozilla/layout/html/forms/src/nsListControlFrame.cpp index e61a6fa00e4..544b3c7e72f 100644 --- a/mozilla/layout/html/forms/src/nsListControlFrame.cpp +++ b/mozilla/layout/html/forms/src/nsListControlFrame.cpp @@ -2034,6 +2034,17 @@ nsListControlFrame::MouseDown(nsIDOMEvent* aMouseEvent) } else { // NOTE: the combo box is responsible for dropping it down if (mComboboxFrame) { + nsIEventStateManager *stateManager; + if (NS_OK == mPresContext->GetEventStateManager(&stateManager)) { + nsIFrame * frame; + stateManager->GetEventTarget(&frame); + nsCOMPtr listFrame(do_QueryInterface(frame)); + if (listFrame) { + return NS_OK; + } + NS_RELEASE(stateManager); + } + PRBool isDroppedDown; mComboboxFrame->IsDroppedDown(&isDroppedDown); mComboboxFrame->ShowDropDown(!isDroppedDown);