mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1111995 - Clip buttons to their border area for event hit testing. r=roc
This commit is contained in:
parent
aac41f8e45
commit
ad530d745a
@ -96,6 +96,17 @@ nsHTMLButtonControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
const nsRect& aDirtyRect,
|
||||
const nsDisplayListSet& aLists)
|
||||
{
|
||||
// Clip to our border area for event hit testing.
|
||||
Maybe<DisplayListClipState::AutoSaveRestore> eventClipState;
|
||||
const bool isForEventDelivery = aBuilder->IsForEventDelivery();
|
||||
if (isForEventDelivery) {
|
||||
eventClipState.emplace(aBuilder);
|
||||
nsRect rect(aBuilder->ToReferenceFrame(this), GetSize());
|
||||
nscoord radii[8];
|
||||
bool hasRadii = GetBorderRadii(radii);
|
||||
eventClipState->ClipContainingBlockDescendants(rect, hasRadii ? radii : nullptr);
|
||||
}
|
||||
|
||||
nsDisplayList onTop;
|
||||
if (IsVisibleForPainting(aBuilder)) {
|
||||
mRenderer.DisplayButton(aBuilder, aLists.BorderBackground(), &onTop);
|
||||
@ -104,7 +115,7 @@ nsHTMLButtonControlFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
||||
nsDisplayListCollection set;
|
||||
|
||||
// Do not allow the child subtree to receive events.
|
||||
if (!aBuilder->IsForEventDelivery()) {
|
||||
if (!isForEventDelivery) {
|
||||
DisplayListClipState::AutoSaveRestore clipState(aBuilder);
|
||||
|
||||
if (IsInput() || StyleDisplay()->mOverflowX != NS_STYLE_OVERFLOW_VISIBLE) {
|
||||
|
Loading…
Reference in New Issue
Block a user