Looks fine.

On 05/03/2018 21:32, Shashidhara Veerabhadraiah wrote:
Hi Sergey, I tested for the problem bug 6404832 and found that issue is not 
happening anymore. Anyway this old bug was specific to Windows XP and there was 
no problem with windows 2000, Windows 2003. But tested and found that there is 
no issue as said in the bug.

I have modified the test per your comments and here is the new Webrev:
http://cr.openjdk.java.net/~sveerabhadra/8195738/webrev.02/

Thanks and regards,
Shashi

-----Original Message-----
From: Sergey Bylokhov
Sent: Tuesday, March 6, 2018 12:04 AM
To: Shashidhara Veerabhadraiah <shashidhara.veerabhadra...@oracle.com>; Semyon 
Sadetsky <semyon.sadet...@oracle.com>
Cc: awt-dev@openjdk.java.net
Subject: Re: <AWT Dev> [11] JDK-8195738: scroll poistion in ScrollPane is reset 
after calling validate()

Hi, Shashi.
Can you confirm that the bug6404832 is not reproducible after this change(since 
part of it fix is dropped)?

Please use some meaningful name for the test + small typo in the
test(poistion) please fix both before the push.

On 27/02/2018 00:45, Shashidhara Veerabhadraiah wrote:
Hi Semyon, Thanks for your help. I did some debugging from that
perspective and could find the problem and the solution. Here is the
new webrev, please review it:

http://cr.openjdk.java.net/~sveerabhadra/8195738/webrev.01/

The problem was that in the case of SCROLLBARS_NEVER, scroll bar info
was set using setScrollInfo() with SIF_RANGE with ranges being (0, 0).
This forced the windows to pick a default value and hence reset it to
that value every time. Now the logic is modified in a very similar
fashion as the other scroll bar display modes but without displaying
it using the new win api ShowScrollBar(). The scroll bar info is
supplied with a proper range per the corresponding base component but
without the scroll bar pane size(as we don’t display it). This should
suffice a good range for the scroll bars to operate and correct itself
if there is any out of range value is supplied.

Thanks and regards,
Shashi

*From:*Semyon Sadetsky
*Sent:* Tuesday, February 27, 2018 1:22 AM
*To:* shashidhara veerabhadraiah
<shashidhara.veerabhadra...@oracle.com>
*Cc:* awt-dev@openjdk.java.net
*Subject:* Re: <AWT Dev> [11] JDK-8195738: scroll poistion in
ScrollPane is reset after calling validate()

The bug was failed against Windows platform. So, I'd try to find the
root cause why when the scroll is notified with the scrolled component
size the scroll position is set to the wrong value.

--Semyon

On 02/26/2018 09:51 AM, shashidhara veerabhadraiah wrote:

     I think I agree Semyon. Thanks for your detailed explanation.

     So how do we approach on this? I see a different behaviour on other
     platforms. Shouldn’t we have a common behaviour across platforms? I
     agree with your analysis and hence should we change the behaviour on
     other platforms so that all of them will have the same behaviour?

     Thanks and regards,

     Shashi

         On 26-Feb-2018, at 10:17 PM, Semyon Sadetsky
         <semyon.sadet...@oracle.com <mailto:semyon.sadet...@oracle.com>>
         wrote:

         On 02/24/2018 05:27 AM, Shashidhara Veerabhadraiah wrote:

             Hi Semyon, Thanks for your review and these questions help
             us to reach the right requirements.

             Without this change, there is different behavior on windows
             compared to Mac/Linux platforms. Hence this change is
             required to make the behavior same across the platforms.
             Since the scroll pane control is not displayed for the
             SCROLLBARS_NEVER case and if not in the setScrollPosition()
             then how can the user can move to a different position?
             Since we used to update/recalculate the scroll pane geometry
             caused changes to move to a different position other than
             the setScrollPosition()!! This causes SCROLLBARS_NEVER mode
             as unusable as the user is unable to control the scrolling
             movement because neither he can set one setScrollPosition()
             nor the control is displayed to explicitly set the movement.
             Hope this answers your question.

         You need to think once again about two facts I brought in my
         previous message.

         1. User still may scroll using mouse wheel even when scrollbars
         are not visible.

         2. Visibility of scrollbars doesn't affect the requirement to
         notify the scroll about the scrolled component size changes. If
         the scrolled component was 500x500 in size and its position in
         the 200x200 viewport was (300,300) after the size of the
         component is changed to 300x300 it may not be shown at the same
         position because the previously visible component area doesn't
         exist anymore and the scroll should be moved to (100,100). This
         should work in the same way regardless the selected scrlollbar
         visibility policy.

         --Semyon


             Thanks and regards,
             Shashi

             *From:*Semyon Sadetsky
             *Sent:*Saturday, February 24, 2018 2:12 AM
             *To:*Shashidhara
             Veerabhadraiah<shashidhara.veerabhadra...@oracle.com>
             
