<?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>4394</bug_id>
          
          <creation_ts>2005-08-11 11:08:02 -0700</creation_ts>
          <short_desc>Mouse clicks ignored in inline input areas</short_desc>
          <delta_ts>2007-11-23 20:19:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>evan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>16443</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-08-11 11:08:02 -0700</bug_when>
    <thetext>Mouse clicks in inline input areas are not forwarded to input methods.

Steps to reproduce:
1. Open WebCore/layout-tests/editing/inserting/typing-001.html
2. With any input method that uses inline input (such as Kotoeri Hiragana), type something
3. Click in the middle of the inline input area
  The insertion point is correctly positioned where you have click; the input area doesn&apos;t close
4. Continue typing

Results: text is appended to the end of the inline input area

Discussion: I believe this happens because mouse events are not being correctly sent to TSM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17757</commentid>
    <comment_count>1</comment_count>
    <who name="Evan Gross">evan</who>
    <bug_when>2005-08-27 16:48:00 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Mouse clicks in inline input areas are not forwarded to input methods.
&gt; 
... 
&gt; Discussion: I believe this happens because mouse events are not being correctly sent to TSM.

Yep, this is definitely a problem. There is a comment in -mouseDown:

    // TEXTINPUT: if there is marked text and the current input
    // manager wants to handle mouse events, we need to make sure to
    // pass it to them. If not, then we need to notify the input
    // manager when the marked text is abandoned (user clicks outside
    // the marked area)

But I can&apos;t see where the above is actually being done. Some portion of the above functionality IS 
provided when _selectionChanged is called. However, what happens in _selectionChanged is not totally 
correct - the actual mouse down event does not actually get passed through to TSM (and therefore to 
the input method itself).

The impression is given that the line of code that follows the above comment does this:

    [_private-&gt;compController endRevertingChange:NO moveLeft:NO];

But it&apos;s solely for dealing with completion, and has nothing to do with the above comment.

So it looks like there is some not-yet-written code associated with that comment.

Any idea how this should be done? NSTextView does it properly...
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18660</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-04 08:25:32 -0700</bug_when>
    <thetext>Unfortunately, I am not familiar with using TSM from Cocoa... Yet, looks like there&apos;s enough evidence to at 
least mark this confirmed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19048</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-07 21:52:48 -0700</bug_when>
    <thetext>  Looks like 
[[NSInputManager currentInputManager] handleMouseEvent:event];

  at this point almost does the job. That is, an event gets forwarded, but with a wrong character index 
