diff --git a/mozilla/layout/forms/nsHTMLButtonControlFrame.cpp b/mozilla/layout/forms/nsHTMLButtonControlFrame.cpp index 6b1a2f2045e..3eba11b7681 100644 --- a/mozilla/layout/forms/nsHTMLButtonControlFrame.cpp +++ b/mozilla/layout/forms/nsHTMLButtonControlFrame.cpp @@ -209,11 +209,14 @@ nsHTMLButtonControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, } nsDisplayListCollection set; - nsresult rv = - BuildDisplayListForChild(aBuilder, mFrames.FirstChild(), aDirtyRect, set, - DISPLAY_CHILD_FORCE_PSEUDO_STACKING_CONTEXT); - NS_ENSURE_SUCCESS(rv, rv); - // That should put the display items in set.Content() + // Do not allow the child subtree to receive events. + if (!aBuilder->IsForEventDelivery()) { + nsresult rv = + BuildDisplayListForChild(aBuilder, mFrames.FirstChild(), aDirtyRect, set, + DISPLAY_CHILD_FORCE_PSEUDO_STACKING_CONTEXT); + NS_ENSURE_SUCCESS(rv, rv); + // That should put the display items in set.Content() + } // Put the foreground outline and focus rects on top of the children set.Content()->AppendToTop(&onTop); @@ -230,7 +233,7 @@ nsHTMLButtonControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, nsRect rect(aBuilder->ToReferenceFrame(this), GetSize()); rect.Deflate(border); - rv = OverflowClip(aBuilder, set, aLists, rect); + nsresult rv = OverflowClip(aBuilder, set, aLists, rect); NS_ENSURE_SUCCESS(rv, rv); rv = DisplayOutline(aBuilder, aLists);