RESOLVED FIXED 109544
INPUT_MULTIPLE_FIELDS_UI: Mouse click not on sub-fields in multiple fields input should not move focus
https://bugs.webkit.org/show_bug.cgi?id=109544
Summary INPUT_MULTIPLE_FIELDS_UI: Mouse click not on sub-fields in multiple fields in...
Kent Tamura
Reported 2013-02-11 21:53:48 PST
INPUT_MULTIPLE_FIELDS_UI: Mouse click not on sub-fields in multiple fields input should not move focus Steps to reproduce: 1. Open data:text/html,<input type=time autofocus> 2. Click on the minutes field 3. Click on ':' between fields Expected: Nothing happens. The minutes field keeps focus. Actual: Chrome 24: Any sub-fields doesn't have focus. Chrome 26: The hour field gets focus.
Attachments
Patch (18.27 KB, patch)
2013-02-11 22:13 PST, Kent Tamura
no flags
Patch 2 (18.35 KB, patch)
2013-02-11 23:20 PST, Kent Tamura
no flags
INPUT_MULTIPLE_FIELDS_UI: Mouse click not on sub-fields in multiple fields input should not move focus (18.37 KB, text/plain)
2013-02-12 01:00 PST, Nils Barth
no flags
Kent Tamura
Comment 1 2013-02-11 22:13:44 PST
Build Bot
Comment 2 2013-02-11 23:11:54 PST
Kent Tamura
Comment 3 2013-02-11 23:20:58 PST
Created attachment 187781 [details] Patch 2 Fix mac build
Kentaro Hara
Comment 4 2013-02-12 00:03:24 PST
Comment on attachment 187781 [details] Patch 2 Looks OK
WebKit Review Bot
Comment 5 2013-02-12 00:36:36 PST
Comment on attachment 187781 [details] Patch 2 Clearing flags on attachment: 187781 Committed r142592: <http://trac.webkit.org/changeset/142592>
WebKit Review Bot
Comment 6 2013-02-12 00:36:40 PST
All reviewed patches have been landed. Closing bug.
Nils Barth
Comment 7 2013-02-12 01:00:18 PST
Created attachment 187803 [details] INPUT_MULTIPLE_FIELDS_UI: Mouse click not on sub-fields in multiple fields input should not move focus https://bugs.webkit.org/show_bug.cgi?id=109544 Reviewed by Kentaro Hara. Source/WebCore: This is similar to Bug 108914, "Should not move focus if the element already has focus." We fixed a focus() case in Bug 108914. However we still have the problem in a case of focusing by mouse click. The fix for Bug 108914 intercepted focus() function to change the behavior. However focus-by-click doesn't call focus(), but calls FocusController::setFocusedNode. To fix this problem, we introduce oldFocusedNode argument to handleFocusEvent, and BaseMultipleFieldsDateAndTimeInputType::handleFocusEvent restores the focus to oldFocusedNode if oldFocusedNode is one of sub-fields. handleFocusEvent is called whenever the focused node is changed. We don't need InputType::willCancelFocus any more because the new code in handleFocusEvent covers it. Tests: Update fast/forms/time-multiple-fields/time-multiple-fields-focus.html. * html/HTMLTextFormControlElement.h: (WebCore::HTMLTextFormControlElement::handleFocusEvent): Add oldFocusedNode argument. * html/HTMLTextFormControlElement.cpp: (WebCore::HTMLTextFormControlElement::dispatchFocusEvent): Pass oldFocusedNode to handleFocusEvent. * html/HTMLInputElement.h: (HTMLInputElement): - Add oldFocusedNode argument to handleFocusEvent. - Remove focus() override. * html/HTMLInputElement.cpp: Remove focus() override. (WebCore::HTMLInputElement::handleFocusEvent): Pass oldFocusedNode to InputType::handleFocusEvent. * html/InputType.cpp: Remove willCancelFocus. (WebCore::InputType::handleFocusEvent): Add oldFocusedNode argument. * html/InputType.h: (InputType): Ditto. * html/PasswordInputType.cpp: (WebCore::PasswordInputType::handleFocusEvent): Ditto. * html/PasswordInputType.h: (PasswordInputType): Ditto. * html/BaseMultipleFieldsDateAndTimeInputType.h: (BaseMultipleFieldsDateAndTimeInputType): Remove willCancelFocus, and add oldFocusedNode argument to handleFocusEvent. * html/BaseMultipleFieldsDateAndTimeInputType.cpp: (WebCore::BaseMultipleFieldsDateAndTimeInputType::handleFocusEvent): Pass oldFocusedNode to DateTimeEditElement::focusByOwner if the direction is FocusDirectionNone. * html/shadow/DateTimeEditElement.h: (DateTimeEditElement): Add oldFocusedNode argument to focusByOwner. * html/shadow/DateTimeEditElement.cpp: (WebCore::DateTimeEditElement::focusByOwner): If oldFocusedNode is one of sub-fields, focus on it again. LayoutTests: * fast/forms/time-multiple-fields/time-multiple-fields-focus-expected.txt: * fast/forms/time-multiple-fields/time-multiple-fields-focus.html: Add test to click a delimiter. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142592 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- 16 files changed, 118 insertions(+), 45 deletions(-)
Nils Barth
Comment 8 2013-02-12 01:02:19 PST
(In reply to comment #7) > Created an attachment (id=187803) [details] Sorry sorry -- webkit-patch accidentally uploaded to wrong bug number. Please ignore.
Note You need to log in before you can comment on or make changes to this bug.