WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 69993
CSS2 overflow: scrollbar not visible on SELECT elements when overflow: scroll is set
https://bugs.webkit.org/show_bug.cgi?id=69993
Summary
CSS2 overflow: scrollbar not visible on SELECT elements when overflow: scroll...
Mike Lawther
Reported
2011-10-12 20:36:36 PDT
As reported in
http://crbug.com/38090
: Test code: <form action=""> <select id="wut" name="wut" size="8" style="overflow: scroll;"> <option value="1">One</option> <option value="2">Two</option> <option value="3">Three</option> <option value="4">Four</option> <option value="5">Five</option> <option value="6">Six</option> <option value="7">Seven</option> <option value="8">Eight</option> <option value="9">Nine</option> <option value="10">Ten</option> </select> </form> I expect a scrollbar to be displayed, as per
http://www.w3.org/TR/CSS2/visufx.html#propdef-overflow
. What happens is that the content is scrollable, the scrollbar background is there, but no scrollbar is visible. Browsers tested (all on MacOS 10.6): WebKit Nightly
r97312
: no scrollbars, BAD Chrome 16.0.906.0 canary: no scrollbars, BAD Firefox 7.0.1: single vertical scrollbar, GOOD Opera 11.51: single vertical scrollbar, GOOD
Attachments
Proposed Patch
(19.74 KB, patch)
2011-10-17 02:57 PDT
,
Antaryami Pandia
no flags
Details
Formatted Diff
Diff
reference screenshot
(16.94 KB, image/png)
2011-10-17 23:11 PDT
,
Antaryami Pandia
no flags
Details
Patch
(31.88 KB, patch)
2011-10-18 00:21 PDT
,
Antaryami Pandia
no flags
Details
Formatted Diff
Diff
Updated patch
(35.00 KB, patch)
2011-10-18 23:34 PDT
,
Antaryami Pandia
ap
: review-
Details
Formatted Diff
Diff
Mac screenshot
(10.53 KB, image/png)
2011-10-19 12:33 PDT
,
Alexey Proskuryakov
no flags
Details
Proposed Patch
(35.92 KB, patch)
2011-11-09 00:11 PST
,
Antaryami Pandia
no flags
Details
Formatted Diff
Diff
Patch for landing.
(35.89 KB, patch)
2011-11-28 22:08 PST
,
Antaryami Pandia (apandia)
simon.fraser
: review+
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Patch.
(9.42 KB, patch)
2012-02-08 02:51 PST
,
Antaryami Pandia (apandia)
simon.fraser
: review-
simon.fraser
: commit-queue-
Details
Formatted Diff
Diff
Patch with Simon's feedback.
(9.65 KB, patch)
2012-02-08 03:20 PST
,
Antaryami Pandia (apandia)
no flags
Details
Formatted Diff
Diff
Show Obsolete
(6)
View All
Add attachment
proposed patch, testcase, etc.
Antaryami Pandia
Comment 1
2011-10-17 02:57:34 PDT
Created
attachment 111232
[details]
Proposed Patch Proposed Patch.
Alexey Proskuryakov
Comment 2
2011-10-17 09:10:22 PDT
Comment on
attachment 111232
[details]
Proposed Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=111232&action=review
Does this fix work if overflow: scroll is inherited? E.g. <div style="overflow:scroll"> <select id="wut" name="wut" size="8" style="overflow: inherit;"> <option value="1">One</option> ... Will getComputedStyle still return overflow:scroll? I don't know enough about this code to tell it from review, but I think that it would be helpful to add tests for both cases to the patch.
> LayoutTests/platform/mac/test_expectations.txt:34 > +// New test in
https://bugs.webkit.org/show_bug.cgi?id=69993
> +BUGWK69993 : fast/forms/select-overflow-scroll-property.html = IMAGE+TEXT
Do all platforms besides Gtk fail the test, or do they actually pass, and need separate results? If it's the former, does this patch make behavior worse?
Antaryami Pandia
Comment 3
2011-10-17 23:09:15 PDT
(In reply to
comment #2
)
> Does this fix work if overflow: scroll is inherited? E.g. > > <div style="overflow:scroll"> > <select id="wut" name="wut" size="8" style="overflow: inherit;"> > <option value="1">One</option>
Yes, it fixes the inherited case also.
> > Will getComputedStyle still return overflow:scroll?
Since we are changing the style itself, it should return overflow:hidden.
> I don't know enough about this code to tell it from review, but I think that it would be helpful to add tests for both cases to the patch.
Ok. I will add both the test cases.
> > LayoutTests/platform/mac/test_expectations.txt:34 > > +// New test in
https://bugs.webkit.org/show_bug.cgi?id=69993
> > +BUGWK69993 : fast/forms/select-overflow-scroll-property.html = IMAGE+TEXT > > Do all platforms besides Gtk fail the test, or do they actually pass, and need separate results? If it's the former, does this patch make behavior worse?
Yes. The issue can be seen on other platform also. I verified the issue on chromium and safari(on windows). I didn't have a mac set-up but I think w.r.t. this issue, the behavior will be same across all platforms. Attached is a screenshot of GtkWebkit for reference. As can be seen the attached screenshot patch changes the visual display, hence I have added the pixel tests.
Antaryami Pandia
Comment 4
2011-10-17 23:11:41 PDT
Created
attachment 111387
[details]
reference screenshot reference screenshot
Alexey Proskuryakov
Comment 5
2011-10-17 23:21:39 PDT
I don't think that skipping tests that just need platform results in the preferred approach. We may not notice that for a long time if the tests are skipped.
> Since we are changing the style itself, it should return overflow:hidden.
That seems wrong. Does any other browser behave this way? In fact, did you find out why scrollbars appear in this case? Are <select> bounds calculated incorrectly perhaps?
Antaryami Pandia
Comment 6
2011-10-17 23:43:23 PDT
(In reply to
comment #5
)
> I don't think that skipping tests that just need platform results in the preferred approach. We may not notice that for a long time if the tests are skipped.
Ok. I will remove the test from skipped files.
> > Since we are changing the style itself, it should return overflow:hidden. > > That seems wrong. Does any other browser behave this way?
Yes, you are right.I check on firefox and it has the computed style for overflow as visible.I will make the changes accordingly.
> In fact, did you find out why scrollbars appear in this case? Are <select> bounds calculated incorrectly perhaps?
The scrollbar appears because the listbox renderer handles the scenerio.Code can be found at RenderListBox::paintObject and RenderListBox::paintScrollbar. After the change the behavior is as par with firefox and IE.Both displays only vertical scrollbar.
Antaryami Pandia
Comment 7
2011-10-18 00:21:55 PDT
Created
attachment 111399
[details]
Patch Upadated patch with Alexey's feedback.
Alexey Proskuryakov
Comment 8
2011-10-18 08:58:01 PDT
> The scrollbar appears because the listbox renderer handles the scenerio.
I'm asking about overflow scrollbars. Why are those painted?
> I think that it would be helpful to add tests for both cases to the patch.
What is the reason not to do that?
Antaryami Pandia
Comment 9
2011-10-18 22:06:08 PDT
(In reply to
comment #8
)
> > The scrollbar appears because the listbox renderer handles the scenerio. > > I'm asking about overflow scrollbars. Why are those painted?
For overflow:scroll, currently webkit always places the horizontal and vertical scrollbar.Related code can be found at RenderBlock::layoutBlock.
> > I think that it would be helpful to add tests for both cases to the patch. > > What is the reason not to do that?
I have added test cases for overflow:scroll (select-overflow-scroll.html) and inherited case (select-overflow-scroll-inherited.html) and theirs pixel tests. Were you talking about the overflow:scroll and inherited cases.Please let me know if I have misunderstood.
Alexey Proskuryakov
Comment 10
2011-10-18 22:22:19 PDT
> For overflow:scroll, currently webkit always places the horizontal and vertical scrollbar.Related code can be found at RenderBlock::layoutBlock.
Yes, but why make an exception just for <select>? What you see is that overflow:scroll scrollbars are positioned so that they obscure <select>'s own scrollbar, which likely happens because its bounds are computed incorrectly. If you think that it's incorrect to always draw scrollbars for overflow:scroll, you could attack that issue in general.
> I have added test cases for overflow:scroll (select-overflow-scroll.html) and inherited case (select-overflow-scroll-inherited.html) and theirs pixel tests. > Were you talking about the overflow:scroll and inherited cases.Please let me know if I have misunderstood.
I didn't notice that you added another test, but there is still no test for getComputedStyle(). It should be tested, and it should work the same way it does in other browsers.
Antaryami Pandia
Comment 11
2011-10-18 22:44:26 PDT
(In reply to
comment #10
)
> > For overflow:scroll, currently webkit always places the horizontal and vertical scrollbar.Related code can be found at RenderBlock::layoutBlock. > > Yes, but why make an exception just for <select>? What you see is that overflow:scroll scrollbars are positioned so that they obscure <select>'s own scrollbar, which likely happens because its bounds are computed incorrectly. > > If you think that it's incorrect to always draw scrollbars for overflow:scroll, you could attack that issue in general.
Firefox and IE shows only vertical scrollbar for list box (<select> with size) with overflow:scroll.I think they also overlook the overflow:scroll property for this case. With this change webkit matches the other browser's behavior. Also there is piece of of code present in CSSStyleSelector::adjustRenderStyle which always set menulist elements overflow as visible. // Menulists should have visible overflow if (style->appearance() == MenulistPart) { style->setOverflowX(OVISIBLE); style->setOverflowY(OVISIBLE); }
> > I have added test cases for overflow:scroll (select-overflow-scroll.html) and inherited case (select-overflow-scroll-inherited.html) and theirs pixel tests. > > Were you talking about the overflow:scroll and inherited cases.Please let me know if I have misunderstood. > > I didn't notice that you added another test, but there is still no test for getComputedStyle(). It should be tested, and it should work the same way it does in other browsers.
OK.I will add a test case for getComputedStyle. I checked the computed style (using firebug-inspect element) and the elements overflow can be seen as visisble, which matches with this change.
Antaryami Pandia
Comment 12
2011-10-18 23:34:29 PDT
Created
attachment 111567
[details]
Updated patch Added layout test for getcomputedstyle.
Alexey Proskuryakov
Comment 13
2011-10-19 12:33:51 PDT
Created
attachment 111658
[details]
Mac screenshot I think that some of the confusion comes from how Gtk render theme renders these scrollbars. These are completely separate from regular <select> scrollbar - on Mac, they even have a different size. Also, this issue doesn't happen at all with OS X Lion style overlay scrollbars (the screenshot I'm attaching is from Lion, but with legacy scrollbars enabled).
Alexey Proskuryakov
Comment 14
2011-10-19 12:38:45 PDT
Comment on
attachment 111567
[details]
Updated patch View in context:
https://bugs.webkit.org/attachment.cgi?id=111567&action=review
> LayoutTests/fast/css/getComputedStyle/computed-style-select-overflow-expected.txt:6 > +PASS computedOverflowStyle('scroll', 'overflow-x') is 'visible' > +PASS computedOverflowStyle('scroll', 'overflow-y') is 'visible' > +PASS computedInheritedOverflowStyle('inherit', 'overflow-x') is 'visible' > +PASS computedInheritedOverflowStyle('inherit', 'overflow-y') is 'visible'
Firefox 7.0.1 says FAIL on these tests for me, matching current WebKit. FAIL computedOverflowStyle('scroll', 'overflow-x') should be visible. Was scroll. FAIL computedOverflowStyle('scroll', 'overflow-y') should be visible. Was scroll. FAIL computedInheritedOverflowStyle('inherit', 'overflow-x') should be visible. Was scroll. FAIL computedInheritedOverflowStyle('inherit', 'overflow-y') should be visible. Was scroll. Consequently, I do not think that this is the right way to approach this problem.
Antaryami Pandia
Comment 15
2011-10-19 21:21:34 PDT
(In reply to
comment #14
)
> (From update of
attachment 111567
[details]
) > Firefox 7.0.1 says FAIL on these tests for me, matching current WebKit. > > FAIL computedOverflowStyle('scroll', 'overflow-x') should be visible. Was scroll. > FAIL computedOverflowStyle('scroll', 'overflow-y') should be visible. Was scroll. > FAIL computedInheritedOverflowStyle('inherit', 'overflow-x') should be visible. Was scroll. > FAIL computedInheritedOverflowStyle('inherit', 'overflow-y') should be visible. Was scroll. > > Consequently, I do not think that this is the right way to approach this problem.
Thanks for the feedback.I will do some more investigation. Also it will be helpful if you can provide some info how to test these layout tests on firefox.
Alexey Proskuryakov
Comment 16
2011-10-19 21:59:45 PDT
> Also it will be helpful if you can provide some info how to test these layout tests on firefox.
I just dragged the file from Finder into an empty Firefox window.
Antaryami Pandia
Comment 17
2011-11-09 00:11:00 PST
Created
attachment 114216
[details]
Proposed Patch As per my understanding when an element has overflow:scroll, both horizontal and vertical scrollbar are rendered.And this is true for non-replaced elements.But listbox is a replaced element, and for a replaced element, the rendering of its internals is not defined by CSS. Since listbox renderer handles the scrolling, can we make an exception for listbox and don't set it's scrollbar. This will also helps in avoiding drawing of scrollbar twice.
Antaryami Pandia
Comment 18
2011-11-17 05:15:08 PST
Hi Alexey, please provide some feedback.
Alexey Proskuryakov
Comment 19
2011-11-17 08:55:50 PST
This patch looks right to me. As mentioned before, I do not feel sufficiently qualified to review rendering code.
Antaryami Pandia
Comment 20
2011-11-20 22:31:35 PST
Hi Eric, Can you please review the patch?
Eric Seidel (no email)
Comment 21
2011-11-20 23:06:12 PST
Hyatt is really your best reviewer. This is a tiny patch, perhaps we can convince him to take a quick look.
Antaryami Pandia
Comment 22
2011-11-22 02:12:47 PST
Hi Hyatt,please review the patch.
Antaryami Pandia (apandia)
Comment 23
2011-11-28 22:08:18 PST
Created
attachment 116894
[details]
Patch for landing. Patch with updated source.
Antaryami Pandia
Comment 24
2011-11-28 22:14:44 PST
Comment on
attachment 114216
[details]
Proposed Patch marking obsolute as added a new patch with updated source.
Eric Seidel (no email)
Comment 25
2011-12-19 10:49:10 PST
Comment on
attachment 114216
[details]
Proposed Patch Cleared Simon Fraser's review+ from obsolete
attachment 114216
[details]
so that this bug does not appear in
http://webkit.org/pending-commit
.
Antaryami Pandia (apandia)
Comment 26
2011-12-19 22:20:04 PST
Hi Simon, can you please check the patch once. The patch is the same as the earlier one but with updated source to avoid merge conflicts.
Antaryami Pandia (apandia)
Comment 27
2012-02-08 01:30:45 PST
@Simon, please review the patch.
WebKit Review Bot
Comment 28
2012-02-08 01:57:10 PST
Comment on
attachment 116894
[details]
Patch for landing. Rejecting
attachment 116894
[details]
from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: erflow.html patching file LayoutTests/fast/forms/select-overflow-scroll-inherited.html patching file LayoutTests/fast/forms/select-overflow-scroll.html patching file LayoutTests/platform/gtk/fast/forms/select-overflow-scroll-expected.txt patching file LayoutTests/platform/gtk/fast/forms/select-overflow-scroll-inherited-expected.txt Failed to run "[u'/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply', u'--force', u'--reviewer', u'Simon Fras..." exit_code: 1 cwd: /mnt/git/webkit-commit-queue/ Full output:
http://queues.webkit.org/results/11462333
Antaryami Pandia (apandia)
Comment 29
2012-02-08 02:51:53 PST
Created
attachment 126039
[details]
Patch. Uploading the patch (with latest source) again as the svn-merge has been failed. Hoping I will be get lucky third time and the patch will land on the trunk.
Simon Fraser (smfr)
Comment 30
2012-02-08 03:04:43 PST
Comment on
attachment 126039
[details]
Patch. View in context:
https://bugs.webkit.org/attachment.cgi?id=126039&action=review
> Source/WebCore/ChangeLog:7 > +
https://bugs.webkit.org/show_bug.cgi?id=69993
> + > + Reviewed by NOBODY (OOPS!). > +
Actually, this needs some description of what the problem was and how you fixed it.
Antaryami Pandia (apandia)
Comment 31
2012-02-08 03:20:09 PST
Created
attachment 126043
[details]
Patch with Simon's feedback. Thanks for the quick reply. Uploaded a patch with modified changelog.
WebKit Review Bot
Comment 32
2012-02-08 04:34:40 PST
Comment on
attachment 126043
[details]
Patch with Simon's feedback. Clearing flags on attachment: 126043 Committed
r107072
: <
http://trac.webkit.org/changeset/107072
>
WebKit Review Bot
Comment 33
2012-02-08 04:34:46 PST
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug