Open
Bug 994839
Opened 11 years ago
Updated 2 years ago
Improve the internal layout of <select> child frames
Categories
(Core :: Layout: Form Controls, enhancement)
Core
Layout: Form Controls
Tracking
()
NEW
People
(Reporter: MatsPalmgren_bugz, Unassigned)
References
Details
Attachments
(5 files)
Follow-up from bug 992447 comment 4:
Currently, the child frame for the dropdown button is placed outside
the nsComboboxControlFrame content area, so technically it causes
overflow, which is problematic for example when using 'text-overflow'
or 'overflow-clip-box'.
I wonder if the right fix is to have a zero-sized padding area for the
nsComboboxControlFrame itself, and have the padding applied to its
anonymous inner frame instead, like so:
########################################
#pppppppppppppppppppppp||||||||||||||||#
#pppppppppppppppppppppp||||||||||||||||#
#pppp pppppp||||||||||||||||#
#pppp pppppp||||||||||||||||#
#pppp pppppp||||||||||||||||#
#pppp pppppp||||||||||||||||#
#pppppppppppppppppppppp||||||||||||||||#
#pppppppppppppppppppppp||||||||||||||||#
########################################
Where p=padding on the inner anon block, #=outer border, |=button,
and the content area for outermost frame is everything inside #
(i.e. zero padding). That should fix 'overflow-clip-box' properly
if we put 'overflow-clip-box:inherit' (in the UA sheet) on the inner
frame and 'overflow-clip-box:content-box' on the outer, which would
give you the blank area above as the clip area by default. If the
author specifies 'padding-box', the inner content can overflow into
the 'p' area but not beyond it.
(This design should also work for <select> lists where '|' is
instead the scrollbar.)
Reporter | ||
Comment 1•11 years ago
|
||
(We might also want to reconsider if nsComboboxControlFrame really
should be a nsBlockFrame subclass, but that seems like a separate
issue.)
Comment 2•9 years ago
|
||
I've been looking into this, and I have a question: How do we make nsComboboxControlFrame ignore its padding? Moving the display frame and the button around looks easy enough, but nsComboboxControlFrame will still clip the button because it still thinks it has padding.
Flags: needinfo?(mats)
Reporter | ||
Comment 3•9 years ago
|
||
Perhaps we can override it with a UsedPaddingProperty?
(see nsIFrame::GetUsedPadding())
It's a bit of a hack though...
Flags: needinfo?(mats)
Reporter | ||
Comment 4•9 years ago
|
||
It might be simpler to find the few places in layout where
'overflow-clip-box' is implemented and make an exception for
nsComboboxControlFrame? (make it always take the padding-box
branch).
Reporter | ||
Comment 5•9 years ago
|
||
Reporter | ||
Comment 6•9 years ago
|
||
Note that this test shows an existing bug - the button doesn't fill the
height when resizing the window (narrow). Do we have a bug open on this?
Reporter | ||
Comment 7•9 years ago
|
||
Reporter | ||
Comment 8•9 years ago
|
||
Reporter | ||
Comment 9•9 years ago
|
||
Comment on attachment 8643208 [details] [diff] [review]
wip1
To my surprise, this actually seems to work quite well, fwiw.
There was only one reftest failure:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=f1a3177eed1f
and that's a <select> list - which makes sense since I changed
the generic 'select' rule but only update the combobox code.
So I guess we should also investigate how 'overflow-clip-box' works
for the list (size > 1) case.
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•