<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>18510</bug_id>
          
          <creation_ts>2008-04-15 04:22:44 -0700</creation_ts>
          <short_desc>Text controls only emit the start editing signal after the first keypress</short_desc>
          <delta_ts>2008-06-09 07:56:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="iain">iain</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>justin.garcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>77677</commentid>
    <comment_count>0</comment_count>
    <who name="iain">iain</who>
    <bug_when>2008-04-15 04:22:44 -0700</bug_when>
    <thetext>I&apos;m writing a backend for Clutter and I was hooking up an onscreen keyboard to WebKit so that it would area when the user selected a text control. I was using EditorClient::textFieldDidBeginEditing() to control when the keyboard appeared, but this method is only called once the user has entered something in the text area. There we get a chicken/egg problem, the keyboard can&apos;t appear until the user types something, but the user cant type something without the keyboard.

Attached is a patch that moves the place where EditorClient::textFieldDidBeginEditing() gets called from RenderTextControl::subtreeHasChanged() to HTMLTextFieldInnerTextElement::defaultEventHandler() although I don&apos;t know if this is the best way? Would it be preferable that there is an EditorClient::textFieldMaybeBeginEditing method as well as textFieldDidBeginEditing which would get called when the control gets focused and textFieldDidBeginEditing would be still called where it is now?

Or am I completely barking up the wrong tree here and completely missed something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77678</commentid>
    <comment_count>1</comment_count>
      <attachid>20549</attachid>
    <who name="iain">iain</who>
    <bug_when>2008-04-15 04:24:10 -0700</bug_when>
    <thetext>Created attachment 20549
Patch to call textFieldDidStartEditing whenever a text control receives focus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77688</commentid>
    <comment_count>2</comment_count>
      <attachid>20549</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-15 08:08:24 -0700</bug_when>
    <thetext>Comment on attachment 20549
Patch to call textFieldDidStartEditing whenever a text control receives focus

Marking for review, so this doesn&apos;t get lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79083</commentid>
    <comment_count>3</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2008-04-27 22:31:56 -0700</bug_when>
    <thetext>CCing Justin.  He was looking into this a while ago...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81413</commentid>
    <comment_count>4</comment_count>
      <attachid>20549</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-05-24 23:20:10 -0700</bug_when>
    <thetext>Comment on attachment 20549
Patch to call textFieldDidStartEditing whenever a text control receives focus

Thanks for tackling this!

The indentation of the code looks wrong, and part of the patch is only this indentation change on some existing code.

+	    HTMLInputElement* input = static_cast&lt;HTMLInputElement*&gt;(shadowAncestor);

This cast is incorrect. As you can see above, the shadowAncestor might be a HTMLTextAreaElement.

+	    static_cast&lt;RenderTextControl*&gt;(shadowAncestor-&gt;renderer())-&gt;document()-&gt;frame()-&gt;textFieldDidBeginEditing(input);

Doing this without any null checks is almost certainly incorrect. It may be possible for events to be dispatched in a document that no longer is in a frame, for example. And the old code that&apos;s being replaced was doing the null checks.

As with any WebKit bug fix, the patch needs to include a regression test that demonstrates the problem. And a ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82418</commentid>
    <comment_count>5</comment_count>
      <attachid>21524</attachid>
    <who name="iain">iain</who>
    <bug_when>2008-06-06 05:19:40 -0700</bug_when>
    <thetext>Created attachment 21524
Patch to call textFieldDidStartEditing whenever a text control receives focus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82419</commentid>
    <comment_count>6</comment_count>
    <who name="iain">iain</who>
    <bug_when>2008-06-06 05:23:15 -0700</bug_when>
    <thetext>
&gt; The indentation of the code looks wrong, and part of the patch is only this
&gt; indentation change on some existing code.

Ah, yes, I had emacs in indent tab mode, but WebKit uses spaces to indent.

&gt; As with any WebKit bug fix, the patch needs to include a regression test that
&gt; demonstrates the problem. And a ChangeLog entry.

The new patch includes a ChangeLog entry and fixes all your comments above.

I&apos;m not entirely sure where regression tests go, and to be honest I&apos;m not sure how one would go about writing an automated test for what is more a change of behaviour rather than a bug per say. But maybe if I see what the other regression tests look like I&apos;ll have an epiphany.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82750</commentid>
    <comment_count>7</comment_count>
    <who name="iain">iain</who>
    <bug_when>2008-06-09 07:56:06 -0700</bug_when>
    <thetext>I&apos;ve just realised (well, alp told me) that what I&apos;m looking for here is provided by the EditorClient::setInputMethodState() so I&apos;m closing this as invalid. Apologies for not noticing it sooner.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20549</attachid>
            <date>2008-04-15 04:24:10 -0700</date>
            <delta_ts>2008-06-06 05:19:40 -0700</delta_ts>
            <desc>Patch to call textFieldDidStartEditing whenever a text control receives focus</desc>
            <filename>start-editing.patch</filename>
            <type>text/plain</type>
            <size>2047</size>
            <attacher name="iain">iain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcAppbmRleCBlNmQ1ODcx
