Closed Bug 1178382 Opened 6 years ago Closed 6 years ago

Checkerboarding scrolling through a <select size=n> list box

Categories

(Core :: Panning and Zooming, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla42
Tracking Status
firefox42 --- fixed

People

(Reporter: kyle_fung, Assigned: mstange)

References

Details

Attachments

(2 files)

Steps to reproduce:
Go to https://bugzilla.mozilla.org/enter_bug.cgi?product=Core
Scroll the box under "Component" up and down

This causes the box to show checkerboard yellow without any text
Blocks: paint-fast
Blocks: all-aboard-apz
No longer blocks: paint-fast
Summary: Checkerboarding scrolling through a scroll box → Checkerboarding scrolling through a <select size=n> list box
Component: Graphics → Panning and Zooming
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Attached file testcase
Bug 1178382 - Ignore overflow: -moz-hidden-unscrollable on <select size=n> listboxes.

forms.css sets overflow: -moz-hidden-unscrollable on all select elements.
ApplyOverflowClipping in nsFrame.cpp applies overflow clips that are not managed by scroll frames.
nsCSSFrameConstructor::ConstructSelectFrame creates an nsListControlFrame for listbox select elements.
nsListControlFrame is an nsHTMLScrollFrame.
As a result, the clip as applied twice - once by the nsHTMLScrollFrame, and then again by ApplyOverflowClipping.
Adding an exception for nsListControlFrame to ShouldApplyOverflowClipping gets rid of the double clip.
Attachment #8629499 - Flags: review?(roc)
Comment on attachment 8629499 [details]
MozReview Request: Bug 1178382 - Ignore overflow: -moz-hidden-unscrollable on <select size=n> listboxes.

https://reviewboard.mozilla.org/r/12621/#review11089

Ship It!
Attachment #8629499 - Flags: review?(roc) → review+
Comment on attachment 8629499 [details]
MozReview Request: Bug 1178382 - Ignore overflow: -moz-hidden-unscrollable on <select size=n> listboxes.

Bug 1178382 - Ignore overflow: -moz-hidden-unscrollable on <select size=n> listboxes.

forms.css sets overflow: -moz-hidden-unscrollable on all select elements.
ApplyOverflowClipping in nsFrame.cpp applies overflow clips that are not managed by scroll frames.
nsCSSFrameConstructor::ConstructSelectFrame creates an nsListControlFrame for listbox select elements.
nsListControlFrame is an nsHTMLScrollFrame.
As a result, the clip as applied twice - once by the nsHTMLScrollFrame, and then again by ApplyOverflowClipping.
Adding an exception for nsListControlFrame to ShouldApplyOverflowClipping gets rid of the double clip.
But we still need to apply the clip when calculating the frame's visual overflow rect, so we add the
list box frame type to the list of special-cased frames in UnionBorderBoxes.
Attachment #8629499 - Flags: review+ → review?(roc)
Comment on attachment 8629499 [details]
MozReview Request: Bug 1178382 - Ignore overflow: -moz-hidden-unscrollable on <select size=n> listboxes.

https://reviewboard.mozilla.org/r/12621/#review11267

Ship It!
Depends on: 1181289
https://hg.mozilla.org/mozilla-central/rev/0c395b7feaba
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla42
You need to log in before you can comment on or make changes to this bug.