<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello Shashi,<br>
    <br>
    Thank you for attention to my review request. Win32 API provides
    different API sets dedicated to handling various types of user's
    touch input in different degree of deepness. For example:<br>
    1.  Windows Touch Input (WM_TOUCH messages)<br>
    2.  Windows Touch Gestures (WM_GESTURE messages)<br>
        Official information about 2 API sets ab:
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd562100(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd562100(v=vs.85).aspx</a><br>
    3.  Touch Hit Testing -
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/hh437255(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/hh437255(v=vs.85).aspx</a><br>
    <br>
    WM_POINTER may be yet another approach.<br>
    <br>
    I chose to exploit API related to "WM_TOUCH" message, because this
    API, as I understand, provides more opportunities to control the
    touch input then other 2 APIs specified above, and it allows to
    handle multiple touch points, what may become necessary in future.<br>
    <br>
    RESPONSE TO YOUR REMARK:<br>
    I cannot agree that "WM_TOUCH" is officially deprecated. In the
    official Win32 API specification there is no information that
    functions from this API are deprecated or obsolete. For example:<br>
    1.  RegisterTouchWindow -
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd317326(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd317326(v=vs.85).aspx</a><br>
    2.  GetTouchInputInfo -
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd371582(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd371582(v=vs.85).aspx</a><br>
    3.  TOUCHINPUT -
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd317334(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd317334(v=vs.85).aspx</a><br>
    4.  WM_TOUCH -
<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd317341(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd317341(v=vs.85).aspx</a><br>
        (There is some community comment, but community comments are
    written by anybody, deprecation is not announced in community
    comments. For example, the really deprecated function is
    "GetVersion" -
(<a class="moz-txt-link-freetext" href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx))">https://msdn.microsoft.com/en-us/library/windows/desktop/ms724439(v=vs.85).aspx))</a>.<br>
    <br>
    The web page, whose reference you provided is just a forum, is not
    Win32 API specification or official announcement from Microsoft. So
    I would not rely on this information.<br>
    <br>
    Additionally approach based on "WM_TOUCH" showed itself in my test
    environment reliably, WM_TOUCH are generated stably in MS Windows 10
    OS, also I was able to successfully port the fix to JDK 8 and verify
    that it works. Currently I am working on addressing remarks from
    Sergey and do not plan to refuse from currently developed real
    basement of the whole fix, which uses WM_TOUCH.<br>
    <br>
    Thank you,<br>
    Anton<br>
    <br>
    <div class="moz-cite-prefix">On 14/09/2017 10:55, Shashidhara
      Veerabhadraiah wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:2a1527c5-938c-418c-83aa-8d70afe16999@default">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="MS Exchange Server version
        rmj.rmm.rup.rpr">
      <title>RE: <AWT Dev> <Swing Dev> [10] Review request
        for 8166772: Touch keyboard is not shown for text components on
        a screen touch</title>
      <!-- Converted from text/rtf format -->
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Hi Anton, I
            have</font> <font face="Calibri">a question to ask for. I
            was working on another bug and found th</font><font
            face="Calibri">at the</font> <font face="Calibri">WM_TOUCH</font></span><span
          lang="en-us"> <font face="Calibri">has been deprecated and
            instead we should be using the WM_POINTER? Here is some info
            on that:</font></span><span lang="en-us"> </span><a
href="https://stackoverflow.com/questions/23790602/wm-touch-vs-wm-pointer"
          moz-do-not-send="true"><span lang="en-us"><u><font
                face="Calibri" color="#0563C1">https://stackoverflow.com/questions/23790602/wm-touch-vs-wm-pointer</font></u></span><span
            lang="en-us"></span></a><span lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Typically,
            the WM_POINTER types can handle following type of</font></span><span
          lang="en-us"><i><u> <font face="Calibri">pointers</font></u></i></span><span
          lang="en-us"><font face="Calibri">:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">typedef enum
            tagPOINTER_INPUT_TYPE { </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri"> 
            PT_POINTER   = 0x00000001,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri"> 
            PT_TOUCH     = 0x00000002,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri"> 
            PT_PEN       = 0x00000003,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri"> 
            PT_MOUSE     = 0x00000004,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri"> 
            PT_TOUCHPAD  = 0x00000005</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">}</font><font
            face="Calibri"> POINTER_INPUT_TYPE;</font></span><span
          lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Hope this is
            useful for</font></span><span lang="en-us"> <font
            face="Calibri">your</font></span><span lang="en-us"><font
            face="Calibri"> fix.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Thanks and
            regards,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Shashi</font></span><span
          lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"></span><a name=""
          moz-do-not-send="true"><span lang="en-us"></span></a></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">-----Original
            Message-----<br>
          </font><font face="Calibri">From:</font><font face="Calibri">
            Sergey Bylokhov<br>
          </font><font face="Calibri">Sent:</font><font face="Calibri">
            Tuesday, September 5, 2017 10:45 PM<br>
          </font><font face="Calibri">To:</font><font face="Calibri">
            Anton Litvinov <a class="moz-txt-link-rfc2396E" href="mailto:anton.litvinov@oracle.com"><anton.litvinov@oracle.com></a></font><font
            face="Calibri">; <a class="moz-txt-link-abbreviated" href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a>;
            <a class="moz-txt-link-abbreviated" href="mailto:swing-dev@openjdk.java.net">swing-dev@openjdk.java.net</a><br>
          </font><font face="Calibri">Subject:</font><font
            face="Calibri"> Re: <AWT Dev> <Swing Dev> [10]
            Review request for 8166772: Touch keyboard is not shown for
            text components on a screen touch</font></span><span
          lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Hi, Anton.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">The fix looks
            good.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">  - But can
            you please recheck that is is not necessary to use
            additional synchronization in showOrHideTouchKeyboard() if a
            few EDT will be used.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">  - I suggest
            to invert the awt.touchKeyboardAutoShowIsEnabled and use
            true as default val</font><font face="Calibri">ue, we will
            have more coverage and feedback in this case. This property
            will be used as a workaround if some bugs will be found.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">On 8/30/17
            11:51, Anton Litvinov wrote:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> Hello
            dear reviewers,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> Could
            anybody please look at this review request?</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> Th</font><font
            face="Calibri">ank you,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> Anton</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> On
            17/08/2017 13:20, Anton Litvinov wrote:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Hello,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Could you please review the following fix for the bug.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> Bug:</font></span><span
          lang="en-us"> </span><a
          href="https://bugs.openjdk.java.net/browse/JDK-8166772"
          moz-do-not-send="true"><span lang="en-us"><font face="Calibri">https://bugs.openjdk.java.net/browse/JDK-8166772</font></span><span
            lang="en-us"></span></a><span lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Webrev:</font></span><span lang="en-us"> </span><a
          href="http://cr.openjdk.java.net/%7Ealitvinov/8166772/jdk10/webrev.00"
          moz-do-not-send="true"><span lang="en-us"><font face="Calibri">http://cr.openjdk.java.net/~alitvinov/8166772/jdk</font><font
              face="Calibri">10/webrev.00</font></span><span
            lang="en-us"></span></a><span lang="en-us"></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> The
            bug is the fact that, when a user touches any Swing or AWT
            text </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            component, for example "JTextField", "JTextArea",
            "TextField", </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "TextArea", by means of a touch screen on a host with MS
            Windows</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            10/8.1/8 OS, the system touch keyboard is not shown
            automatically. </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Please find a detailed description of the bug, screenshots
            depicting </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> the
            touch keyboard and a compilable test case with Swing/AWT
            text </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            components in JBS bug record. Also a su</font><font
            face="Calibri">mmary of the done research of </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> the
            issue with a description of identified approaches for its </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            resolution are reported in my last comment in the bug
            record.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> THE
            FIX:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> On a
            very abstract level the fix functioning can be presented by
            the </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> nex</font><font
            face="Calibri">t 3 stages:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Stage 1.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> The
            fix adds support of "WM_TOUCH" system window messages to AWT
          </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            native peer windows through C++ class "AwtComponent". It
            "processes"</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "WM_TOUCH" message and marks "java.awt.event.MouseEvent",
            which is </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            created as a r</font><font face="Calibri">esult of handling
            of the further coming </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "WM_LBUTTONDOWN", "WM_LBUTTONUP" messages sent by the system
            in </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            substitution for this "WM_TOUCH" message, by the new private
            field </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> flag
            "MouseEvent.causedByTouchEvent".</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Stage 2.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> Then
            on Java leve</font><font face="Calibri">l the fix handles
            "MouseEvent", "FocusEvent" </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            received only by the instances of "java.awt.TextComponent",
          </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "javax.swing.text.TextComponent" in </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "WToolkit.showOrHideTouchKeyboard()" called from </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            "Component.dispatchEventImpl()" and shows or hides</font><font
            face="Calibri"> the touch keyboard </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> on
            "MouseEvent.MOUSE_RELEASED" and "FocusEvent.FOCUS_LOST"
            events by </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            calling corresponding native methods of "WToolkit" class.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Stage 3.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Showing of the touch keyboard is implemented in C++ class
            "AwtToolkit" </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> and
            is done by launching the system application "TabTip.exe"
            which </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            implements the system touch keyboard. This approach is
            described in </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> the
            bug record.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            FEATURES OF THE FIX:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> 1.
            By default all native and Java parts of the fix do not
            functi</font><font face="Calibri">on at </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> all
            - the fix is disabled. To enable the fix the application
            should </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> be
            run with "-Dawt.touchKeyboardAutoShowIsEnabled=true" option.
          </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Handling of this new property is implemented in
            "sun.awt.SunToolkit" class.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> 2.
            Native parts of the f</font><font face="Calibri">ix
            functions only on MS Window 8 or later.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> 3.
            The fix implements automatic showing of the touch keyboard
            for the </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            following 2 use cases:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> ???
            a.? The user touches the text components using the touch
            screen.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> ???
            b.? The user does mouse clicks</font> <font face="Calibri">on
            the text components, while no </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> any
            keyboard is attached to the host.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> FIX
            LOGICAL STRUCTURE BY SOURCE CODE:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> 1.
            Core of the fix:</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> ???
            Native code:? awt_Toolkit.[h/cpp], awt_Component.[h/cpp], </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            awt_MouseEvent.[h/cpp], awt.h</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> ???
            Java:? S</font><font face="Calibri">unToolkit.java,
            WToolkit.java, Component.java, </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            MouseEvent.java, AWTAccessor.java</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> 2.
            Changes in all remaining Java files are connected with
            retaining </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> of
            the flag value "MouseEvent.causedByTouchEvent" during
            creation of </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> the
            new instances of "MouseEvent" class based on the original
            "MouseEvent"</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            instances.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> Work
            of the fix was verified both in the environment with the
            real </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            touch screen device and in the environment with the emulated
            touch </font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            screen.</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>></font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>> Th</font><font
            face="Calibri">ank you,</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">>>
            Anton</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">> </font></span></p>
      <br>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">--</font></span></p>
      <p dir="LTR"><span lang="en-us"><font face="Calibri">Best regards,
            Sergey.</font></span></p>
      <p dir="LTR"><span lang="en-us"></span></p>
    </blockquote>
    <br>
  </body>
</html>