Li41NTQ1ZTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGaWVsZElubmVyRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3Bw
CkBAIC01NywxMCArNTcsMTYgQEAgdm9pZCBIVE1MVGV4dEZpZWxkSW5uZXJUZXh0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZ0KQogICAgIGlmIChzaGFkb3dBbmNlc3RvciAm
JiBzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIoKSkgewogICAgICAgICBBU1NFUlQoc2hhZG93QW5j
ZXN0b3ItPnJlbmRlcmVyKCktPmlzVGV4dEZpZWxkKCkgfHwgc2hhZG93QW5jZXN0b3ItPnJlbmRl
cmVyKCktPmlzVGV4dEFyZWEoKSk7CiAgICAgICAgIGlmIChldnQtPmlzQmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQoKSkKLSAgICAgICAgICAgIGlmIChzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIoKS0+
aXNUZXh0RmllbGQoKSkKKwkgICAgaWYgKHNoYWRvd0FuY2VzdG9yLT5yZW5kZXJlcigpLT5pc1Rl
eHRGaWVsZCgpKQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
PihzaGFkb3dBbmNlc3RvciktPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
c2hhZG93QW5jZXN0b3IpLT5kZWZhdWx0RXZlbnRIYW5kbGVyKGV2dCk7CisJICAgIGVsc2UKKwkJ
c3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yKS0+ZGVmYXVs
dEV2ZW50SGFuZGxlcihldnQpOworCQorCWlmIChldnQtPnR5cGUoKSA9PSBjbGlja0V2ZW50KSB7
CisJICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KHNoYWRvd0FuY2VzdG9yKTsKKwkgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRy
b2wqPihzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIoKSktPmRvY3VtZW50KCktPmZyYW1lKCktPnRl
eHRGaWVsZERpZEJlZ2luRWRpdGluZyhpbnB1dCk7CisJfQorCQogICAgICAgICBpZiAoZXZ0LT50
eXBlKCkgPT0gd2Via2l0RWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50KQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRyb2wqPihzaGFkb3dBbmNlc3Rvci0+cmVuZGVyZXIo
KSktPnN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCmluZGV4IDI1MTk3YWQuLjg1ZDU4YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTU0MiwxMSArNTQyLDYgQEAgdm9pZCBSZW5kZXJUZXh0
Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQoKQogICAgICAgICBpZiAoIWlucHV0LT5nZXRBdHRy
aWJ1dGUoaW5jcmVtZW50YWxBdHRyKS5pc051bGwoKSkKICAgICAgICAgICAgIHN0YXJ0U2VhcmNo
RXZlbnRUaW1lcigpOwogCi0gICAgICAgIGlmICghd2FzRGlydHkpIAotICAgICAgICAgICAgaWYg
KGlucHV0LT5mb2N1c2VkKCkpCi0gICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT50ZXh0RmllbGRE
aWRCZWdpbkVkaXRpbmcoaW5wdXQpOwotCiAgICAgICAgIGlmIChpbnB1dC0+Zm9jdXNlZCgpKQog
ICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCiAgICAg
ICAgICAgICAgICAgZnJhbWUtPnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChpbnB1dCk7Cg==
</data>
<flag name="review"
          id="8963"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21524</attachid>
            <date>2008-06-06 05:19:40 -0700</date>
            <delta_ts>2008-06-06 05:19:40 -0700</delta_ts>
            <desc>Patch to call textFieldDidStartEditing whenever a text control receives focus</desc>
            <filename>18510-tk2.patch</filename>
            <type>text/plain</type>
            <size>1736</size>
            <attacher name="iain">iain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZpZWxkSW5uZXJFbGVtZW50LmNwcAppbmRleCBlNmQ1ODcx
Li5kMTVkMThhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGaWVsZElubmVyRWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0RmllbGRJbm5lckVsZW1lbnQuY3Bw
CkBAIC02MSw2ICs2MSwxNiBAQCB2b2lkIEhUTUxUZXh0RmllbGRJbm5lclRleHRFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldnQpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRvd0FuY2VzdG9yKS0+ZGVmYXVsdEV2ZW50SGFuZGxl
cihldnQpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihzaGFkb3dBbmNlc3RvciktPmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZ0KTsKKworICAgICAgICBpZiAoZXZ0LT50eXBlKCkgPT0gY2xpY2tFdmVudCkgeworICAgICAg
ICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihzaGFkb3dBbmNl
c3Rvcik7CisgICAgICAgICAgICBGcmFtZSogZnJhbWU7CisKKyAgICAgICAgICAgIGZyYW1lID0g
c3RhdGljX2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oc2hhZG93QW5jZXN0b3ItPnJlbmRlcmVyKCkpLT5k
b2N1bWVudCgpLT5mcmFtZSgpOworICAgICAgICAgICAgaWYgKGZyYW1lKQorICAgICAgICAgICAg
ICAgIGZyYW1lLT50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoZWxlbWVudCk7CisgICAgICAgIH0K
KwogICAgICAgICBpZiAoZXZ0LT50eXBlKCkgPT0gd2Via2l0RWRpdGFibGVDb250ZW50Q2hhbmdl
ZEV2ZW50KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRyb2wqPihzaGFk
b3dBbmNlc3Rvci0+cmVuZGVyZXIoKSktPnN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IGE2NjBjOWEuLjFhZDMwNjgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTU0MiwxMSArNTQy
LDYgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQoKQogICAgICAg
ICBpZiAoIWlucHV0LT5nZXRBdHRyaWJ1dGUoaW5jcmVtZW50YWxBdHRyKS5pc051bGwoKSkKICAg
ICAgICAgICAgIHN0YXJ0U2VhcmNoRXZlbnRUaW1lcigpOwogCi0gICAgICAgIGlmICghd2FzRGly
dHkpIHsKLSAgICAgICAgICAgIGlmIChpbnB1dC0+Zm9jdXNlZCgpKQotICAgICAgICAgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKGlucHV0KTsKLSAgICAgICAgfQog
ICAgICAgICBpZiAoaW5wdXQtPmZvY3VzZWQoKSkKICAgICAgICAgICAgIGlmIChGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT50ZXh0RGlk
Q2hhbmdlSW5UZXh0RmllbGQoaW5wdXQpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>