<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello,<br>
    <br>
    Please, review the fix:<br>
    <br>
    jira: <a class="moz-txt-link-freetext" href="https://jbs.oracle.com/bugs/browse/JDK-8015454">https://jbs.oracle.com/bugs/browse/JDK-8015454</a><br>
    webrev: <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~ant/JDK-8015454/webrev.0">http://cr.openjdk.java.net/~ant/JDK-8015454/webrev.0</a><br>
    <br>
    It's a regression of 6981400 "Tabbing between textfield do not work
    properly when ALT+TAB".<br>
    <br>
    That fix resolved the following case: in a frame with several
    components, one pressed TAB multiple times.<br>
    This should have transferred focus to the N'th component. But, to
    make things complicated, one switched<br>
    back and forth active windows with ALT-TAB in the middle. Namely,
    when the first TAB gets dispatched<br>
    (this is possible when if the app performs lengthy tasks on EDT). As
    a result, the appropriate focus window<br>
    events were dispatched before the key events and the key events were
    dispatched improperly.<br>
    <br>
    In order to solve it, there were created a timed window event. When
    a timed focus window event is dispatched<br>
    by DKFM, it inspects the type-ahead queue and if it contains a key
    event with a time stamp less than the window<br>
    event's time, the window event gets reposted to the end of the
    queue. For more details, please refer to the CR.<br>
    <br>
    One aspect wasn't taken into account. A key event, waiting in the
    type-ahead queue, may depend on the<br>
    delivery of the focus window event which gets reposted. So, quite
    the contrary, it should be dispatched after<br>
    the focus window event is delivered to its target. This may happen
    when a key event is generated after a type-ahead<br>
    marker is added (as a result of, say, a window switch), but before
    the targeted component (which may reside in another<br>
    window) gets focused. In such situation, the window focus events may
    get reposted infinitely waiting for the key<br>
    events, because the latter will wait for the delivery of the focus
    window event. So, a kind of a deadlock...<br>
    <br>
    How to solve it? Somehow we could analyze that the waiting key
    events depend on the delivery of the focus<br>
    window event. However, originally it wasn't assumed that key events
    are left in the queue more than a single repost<br>
    cycle. If they do, it just means the dependency. So, I suggest
    simply bound the number of reposts by one.<br>
    <br>
    Additionally, I've fixed the test. The key event time stamp should
    not be equal to the type-ahead marker time stamp.<br>
    Sometimes they appear to match on Windows. I've put a 1ms delay.<br>
    <br>
    The fix also fixes the following CRs:
    <meta charset="utf-8">
    <a href="https://jbs.oracle.com/bugs/browse/JDK-8015584"
      style="color: rgb(50, 108, 166); text-decoration: none;
      font-family: Arial, FreeSans, Helvetica, sans-serif; font-size:
      13px; font-style: normal; font-variant: normal; font-weight:
      normal; letter-spacing: normal; line-height: 16px; orphans: 2;
      text-align: left; text-indent: 0px; text-transform: none;
      white-space: nowrap; widows: 2; word-spacing: 0px;
      -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
      background-color: rgb(240, 240, 240); ">JDK-8015584</a>,
    <meta charset="utf-8">
    <a href="https://jbs.oracle.com/bugs/browse/JDK-8015450"
      style="color: rgb(50, 108, 166); text-decoration: none;
      font-family: Arial, FreeSans, Helvetica, sans-serif; font-size:
      13px; font-style: normal; font-variant: normal; font-weight:
      normal; letter-spacing: normal; line-height: 16px; orphans: 2;
      text-align: left; text-indent: 0px; text-transform: none;
      white-space: nowrap; widows: 2; word-spacing: 0px;
      -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
      background-color: rgb(240, 240, 240); ">JDK-8015450</a>,
    <meta charset="utf-8">
    <a href="https://jbs.oracle.com/bugs/browse/JDK-8015446"
      style="color: rgb(50, 108, 166); text-decoration: none;
      font-family: Arial, FreeSans, Helvetica, sans-serif; font-size:
      13px; font-style: normal; font-variant: normal; font-weight:
      normal; letter-spacing: normal; line-height: 16px; orphans: 2;
      text-align: left; text-indent: 0px; text-transform: none;
      white-space: nowrap; widows: 2; word-spacing: 0px;
      -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
      background-color: rgb(240, 240, 240); ">JDK-8015446</a>.<br>
    <br>
    Thanks,<br>
    Anton.<br>
  </body>
</html>