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>; 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#SCROLLBARS_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#SCROLLBARS_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#SCROLLBARS_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