<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:PMingLiU;
        panose-1:2 1 6 1 0 1 1 1 1 1;}
@font-face
        {font-family:Tunga;
        panose-1:0 0 4 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@PMingLiU";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Hi Anton, Thank you for your review comments. Please see below for my replies.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Thanks and regards,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Shashi<o:p></o:p></span></p><p class=MsoNormal><a name="_MailEndCompose"><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p> </o:p></span></a></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'> Anton Litvinov <br><b>Sent:</b> Tuesday, September 26, 2017 6:55 AM<br><b>To:</b> Shashidhara Veerabhadraiah <shashidhara.veerabhadraiah@oracle.com>; Alexey Ivanov <alexey.ivanov@oracle.com>; Sergey Bylokhov <sergey.bylokhov@oracle.com><br><b>Cc:</b> awt-dev@openjdk.java.net<br><b>Subject:</b> Re: <AWT Dev> [10] JDK-8178361: JFileChooser does not allow to open folders with a double tap when using the touch screen interface<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>Hi Shashi,<br><br>I am also reviewing your fix since last week. I built "jdk10/client" with your fix and was able to see, how the 1st and the 2nd versions of your fix work. I have the following remarks and questions to you:<br><br>1. The fix causes a rather significant regression, which is a loss of the drag functionality using the touch screen. To reproduce it you can use "SwingSet2" demo application, where try to move any of the internal frames on the first tab of the demo application using the touch screen. Also you can try to select text in JTextField in that demo application using the touch screen. I think that this regression is serious and should be addressed in this fix.<span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] I found the problem that was causing this issue. It is to do with the drag capture/release implemented in the WmMouseDown() and WmMouseUp() functions. This does not handles the touch drag as such and we need to implement a new touch gesture to enable the same functionality.</span></i></b><br><br>2. Why is it necessary for your fix to handle "WM_POINTERENTER", "WM_POINTERLEAVE" messages?<span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] Currently we are mapping the touch input to mouse input and the mouse input follows a protocol of sending a mouse enter to and exit from a window event before processing further events. This same is implemented thro’ Pointer enter and pointer leave messages.</span></i></b><br><br>3. According to MSDN the used by you Win32 API function "GetPointerInfo" and "WM_POINTER*" messages are available on Windows 8 or later OS versions, what means that they are not available on older OS versions, for example on Windows 7, and what means that your fix will not resolve the bug for Windows 7.<br><br>Windows 7 is supported by JDK 9 (<a href="http://www.oracle.com/technetwork/java/javase/jdk9certconfig-3761018.html">http://www.oracle.com/technetwork/java/javase/jdk9certconfig-3761018.html</a>), and obviously JDK 10 also supports Windows 7, therefore the bug should be fixed also for Windows 7, if it is reproducible on that OS.<span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] Thanks for pointing this out. Windows 7 offers a different touch input method via the WM_GESTURE and here is the link for it: <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/dd940543(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/dd940543(v=vs.85).aspx</a>. I am exploring a way to implement the same in the coming update.<o:p></o:p></span></i></b></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>As one can see, there are a lot of major updates that needs to be done for this feature to be complete. It will take some more days to do this, hence please wait for some time till I produce a new update.</span></i></b><br><br>Thank you,<br>Anton<o:p></o:p></p><div><p class=MsoNormal>On 25/09/2017 07:29, Shashidhara Veerabhadraiah wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Hi Alexey, Thank you for pointing that out. I misread the info that EnableMouseInPointer() is a must call and would enable the WM_POINTER messages being sent to the component. But actually it is not required to be enabled and as you rightly pointed out that it would convert the WM_MOUSE to the WM_POINTER messages.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Below is the Webrev that does this change. Now since mouse in pointer is disabled, the mouse behavior should <i><u>not</u></i> have any effect at all by this software updates.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Webrev: <a href="http://cr.openjdk.java.net/%7Esveerabhadra/8178361/webrev.01/">http://cr.openjdk.java.net/~sveerabhadra/8178361/webrev.01/</a></span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>For additional replies, please see below.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Thanks and regards,</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Shashi</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'> </span><o:p></o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'> Alexey Ivanov <br><b>Sent:</b> Friday, September 22, 2017 5:19 PM<br><b>To:</b> Shashidhara Veerabhadraiah <a href="mailto:shashidhara.veerabhadraiah@oracle.com"><shashidhara.veerabhadraiah@oracle.com></a>; Sergey Bylokhov <a href="mailto:sergey.bylokhov@oracle.com"><sergey.bylokhov@oracle.com></a><br><b>Cc:</b> <a href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a><br><b>Subject:</b> Re: <AWT Dev> [10] JDK-8178361: JFileChooser does not allow to open folders with a double tap when using the touch screen interface</span><o:p></o:p></p></div></div><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'>Hi Shashi,<br><br>You use EnableMouseInPointer which converts classical WM_MOUSE events to WM_POINTER events. This could have substantial effect on AWT components behaviour. I am worried about High DPI support, drag-and-drop functionality etc.<o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] This is not required and hence removed.</span></i></b><br><br>Is there a simpler way to handle double-tap?<br>Windows converts taps to clicks, i.e. the app receives WM_LBUTTONDOWN and WM_LBUTTONUP.<br>Have you tried to find out why double-tap is not converted to double-click?<o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] Since the mouse in pointer is disabled and a windows icon behavior is different from a windows button behavior(Because the a touch on the icon does not translate to a left button down event whereas it does for a windows button(file name!!)), it is required to bring in the WM_POINTER message type into the component message handling routine.</span></i></b><br><br>Do right and middle mouse buttons continue to work as expected? Mouse wheel? Any additional mouse buttons?<o:p></o:p></p><p class=MsoNormal style='margin-bottom:12.0pt'><b><i><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>[Shashi] It should not have any effect after mouse in pointer is disabled.</span></i></b><br><br>The documentation for EnableMouseInPointer [1] says: “This function can be called only once in the context of a process lifetime.” You call it for every component created. It would have been enough to call it once during Toolkit initialization.<br><br><br>Regards,<br>Alexey<br><br>[1] <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/hh447467%28v=vs.85%29.aspx">https://msdn.microsoft.com/en-us/library/windows/desktop/hh447467(v=vs.85).aspx</a><o:p></o:p></p><div><p class=MsoNormal>On 19/09/2017 04:35, Shashidhara Veerabhadraiah wrote:<o:p></o:p></p></div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><pre>Hi Sergey, When I checked it was not working on the Java applications. None of the controls could take touch click events but it used to highlight because when we touch on the touch screen interface the system moves the cursor over to the touch point thereby enabling mouse focus events being sent.<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Thanks and regards,<o:p></o:p></pre><pre>Shashi<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>-----Original Message-----<o:p></o:p></pre><pre>From: Sergey Bylokhov <o:p></o:p></pre><pre>Sent: Tuesday, September 19, 2017 3:39 AM<o:p></o:p></pre><pre>To: <a href="mailto:shashidhara.veerabhadraiah@oracle.com">shashidhara.veerabhadraiah@oracle.com</a> >> Shashidhara Veerabhadraiah <a href="mailto:shashidhara.veerabhadraiah@oracle.com"><shashidhara.veerabhadraiah@oracle.com></a><o:p></o:p></pre><pre>Cc: <a href="mailto:awt-dev@openjdk.java.net">awt-dev@openjdk.java.net</a><o:p></o:p></pre><pre>Subject: Re: <AWT Dev> [10] JDK-8178361: JFileChooser does not allow to open folders with a double tap when using the touch screen interface<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Hi, Shashi.<o:p></o:p></pre><pre>Why the bug is JFileChooser specific?<o:p></o:p></pre><pre>Does it means that it works for other elements(buttons/lists/menu/etc)?<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>On 9/18/17 08:58, Shashidhara Veerabhadraiah wrote:<o:p></o:p></pre><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><pre>Hi All, Please review this software changes for the /_enhancement_/ <o:p></o:p></pre><pre>JDK-8178361.<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Issue: Request was filed to enable the touch event processing for Java <o:p></o:p></pre><pre>client applications.<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Fix: Windows platform offers 'pointer' implementation thro' which one <o:p></o:p></pre><pre>can tap for the touch inputs as well. A typical 'pointer' function may <o:p></o:p></pre><pre>contain touch, pen, touch pad or mouse inputs. This allows for a <o:p></o:p></pre><pre>uniform input processing though the event source may defer. This fix <o:p></o:p></pre><pre>enables the 'touch' events(via TOUCH pointer) to be passed to the <o:p></o:p></pre><pre>components using the other type of pointer 'mouse'. Essentially there <o:p></o:p></pre><pre>is a conversion put in place to convert a touch event input into a <o:p></o:p></pre><pre>left click mouse event. I think this is the right thing to do <o:p></o:p></pre><pre>considering desktop scenarios to which the typical Java applications <o:p></o:p></pre><pre>that gets exposed to. This is also the same behavior on my touch <o:p></o:p></pre><pre>enabled windows 10 laptop as well. Please let me know if a different behavior is expected. Below is the output:<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Now touch event works as a typical mouse left click as in general. But <o:p></o:p></pre><pre>there is an issue because the icon size of the Java UI is typically <o:p></o:p></pre><pre>small, touching that icon exactly is sometimes difficult. This is <o:p></o:p></pre><pre>handled by an Windows application by having larger icon size or icon <o:p></o:p></pre><pre>view as a standard. Hence I believe this is outside the scope this <o:p></o:p></pre><pre>software update. Any changes to it would be done later as a new bug or <o:p></o:p></pre><pre>an enhancement.<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Bug ID: <a href="https://bugs.openjdk.java.net/browse/JDK-8178361">https://bugs.openjdk.java.net/browse/JDK-8178361</a><o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Webrev: <a href="http://cr.openjdk.java.net/%7Esveerabhadra/8178361/webrev.00/">http://cr.openjdk.java.net/~sveerabhadra/8178361/webrev.00/</a><o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Thanks and regards,<o:p></o:p></pre><pre> <o:p></o:p></pre><pre>Shashi<o:p></o:p></pre><pre> <o:p></o:p></pre></blockquote><pre> <o:p></o:p></pre><pre>--<o:p></o:p></pre><pre>Best regards, Sergey.<o:p></o:p></pre></blockquote><p class=MsoNormal> <o:p></o:p></p></blockquote><p class=MsoNormal><o:p> </o:p></p></div></body></html>