<mailto:shashidhara.veerabhadra...@oracle.com>;awt-dev@openjdk.java.net
             <mailto:awt-dev@openjdk.java.net>
             *Subject:*Re: <AWT Dev> [11] JDK-8195738: scroll poistion in
             ScrollPane is reset after calling validate()

             On 2/23/18 10:57 AM, Shashidhara Veerabhadraiah wrote:

                 Hi Semyon, Whenever the container is resized we used to
                 update the scroll pane sizes/geometry regardless of the
                 scroll bar display policies. This resizing make sense
                 for the non SCROLLBARS_NEVER cases as the scroll pane is
                 displayed or needed an update. This additional update
                 posed issues for the SCROLLBARS_NEVER case where we are
                 not supposed to display the scroll pane per the java
                 doc, then why update?

                 Scroll pane geometry gets updated in 2 ways, one thro’
                 setScrollPosition() and childResized(). So I derived the
                 conclusion based on the javadoc information that since
                 we don’t display the scroll pane there is no need to
                 update the scroll pane geometry based on the
                 childResized() as it was altering the position already
                 set by the setScrollPosition(). This behavior is same as
                 the other non SCROLLBARS_NEVER mode and setting the
                 scroll bar display to SCROLLBARS_NEVER didn’t made any
                 difference.

             The only difference of SCROLLBARS_NEVER from others I got
             from javadoc is that the scroll bar controls are hidden. So
             the scrolling itself happens in the same way as in the case
             of visible scroll bars but it can be only controlled by
             mouse wheel or programmatically. In my understanding this
             means that the notification about the scrolled component
             size changes should happen in the same way as for all other
             cases. I see no reason for the differentiation that your fix
             introduces. What will happen if to remove this notification
             for visible scroll bars modes?

             --Semyon


                 Thanks and regards,
                 Shashi

                 *From:*Semyon Sadetsky
                 *Sent:*Friday, February 23, 2018 10:17 PM
                 *To:*Shashidhara
                 Veerabhadraiah<shashidhara.veerabhadra...@oracle.com>
                 
<mailto:shashidhara.veerabhadra...@oracle.com>;awt-dev@openjdk.java.net
                 <mailto:awt-dev@openjdk.java.net>
                 *Subject:*Re: <AWT Dev> [11] JDK-8195738: scroll
                 poistion in ScrollPane is reset after calling
validate()

                 On 2/22/18 8:23 PM, Shashidhara Veerabhadraiah wrote:

                     Hi Semyon, Thanks for your review comments.

                     Here are those different scroll bar pane modes and
                     their description:

                     *Modifier and Type*

                        

                     *Field*

                        

                     *Description*

                     |static int|

                        

                     *SCROLLBARS_ALWAYS
<https://docs.oracle.com/javase/9/docs/api/java/awt/ScrollPane.html#SC
ROLLBARS_ALWAYS>*

                        

                     Specifies that horizontal/vertical scrollbars should
                     always be shown regardless of the respective sizes
                     of the scrollpane and child.

                     |static int|

                        

                     *SCROLLBARS_AS_NEEDED
<https://docs.oracle.com/javase/9/docs/api/java/awt/ScrollPane.html#SC
ROLLBARS_AS_NEEDED>*

                        

                     Specifies that horizontal/vertical scrollbar should
                     be shown only when the size of the child exceeds the
                     size of the scrollpane in the horizontal/vertical
                     dimension.

                     |static int|

                        

                     *SCROLLBARS_NEVER
<https://docs.oracle.com/javase/9/docs/api/java/awt/ScrollPane.html#SC
ROLLBARS_NEVER>*

                        

                     Specifies that horizontal/vertical scrollbars should
                     never be shown regardless of the respective sizes of
                     the scrollpane and child.

                 This javadoc, you've copy-pasted here, doesn't explain
                 why in your fix the notification about changed child
                 size is disabled for SCROLLBARS_NEVER case.

                     Thanks and regards,
                     Shashi

                     *From:*Semyon Sadetsky
                     *Sent:*Thursday, February 22, 2018 11:58 PM
                     *To:*Shashidhara
                     Veerabhadraiah<shashidhara.veerabhadra...@oracle.com> 
<mailto:shashidhara.veerabhadra...@oracle.com>;awt-dev@openjdk.java.net
                     <mailto:awt-dev@openjdk.java.net>
                     *Subject:*Re: <AWT Dev> [11] JDK-8195738: scroll
                     poistion in ScrollPane is reset after calling
validate()

                     Hi Shashi,

                     Can you clarify what is the principal difference
                     between SCROLLBARS_NEVER and other scroll policies
                     that requires to avoid updating the scroll geometry
                     according to the inner component size?

                     --Semyon

                     On 02/19/2018 11:08 PM, Shashidhara Veerabhadraiah
                     wrote:

                         Hi All, Please review a code fix for the below bug.

Bug:https://bugs.openjdk.java.net/browse/JDK-8195738

                         
Webrev:http://cr.openjdk.java.net/~sveerabhadra/8195738/webrev.00/
<http://cr.openjdk.java.net/%7Esveerabhadra/8195738/webrev.00/>

                         Problematic platform: Windows only.

                         Summary: This bug occurs only on windows
                         platform and whereas the behavior is different
                         on Mac/Linux platforms. Now after this fix there
                         is common behavior across the platforms.

                         The main problem was with resetting the state of
                         the scroll bars even though the scroll bar panes
                         are spawned with SCROLLBARS_NEVER as the scroll
                         bar display policy. This resetting should not
                         occur as the scroll bar display policy makes
the

                         scroll bar panes invisible. Hence except the
                         setScrollPosition() calls, we don’t need to
                         resize/update the scroll bars state upon calling
                         the scroll bars validation if SCROLLBARS_NEVER
                         policy is used as the scroll bars are not displayed.

                         Thanks and regards,
                         Shashi



--
Best regards, Sergey.



--
Best regards, Sergey.

Reply via email to