(because -[WebHTMLView(WebNSTextInputSupport) characterIndexForPoint:] is simply not implemented 
yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19354</commentid>
    <comment_count>4</comment_count>
      <attachid>3862</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-11 10:09:08 -0700</bug_when>
    <thetext>Created attachment 3862
proposed patch

I think that the problem with characterIndexForPoint is a separate one -
Kotoeri itself asks for the index while processing a mouse event.

Because of that, and because this patch solves the problem for my own and,
presumably, Evan&apos;s input methods, I think characterIndexForPoint should be
handled separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19355</commentid>
    <comment_count>5</comment_count>
      <attachid>3862</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-11 10:26:02 -0700</bug_when>
    <thetext>Comment on attachment 3862
proposed patch

Patch looks great.

I don&apos;t think that the check for clcking outside the marked text is good
enough. To communicate the rectangle to the input manager, it&apos;s true that we
have to use only &quot;first rect for character range&quot;, but for us internally, we
should be able to accurately determine if a click is in the marked text or not.
So the check should not be to get a rect and check if the mouse is in the rect.
Instead we should be passing the point over to WebCore to let it determine if
the click is outside the marked text.

Formatting nitpick: This code uses formatting like &quot;NSEvent *&quot;, but the new
code says &quot;NSInputManager*&quot; with no space. I&apos;d love for this to be consistent
across the entire WebKit project, either way. Unfortunately we have a mix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19503</commentid>
    <comment_count>6</comment_count>
      <attachid>3879</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-12 12:23:03 -0700</bug_when>
    <thetext>Created attachment 3879
updated patch

Re-implemented using editableDOMRangeForPoint, markedTextDOMRange and
compareBoundaryPoints.

There are at least two things I don&apos;t really understand about that code path:
- What are the input managers that don&apos;t want to handle mouse events and why we
should treat them as described in the comment (AFAIK, TSM input methods always
handle mouse events).
- What editableDOMRangeForPoint actually is - I am always getting a range with
start==end from this method. Anyhow, I&apos;m handling it as a real range, just in
case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20291</commentid>
    <comment_count>7</comment_count>
      <attachid>3879</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-23 09:04:53 -0700</bug_when>
    <thetext>Comment on attachment 3879
updated patch

I&apos;d like to see the &quot;DOM ranges intersect&quot; code factored into a separate
function.

editableDOMRangeForPoint does always return a range with start == end. It uses
DOMRange just because there&apos;s no &quot;DOMPoint&quot;.

I think this is a good change, r=me.

I&apos;m concerned, however, that we don&apos;t have anyone testing the Japanese and
Chinese input methods. It&apos;s was quite challenging getting them working with
WebKit and Mail for Tiger, and I worry that changes in this area will result in
regressions in their behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20317</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-23 11:52:28 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I&apos;d like to see the &quot;DOM ranges intersect&quot; code factored into a separate function.

Should it be something like -(bool)intersectsDOMRange:(DOMRange*)other in DOMRange itself? I&apos;m 
wondering what would be the right way to treat end points... What seems natural to me is that the left 
end point is included in the range, and the right one isn&apos;t:
[0,0) intersects [0,1)
[0,1) doesn&apos;t intersect [1,1)
[0,1) doesn&apos;t intersect [1, 2)

Does it make sense for DOMRanges?

&gt; I worry that changes in this area will result in regressions in their behavior.

I expect quite a number of changes after this one and those Evan is proposing are finished - we need 
them as a baseline for more involved ones...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20436</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-24 03:16:58 -0700</bug_when>
    <thetext>The idea of including the start but not the end doesn&apos;t really make sense for a general purpose 
DOMRange method. It&apos;s specific to a use of DOM ranges rather than the fundamental concept. So I 
could see that in a helper function but not in a DOMRange method.

I typically think of DOM ranges as describing sets of DOM content, so if I was writing an intersection 
test, then it would return false for ranges that touch only at end points and an empty range would not 
even intersect with itself. That&apos;s the kind of general purpose DOM range intersection function that I 
think should be around as a general purpose helper.

Another kind of helper would be a &quot;Is this DOM point in this DOM range?&quot; function. For that, we pass 
two ranges and use the start of one range as the point. That&apos;s the helper that would be directly 
applicable for this patch, and as you say we&apos;d have to define whether &quot;in this DOM range&quot; includes the 
endpoints or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20437</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-24 03:34:51 -0700</bug_when>
    <thetext>I did some research, and the rule in AppKit is that selections at the end of the inline input area *do* count 
as &quot;within the marked text&quot;, so I&apos;m going to mimic that rule.

But we have no way to test this unless we come up with an input method that does inline input but does 
not handle mouse clicks. I don&apos;t know of one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20438</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-24 03:43:25 -0700</bug_when>
    <thetext>I don&apos;t know why this didn&apos;t occur to me earlier, but it&apos;s incorrect to unmark the text because of the mouse 
down event. That should be done in response to a selection change, not at the time you click.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20439</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-24 03:44:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I did some research, and the rule in AppKit is that selections at the end of the inline input 
&gt; area *do* count as &quot;within the marked text&quot;, so I&apos;m going to mimic that rule.

FWIW, NSTextView has an obvious bug in this situation:
1) Open a new document in TextEdit
2) Type something with Kotoeri, do not close the inline input session
3) Click somewhere to the right of the marked text

