Bug 137269

Summary: weird input[type=number] incr/decrement button behavior at odd-numbered font sizes
Product: WebKit Reporter: Chris Rebert <webkit>
Component: FormsAssignee: Antonio Gomes <tonikitoo>
Status: ASSIGNED ---    
Severity: Normal CC: hnrch02+webkit, jonlee, p.jacquemart, roger_fong, simon.fraser, tonikitoo, webkit-bug-importer, zalan
Priority: P2 Keywords: HasReduction, InRadar
Version: WebKit Nightly Build   
Hardware: Macintosh Intel   
OS: OS X 10.11   
URL: http://jsfiddle.net/FFXEc/
Bug Depends on:    
Bug Blocks: 159753    
Attachments:
Description Flags
Copy of JS Fiddle example none

Description Chris Rebert 2014-09-30 14:24:29 PDT
OS Version: OS X 10.9.5
Safari Version: 7.1 (9537.85.10.17.1)

Steps to reproduce the problem:
1. Open the demo JS Fiddle ( http://jsfiddle.net/FFXEc/ ) in Safari.
2. (All further instructions are regarding the second/middle input[type=number] field on the demo.)
[Bug A]:
3. Hover the cursor up and down along the inner right edge of the field, in horizontal alignment with the increment and decrement buttons.
[Bug B/C]:
4. Click on the top part of the decrement button, such that you observe normal behavior.
5. Continue clicking repeatedly while moving your cursor downward, beyond the decrement button but still within the bounds of the input field.

What is the expected behavior?
A: The cursor ought to always remain a pointer while it's within the bounds of the decrement button.
B: Clicking outside the bounds of the increment/decrement buttons should not cause the input field's value to change.
C: Invoking the decrement button should always cause it to flash blue to indicate that it was clicked.

What went wrong?
A: The cursor changes from a pointer to an "I"-bar (for text entry/selection) before you have gone outside the bounds of the decrement button.
B: The field's number value continues to decrement.
C: The decrement button did not flash blue to indicate that it was somehow clicked.

Original Bootstrap bug report: https://github.com/twbs/bootstrap/issues/8350
Related Chromium bug: https://code.google.com/p/chromium/issues/detail?id=337668
Comment 1 Chris Rebert 2014-10-29 16:04:48 PDT
Still broken in Safari version 8.0 (10600.1.25) on OS X Yosemite.
Comment 2 Radar WebKit Bug Importer 2014-10-31 00:03:12 PDT
<rdar://problem/18834768>
Comment 3 Chris Rebert 2015-05-06 11:44:29 PDT
Created attachment 252499 [details]
Copy of JS Fiddle example
Comment 4 Chris Rebert 2016-02-07 16:18:43 PST
Still reproduces in Safari version 9.0.3 (11601.4.4)
Comment 5 Antonio Gomes 2016-04-23 15:18:55 PDT
(In reply to comment #4)
> Still reproduces in Safari version 9.0.3 (11601.4.4)

I will take a look at this.
Comment 6 zalan 2016-04-23 19:41:17 PDT
It's probably because the placeholder renderer for the increment/decrement button is the height of the button element while the actual widget (for obvious reasons) is not scaled up to it. The fix is to size and position the placeholder renderer in sync with the  widget.
Comment 7 zalan 2016-04-23 21:25:18 PDT
(In reply to comment #6)
> It's probably because the placeholder renderer for the increment/decrement
> button is the height of the button element while the actual widget (for
> obvious reasons) is not scaled up to it. The fix is to size and position the
> placeholder renderer in sync with the  widget.
Though it might be a bit difficult as it's all flexbox driven afair.