Thanks and regards,
Shashi
*From:*Semyon Sadetsky
*Sent:* Thursday, March 1, 2018 12:39 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()
Hi Sashi,
The parent with and height shouldn't be decreased by the size of the
scrollbars in case of SCROLLBARS_NEVER.
--Semyon
On 2/27/2018 12:45 AM, 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/
<http://cr.openjdk.java.net/%7Esveerabhadra/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>
<mailto:shashidhara.veerabhadra...@oracle.com>
*Cc:* 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()
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#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