Results: the caret gets positioned _before_ the last character in the inline hole.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20440</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-24 03:49:15 -0700</bug_when>
    <thetext>(In reply to comment #11)
Hmm... If the selection changes because an arrow key is pressed, the inline area shouldn&apos;t get 
automatically confirmed. How are mouse clicks different?

Besides, in the situation that I described in the previous comment, the caret position shouldn&apos;t change 
(and it&apos;s arguable whether the inline area should be confirmed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20441</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-24 03:55:35 -0700</bug_when>
    <thetext>I completely omitted the code to unmark text when you do mouse down. The comment claimed it was a 
good idea to do that, but it wasn&apos;t.

I also fixed a bug where we&apos;d retain and not release in one of the methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20443</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2005-09-24 04:38:55 -0700</bug_when>
    <thetext>(In reply to comment #14)

Filed the &quot;DOM ranges intersect&quot; suggestion as bug 5116.

Sorry for the over-retaining bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62138</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-23 20:19:56 -0800</bug_when>
    <thetext>http://trac.webkit.org/projects/webkit/changeset/10612</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3862</attachid>
            <date>2005-09-11 10:09:08 -0700</date>
            <delta_ts>2005-09-12 12:23:03 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>ForwardEventsPatch.txt</filename>
            <type>text/plain</type>
            <size>4103</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktp
dC9XZWJWaWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
NjcKZGlmZiAtcCAtdSAtcjEuNDY3IFdlYkhUTUxWaWV3Lm0KLS0tIFdlYkhUTUxWaWV3Lm0JNSBT
ZXAgMjAwNSAyMjoyNjowNSAtMDAwMAkxLjQ2NworKysgV2ViSFRNTFZpZXcubQkxMSBTZXAgMjAw
NSAxNzowMjozOSAtMDAwMApAQCAtMjU3NSwxMiArMjU3NSwyOCBAQCBzdGF0aWMgV2ViSFRNTFZp
ZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogICAgIC8vIFJlY29yZCB0aGUgbW91c2UgZG93biBwb3Np
dGlvbiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGRyYWcgaHlzdGVyZXNpcy4KICAgICBbc2VsZiBfc2V0
TW91c2VEb3duRXZlbnQ6ZXZlbnRdOwogCi0gICAgLy8gVEVYVElOUFVUOiBpZiB0aGVyZSBpcyBt
YXJrZWQgdGV4dCBhbmQgdGhlIGN1cnJlbnQgaW5wdXQKLSAgICAvLyBtYW5hZ2VyIHdhbnRzIHRv
IGhhbmRsZSBtb3VzZSBldmVudHMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvCi0gICAgLy8gcGFz
cyBpdCB0byB0aGVtLiBJZiBub3QsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGlucHV0Cisg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgaW5wdXQgbWFuYWdlciB3YW50cyB0byBoYW5kbGUgbW91c2Ug
ZXZlbnRzLCB3ZSBuZWVkIAorICAgIC8vIHRvIG1ha2Ugc3VyZSB0byBwYXNzIHRoZW0gdG8gaXQu
IElmIG5vdCwgdGhlbiB3ZSBuZWVkIHRvIG5vdGlmeSB0aGUgaW5wdXQKICAgICAvLyBtYW5hZ2Vy
IHdoZW4gdGhlIG1hcmtlZCB0ZXh0IGlzIGFiYW5kb25lZCAodXNlciBjbGlja3Mgb3V0c2lkZQog
ICAgIC8vIHRoZSBtYXJrZWQgYXJlYSkKIAorICAgIE5TSW5wdXRNYW5hZ2VyKiBjdXJyZW50SW5w
dXRNYW5hZ2VyID0gW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJdOworICAgIGlm
IChbY3VycmVudElucHV0TWFuYWdlciB3YW50c1RvSGFuZGxlTW91c2VFdmVudHNdKSB7CisgICAg
ICAgIGlmIChbY3VycmVudElucHV0TWFuYWdlciBoYW5kbGVNb3VzZUV2ZW50OmV2ZW50XSkKKyAg
ICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoW3NlbGYgaGFz
TWFya2VkVGV4dF0pIHsKKyAgICAgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbZXZlbnQgbG9jYXRp
b25JbldpbmRvd107CisgICAgICAgICAgICBOU1JlY3QgcmVjdCA9IFtzZWxmIGZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlOltzZWxmIG1hcmtlZFJhbmdlXV07CisgICAgICAgICAgICByZWN0Lm9y
aWdpbiA9IFtbc2VsZiB3aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6cmVjdC5vcmlnaW5dOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoTlNNb3VzZUluUmVjdChwb2ludCwgcmVjdCwg
RkFMU0UpKSB7CisgICAgICAgICAgICAgICAgW2N1cnJlbnRJbnB1dE1hbmFnZXIgbWFya2VkVGV4
dEFiYW5kb25lZDpzZWxmXTsKKyAgICAgICAgICAgICAgICBbc2VsZiB1bm1hcmtUZXh0XTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIFtfcHJpdmF0ZS0+Y29tcENvbnRy
b2xsZXIgZW5kUmV2ZXJ0aW5nQ2hhbmdlOk5PIG1vdmVMZWZ0Ok5PXTsKIAogICAgIC8vIElmIHRo
ZSB3ZWIgcGFnZSBoYW5kbGVzIHRoZSBjb250ZXh0IG1lbnUgZXZlbnQgYW5kIG1lbnVGb3JFdmVu
dDogcmV0dXJucyBuaWwsIHdlJ2xsIGdldCBjb250cm9sIGNsaWNrIGV2ZW50cyBoZXJlLgpAQCAt
MjU5Niw2ICsyNjEyLDcgQEAgc3RhdGljIFdlYkhUTUxWaWV3ICpsYXN0SGl0VmlldyA9IG5pbDsK
ICAgICAgICAgW1tzZWxmIF9icmlkZ2VdIG1vdXNlRG93bjpldmVudF07CiAgICAgfQogCitkb25l
OgogICAgIFtfcHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJBdE1vdXNlRG93blRpbWUgcmVsZWFzZV07
CiAgICAgX3ByaXZhdGUtPmZpcnN0UmVzcG9uZGVyQXRNb3VzZURvd25UaW1lID0gbmlsOwogCkBA
IC0yODUzLDEwICsyODcwLDEzIEBAIHN0YXRpYyBXZWJIVE1MVmlldyAqbGFzdEhpdFZpZXcgPSBu
aWw7CiAKIC0gKHZvaWQpbW91c2VVcDooTlNFdmVudCAqKWV2ZW50CiB7Ci0gICAgLy8gVEVYVElO
UFVUOiBpZiB0aGVyZSBpcyBtYXJrZWQgdGV4dCBhbmQgdGhlIGN1cnJlbnQgaW5wdXQKLSAgICAv
LyBtYW5hZ2VyIHdhbnRzIHRvIGhhbmRsZSBtb3VzZSBldmVudHMsIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHRvCi0gICAgLy8gcGFzcyBpdCB0byB0aGVtLgotCisgICAgLy8gSWYgdGhlIGN1cnJlbnQg
aW5wdXQgbWFuYWdlciB3YW50cyB0byBoYW5kbGUgbW91c2UgZXZlbnRzLCB3ZSBuZWVkIAorICAg
IC8vIHRvIG1ha2Ugc3VyZSB0byBwYXNzIHRoZW0gdG8gaXQuCisgICAgTlNJbnB1dE1hbmFnZXIq
IGN1cnJlbnRJbnB1dE1hbmFnZXIgPSBbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdl
cl07CisgICAgaWYgKFtjdXJyZW50SW5wdXRNYW5hZ2VyIHdhbnRzVG9IYW5kbGVNb3VzZUV2ZW50
c10pCisgICAgICAgIGlmIChbY3VycmVudElucHV0TWFuYWdlciBoYW5kbGVNb3VzZUV2ZW50OmV2
ZW50XSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAKICAgICBbc2VsZiByZXRhaW5dOwogICAg
IAogICAgIFtzZWxmIF9zdG9wQXV0b3Njcm9sbFRpbWVyXTsKQEAgLTUxNDMsMjAgKzUxODYsMTcg
QEAgc3RhdGljIE5TQXJyYXkgKnZhbGlkQXR0cmlidXRlcyA9IG5pbDsKIC0gKHZvaWQpX3VwZGF0
ZVNlbGVjdGlvbkZvcklucHV0TWFuYWdlcgogewogICAgIGlmICghW3NlbGYgaGFzTWFya2VkVGV4
dF0gfHwgX3ByaXZhdGUtPmlnbm9yZU1hcmtlZFRleHRTZWxlY3Rpb25DaGFuZ2UpCi0JcmV0dXJu
OworICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW3NlbGYgX3NlbGVjdGlvbklzSW5zaWRlTWFy
a2VkVGV4dF0pIHsKLQlET01SYW5nZSAqc2VsZWN0aW9uID0gW3NlbGYgX3NlbGVjdGVkUmFuZ2Vd
OwotCURPTVJhbmdlICptYXJrZWRUZXh0RE9NUmFuZ2UgPSBbW3NlbGYgX2JyaWRnZV0gbWFya2Vk
VGV4dERPTVJhbmdlXTsKKyAgICAgICAgRE9NUmFuZ2UgKnNlbGVjdGlvbiA9IFtzZWxmIF9zZWxl
Y3RlZFJhbmdlXTsKKyAgICAgICAgRE9NUmFuZ2UgKm1hcmtlZFRleHRET01SYW5nZSA9IFtbc2Vs
ZiBfYnJpZGdlXSBtYXJrZWRUZXh0RE9NUmFuZ2VdOwogCi0JdW5zaWduZWQgbWFya2VkU2VsZWN0
aW9uU3RhcnQgPSBbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XSAtIFttYXJrZWRUZXh0RE9NUmFuZ2Ug
c3RhcnRPZmZzZXRdOwotCXVuc2lnbmVkIG1hcmtlZFNlbGVjdGlvbkxlbmd0aCA9IFtzZWxlY3Rp
b24gZW5kT2Zmc2V0XSAtIFtzZWxlY3Rpb24gc3RhcnRPZmZzZXRdOwotCU5TUmFuZ2UgbmV3U2Vs
ZWN0aW9uUmFuZ2UgPSBOU01ha2VSYW5nZShtYXJrZWRTZWxlY3Rpb25TdGFydCwgbWFya2VkU2Vs
ZWN0aW9uTGVuZ3RoKTsKLQkKLQlbW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJd
IG1hcmtlZFRleHRTZWxlY3Rpb25DaGFuZ2VkOm5ld1NlbGVjdGlvblJhbmdlIGNsaWVudDpzZWxm
XTsKLSAgICB9IGVsc2UgewotCVtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0g
bWFya2VkVGV4dEFiYW5kb25lZDpzZWxmXTsKLQlbc2VsZiB1bm1hcmtUZXh0XTsKKyAgICAgICAg
dW5zaWduZWQgbWFya2VkU2VsZWN0aW9uU3RhcnQgPSBbc2VsZWN0aW9uIHN0YXJ0T2Zmc2V0XSAt
IFttYXJrZWRUZXh0RE9NUmFuZ2Ugc3RhcnRPZmZzZXRdOworICAgICAgICB1bnNpZ25lZCBtYXJr
ZWRTZWxlY3Rpb25MZW5ndGggPSBbc2VsZWN0aW9uIGVuZE9mZnNldF0gLSBbc2VsZWN0aW9uIHN0
YXJ0T2Zmc2V0XTsKKyAgICAgICAgTlNSYW5nZSBuZXdTZWxlY3Rpb25SYW5nZSA9IE5TTWFrZVJh
bmdlKG1hcmtlZFNlbGVjdGlvblN0YXJ0LCBtYXJrZWRTZWxlY3Rpb25MZW5ndGgpOworCisgICAg
ICAgIFtbTlNJbnB1dE1hbmFnZXIgY3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4dFNlbGVj
dGlvbkNoYW5nZWQ6bmV3U2VsZWN0aW9uUmFuZ2UgY2xpZW50OnNlbGZdOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="562"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3879</attachid>
            <date>2005-09-12 12:23:03 -0700</date>
            <delta_ts>2005-09-23 09:04:53 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>ForwardEventsPatch2.txt</filename>
            <type>text/plain</type>
            <size>5548</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkhUTUxWaWV3Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktp
dC9XZWJWaWV3LnN1YnByb2ovV2ViSFRNTFZpZXcubSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
NjcKZGlmZiAtcCAtdSAtcjEuNDY3IFdlYkhUTUxWaWV3Lm0KLS0tIFdlYkhUTUxWaWV3Lm0JNSBT
ZXAgMjAwNSAyMjoyNjowNSAtMDAwMAkxLjQ2NworKysgV2ViSFRNTFZpZXcubQkxMiBTZXAgMjAw
NSAxOToxMToxOSAtMDAwMApAQCAtMjU3NSwxMiArMjU3NSwzOCBAQCBzdGF0aWMgV2ViSFRNTFZp
ZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogICAgIC8vIFJlY29yZCB0aGUgbW91c2UgZG93biBwb3Np
dGlvbiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGRyYWcgaHlzdGVyZXNpcy4KICAgICBbc2VsZiBfc2V0
TW91c2VEb3duRXZlbnQ6ZXZlbnRdOwogCi0gICAgLy8gVEVYVElOUFVUOiBpZiB0aGVyZSBpcyBt
YXJrZWQgdGV4dCBhbmQgdGhlIGN1cnJlbnQgaW5wdXQKLSAgICAvLyBtYW5hZ2VyIHdhbnRzIHRv
IGhhbmRsZSBtb3VzZSBldmVudHMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvCi0gICAgLy8gcGFz
cyBpdCB0byB0aGVtLiBJZiBub3QsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGlucHV0Cisg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgaW5wdXQgbWFuYWdlciB3YW50cyB0byBoYW5kbGUgbW91c2Ug
ZXZlbnRzLCB3ZSBuZWVkIAorICAgIC8vIHRvIG1ha2Ugc3VyZSB0byBwYXNzIHRoZW0gdG8gaXQu
IElmIG5vdCwgdGhlbiB3ZSBuZWVkIHRvIG5vdGlmeSB0aGUgaW5wdXQKICAgICAvLyBtYW5hZ2Vy
IHdoZW4gdGhlIG1hcmtlZCB0ZXh0IGlzIGFiYW5kb25lZCAodXNlciBjbGlja3Mgb3V0c2lkZQog
ICAgIC8vIHRoZSBtYXJrZWQgYXJlYSkKIAorICAgIE5TSW5wdXRNYW5hZ2VyICpjdXJyZW50SW5w
dXRNYW5hZ2VyID0gW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1dE1hbmFnZXJdOworICAgIGlm
IChbY3VycmVudElucHV0TWFuYWdlciB3YW50c1RvSGFuZGxlTW91c2VFdmVudHNdKSB7CisgICAg
ICAgIGlmIChbY3VycmVudElucHV0TWFuYWdlciBoYW5kbGVNb3VzZUV2ZW50OmV2ZW50XSkKKyAg
ICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoW3NlbGYgaGFz
TWFya2VkVGV4dF0pIHsKKyAgICAgICAgICAgIE5TUG9pbnQgcG9pbnQgPSBbc2VsZiBjb252ZXJ0
UG9pbnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3OjBdOworCisgICAgICAgICAg
ICBET01SYW5nZSAqcG9pbnRET01SYW5nZSA9IFtbc2VsZiBfYnJpZGdlXSBlZGl0YWJsZURPTVJh
bmdlRm9yUG9pbnQ6cG9pbnRdOworICAgICAgICAgICAgRE9NUmFuZ2UgKm1hcmtlZFRleHRET01S
YW5nZSA9IFtbc2VsZiBfYnJpZGdlXSBtYXJrZWRUZXh0RE9NUmFuZ2VdOworCisgICAgICAgICAg
ICAvLyByYW5nZXMgaW50ZXJzZWN0IGlmIG1heChzdGFydHMpIDw9IG1pbihlbmRzKQorICAgICAg
ICAgICAgc2hvcnQgc3RhcnRzRnJvbSA9IFtwb2ludERPTVJhbmdlIGNvbXBhcmVCb3VuZGFyeVBv
aW50czpET01fU1RBUlRfVE9fU1RBUlQgOm1hcmtlZFRleHRET01SYW5nZV07CisgICAgICAgICAg
ICBzaG9ydCBlbmRzV2l0aCA9IFtwb2ludERPTVJhbmdlIGNvbXBhcmVCb3VuZGFyeVBvaW50czpE
T01fRU5EX1RPX0VORCA6bWFya2VkVGV4dERPTVJhbmdlXTsKKworICAgICAgICAgICAgc2hvcnQg
cmVzdWx0ID0gWygoc3RhcnRzRnJvbSA+PSAwKSA/IHBvaW50RE9NUmFuZ2UgOiBtYXJrZWRUZXh0
RE9NUmFuZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZUJvdW5kYXJ5UG9p
bnRzOiBET01fU1RBUlRfVE9fRU5ECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoKGVu
ZHNXaXRoID49IDApID8gbWFya2VkVGV4dERPTVJhbmdlIDogcG9pbnRET01SYW5nZSldOworICAg
ICAgICAgICAgCisgICAgICAgICAgICAvLyBjbGljayB3YXMgb3V0c2lkZSB0aGUgbWFya2VkIGFy
ZWEgaWYgcmFuZ2VzIGRvIG5vdCBpbnRlcnNlY3Qgb3IgRE9NIHJhbmdlIGZvciBwb2ludCBzdGFy
dHMgd2hlcmUgdGhlIG1hcmtlZCB0ZXh0IGVuZHMKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPiAw
IHx8IFtwb2ludERPTVJhbmdlIGNvbXBhcmVCb3VuZGFyeVBvaW50czpET01fU1RBUlRfVE9fRU5E
IDptYXJrZWRUZXh0RE9NUmFuZ2VdID09IDApIHsKKyAgICAgICAgICAgICAgICBbY3VycmVudElu
cHV0TWFuYWdlciBtYXJrZWRUZXh0QWJhbmRvbmVkOnNlbGZdOworICAgICAgICAgICAgICAgIFtz
ZWxmIHVubWFya1RleHRdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAg
W19wcml2YXRlLT5jb21wQ29udHJvbGxlciBlbmRSZXZlcnRpbmdDaGFuZ2U6Tk8gbW92ZUxlZnQ6
Tk9dOwogCiAgICAgLy8gSWYgdGhlIHdlYiBwYWdlIGhhbmRsZXMgdGhlIGNvbnRleHQgbWVudSBl
dmVudCBhbmQgbWVudUZvckV2ZW50OiByZXR1cm5zIG5pbCwgd2UnbGwgZ2V0IGNvbnRyb2wgY2xp
Y2sgZXZlbnRzIGhlcmUuCkBAIC0yNTk2LDYgKzI2MjIsNyBAQCBzdGF0aWMgV2ViSFRNTFZpZXcg
Kmxhc3RIaXRWaWV3ID0gbmlsOwogICAgICAgICBbW3NlbGYgX2JyaWRnZV0gbW91c2VEb3duOmV2
ZW50XTsKICAgICB9CiAKK2RvbmU6CiAgICAgW19wcml2YXRlLT5maXJzdFJlc3BvbmRlckF0TW91
c2VEb3duVGltZSByZWxlYXNlXTsKICAgICBfcHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJBdE1vdXNl
RG93blRpbWUgPSBuaWw7CiAKQEAgLTI2MjcsOSArMjY1NCwxMiBAQCBzdGF0aWMgV2ViSFRNTFZp
ZXcgKmxhc3RIaXRWaWV3ID0gbmlsOwogewogICAgIFtzZWxmIHJldGFpbl07CiAgICAgCi0gICAg
Ly8gVEVYVElOUFVUOiBpZiB0aGVyZSBpcyBtYXJrZWQgdGV4dCBhbmQgdGhlIGN1cnJlbnQgaW5w
dXQKLSAgICAvLyBtYW5hZ2VyIHdhbnRzIHRvIGhhbmRsZSBtb3VzZSBldmVudHMsIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRvCi0gICAgLy8gcGFzcyBpdCB0byB0aGVtLgorICAgIC8vIElmIHRoZSBj
dXJyZW50IGlucHV0IG1hbmFnZXIgd2FudHMgdG8gaGFuZGxlIG1vdXNlIGV2ZW50cywgd2UgbmVl
ZCAKKyAgICAvLyB0byBtYWtlIHN1cmUgdG8gcGFzcyB0aGVtIHRvIGl0LgorICAgIE5TSW5wdXRN
YW5hZ2VyICpjdXJyZW50SW5wdXRNYW5hZ2VyID0gW05TSW5wdXRNYW5hZ2VyIGN1cnJlbnRJbnB1
dE1hbmFnZXJdOworICAgIGlmIChbY3VycmVudElucHV0TWFuYWdlciB3YW50c1RvSGFuZGxlTW91
c2VFdmVudHNdKQorICAgICAgICBpZiAoW2N1cnJlbnRJbnB1dE1hbmFnZXIgaGFuZGxlTW91c2VF
dmVudDpldmVudF0pCisgICAgICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIV9wcml2YXRlLT5p
Z25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cykgewogICAgICAgICBbW3NlbGYgX2JyaWRnZV0gbW91
c2VEcmFnZ2VkOmV2ZW50XTsKQEAgLTI4NTMsMTAgKzI4ODMsMTMgQEAgc3RhdGljIFdlYkhUTUxW
aWV3ICpsYXN0SGl0VmlldyA9IG5pbDsKIAogLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZl
bnQKIHsKLSAgICAvLyBURVhUSU5QVVQ6IGlmIHRoZXJlIGlzIG1hcmtlZCB0ZXh0IGFuZCB0aGUg
Y3VycmVudCBpbnB1dAotICAgIC8vIG1hbmFnZXIgd2FudHMgdG8gaGFuZGxlIG1vdXNlIGV2ZW50
cywgd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8KLSAgICAvLyBwYXNzIGl0IHRvIHRoZW0uCi0KKyAg
ICAvLyBJZiB0aGUgY3VycmVudCBpbnB1dCBtYW5hZ2VyIHdhbnRzIHRvIGhhbmRsZSBtb3VzZSBl
dmVudHMsIHdlIG5lZWQgCisgICAgLy8gdG8gbWFrZSBzdXJlIHRvIHBhc3MgdGhlbSB0byBpdC4K
KyAgICBOU0lucHV0TWFuYWdlciAqY3VycmVudElucHV0TWFuYWdlciA9IFtOU0lucHV0TWFuYWdl
ciBjdXJyZW50SW5wdXRNYW5hZ2VyXTsKKyAgICBpZiAoW2N1cnJlbnRJbnB1dE1hbmFnZXIgd2Fu
dHNUb0hhbmRsZU1vdXNlRXZlbnRzXSkKKyAgICAgICAgaWYgKFtjdXJyZW50SW5wdXRNYW5hZ2Vy
IGhhbmRsZU1vdXNlRXZlbnQ6ZXZlbnRdKQorICAgICAgICAgICAgcmV0dXJuOworICAgIAogICAg
IFtzZWxmIHJldGFpbl07CiAgICAgCiAgICAgW3NlbGYgX3N0b3BBdXRvc2Nyb2xsVGltZXJdOwpA
QCAtNTE0MywyMCArNTE5OSwxNyBAQCBzdGF0aWMgTlNBcnJheSAqdmFsaWRBdHRyaWJ1dGVzID0g
bmlsOwogLSAodm9pZClfdXBkYXRlU2VsZWN0aW9uRm9ySW5wdXRNYW5hZ2VyCiB7CiAgICAgaWYg
KCFbc2VsZiBoYXNNYXJrZWRUZXh0XSB8fCBfcHJpdmF0ZS0+aWdub3JlTWFya2VkVGV4dFNlbGVj
dGlvbkNoYW5nZSkKLQlyZXR1cm47CisgICAgICAgIHJldHVybjsKIAogICAgIGlmIChbc2VsZiBf
c2VsZWN0aW9uSXNJbnNpZGVNYXJrZWRUZXh0XSkgewotCURPTVJhbmdlICpzZWxlY3Rpb24gPSBb
c2VsZiBfc2VsZWN0ZWRSYW5nZV07Ci0JRE9NUmFuZ2UgKm1hcmtlZFRleHRET01SYW5nZSA9IFtb
c2VsZiBfYnJpZGdlXSBtYXJrZWRUZXh0RE9NUmFuZ2VdOworICAgICAgICBET01SYW5nZSAqc2Vs
ZWN0aW9uID0gW3NlbGYgX3NlbGVjdGVkUmFuZ2VdOworICAgICAgICBET01SYW5nZSAqbWFya2Vk
VGV4dERPTVJhbmdlID0gW1tzZWxmIF9icmlkZ2VdIG1hcmtlZFRleHRET01SYW5nZV07CiAKLQl1
bnNpZ25lZCBtYXJrZWRTZWxlY3Rpb25TdGFydCA9IFtzZWxlY3Rpb24gc3RhcnRPZmZzZXRdIC0g
W21hcmtlZFRleHRET01SYW5nZSBzdGFydE9mZnNldF07Ci0JdW5zaWduZWQgbWFya2VkU2VsZWN0
aW9uTGVuZ3RoID0gW3NlbGVjdGlvbiBlbmRPZmZzZXRdIC0gW3NlbGVjdGlvbiBzdGFydE9mZnNl
dF07Ci0JTlNSYW5nZSBuZXdTZWxlY3Rpb25SYW5nZSA9IE5TTWFrZVJhbmdlKG1hcmtlZFNlbGVj
dGlvblN0YXJ0LCBtYXJrZWRTZWxlY3Rpb25MZW5ndGgpOwotCQotCVtbTlNJbnB1dE1hbmFnZXIg
Y3VycmVudElucHV0TWFuYWdlcl0gbWFya2VkVGV4dFNlbGVjdGlvbkNoYW5nZWQ6bmV3U2VsZWN0
aW9uUmFuZ2UgY2xpZW50OnNlbGZdOwotICAgIH0gZWxzZSB7Ci0JW1tOU0lucHV0TWFuYWdlciBj
dXJyZW50SW5wdXRNYW5hZ2VyXSBtYXJrZWRUZXh0QWJhbmRvbmVkOnNlbGZdOwotCVtzZWxmIHVu
bWFya1RleHRdOworICAgICAgICB1bnNpZ25lZCBtYXJrZWRTZWxlY3Rpb25TdGFydCA9IFtzZWxl
Y3Rpb24gc3RhcnRPZmZzZXRdIC0gW21hcmtlZFRleHRET01SYW5nZSBzdGFydE9mZnNldF07Cisg
ICAgICAgIHVuc2lnbmVkIG1hcmtlZFNlbGVjdGlvbkxlbmd0aCA9IFtzZWxlY3Rpb24gZW5kT2Zm
c2V0XSAtIFtzZWxlY3Rpb24gc3RhcnRPZmZzZXRdOworICAgICAgICBOU1JhbmdlIG5ld1NlbGVj
dGlvblJhbmdlID0gTlNNYWtlUmFuZ2UobWFya2VkU2VsZWN0aW9uU3RhcnQsIG1hcmtlZFNlbGVj
dGlvbkxlbmd0aCk7CisKKyAgICAgICAgW1tOU0lucHV0TWFuYWdlciBjdXJyZW50SW5wdXRNYW5h
Z2VyXSBtYXJrZWRUZXh0U2VsZWN0aW9uQ2hhbmdlZDpuZXdTZWxlY3Rpb25SYW5nZSBjbGllbnQ6
c2VsZl07CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="570"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>