Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scroll loading does not work when browser zoom is not 100% #868

Closed
doctorj opened this issue Oct 29, 2023 · 1 comment
Closed

Scroll loading does not work when browser zoom is not 100% #868

doctorj opened this issue Oct 29, 2023 · 1 comment
Assignees
Labels
bug Something isn't working version 2.x.x Version 2.x.x issues
Milestone

Comments

@doctorj
Copy link

doctorj commented Oct 29, 2023

In v1 when zoom is <= 80% and >= 125%
In v2 when zoom is <= 90% and >= 110%

new entries are not displayed when scrolled to bottom.

What I tested, and works in both v1 and v2, is minor change compared to code before changes introduced as a fix for #862: replacing == with >=, like this:

if (JsMath.abs(offsetHeight) + JsMath.abs(scrollTop)
	>= Double.valueOf(scrollHeight).intValue()) {
dataTable.fireTableEvent(new BodyScrollEvent(ScrollPosition.BOTTOM));
}
@howudodat
Copy link

it's broken at 100% as well. I added this simple log:

GWT.log("scrollTop:" + scrollTop + " offset:"+offsetHeight + " scroll:" + scrollHeight + " client:"+clientHeight
		+ " triggerPos:"+(JsMath.abs(offsetHeight) + JsMath.abs(scrollTop))
		+ " compareTo:"+ new Double(scrollHeight + (offsetHeight - clientHeight)).intValue()
		);

and you can see in the log below that at 100% it's 1 pixel short of scrolling after the 2nd expand.

scrollTop:4 offset:718 scroll:950 client:718 triggerPos:722 compareTo:950
scrollTop:16 offset:718 scroll:950 client:718 triggerPos:734 compareTo:950
scrollTop:37 offset:718 scroll:950 client:718 triggerPos:755 compareTo:950
scrollTop:69 offset:718 scroll:950 client:718 triggerPos:787 compareTo:950
scrollTop:114 offset:718 scroll:950 client:718 triggerPos:832 compareTo:950
scrollTop:165 offset:718 scroll:950 client:718 triggerPos:883 compareTo:950
scrollTop:205 offset:718 scroll:950 client:718 triggerPos:923 compareTo:950
scrollTop:227 offset:718 scroll:950 client:718 triggerPos:945 compareTo:950
scrollTop:232 offset:718 scroll:950 client:718 triggerPos:950 compareTo:950
Firing event
scrollTop:246 offset:718 scroll:1771 client:718 triggerPos:964 compareTo:1771
scrollTop:290 offset:718 scroll:1771 client:718 triggerPos:1008 compareTo:1771
scrollTop:358 offset:718 scroll:1771 client:718 triggerPos:1076 compareTo:1771
scrollTop:444 offset:718 scroll:1771 client:718 triggerPos:1162 compareTo:1771
scrollTop:554 offset:718 scroll:1771 client:718 triggerPos:1272 compareTo:1771
scrollTop:679 offset:718 scroll:1771 client:718 triggerPos:1397 compareTo:1771
scrollTop:808 offset:718 scroll:1771 client:718 triggerPos:1526 compareTo:1771
scrollTop:923 offset:718 scroll:1771 client:718 triggerPos:1641 compareTo:1771
scrollTop:1004 offset:718 scroll:1771 client:718 triggerPos:1722 compareTo:1771
scrollTop:1044 offset:718 scroll:1771 client:718 triggerPos:1762 compareTo:1771
scrollTop:1053 offset:718 scroll:1771 client:718 triggerPos:1771 compareTo:1771
Firing event
scrollTop:1057 offset:718 scroll:2707 client:718 triggerPos:1775 compareTo:2707
scrollTop:1075 offset:718 scroll:2707 client:718 triggerPos:1793 compareTo:2707
scrollTop:1117 offset:718 scroll:2707 client:718 triggerPos:1835 compareTo:2707
scrollTop:1202 offset:718 scroll:2707 client:718 triggerPos:1920 compareTo:2707
scrollTop:1329 offset:718 scroll:2707 client:718 triggerPos:2047 compareTo:2707
scrollTop:1492 offset:718 scroll:2707 client:718 triggerPos:2210 compareTo:2707
scrollTop:1676 offset:718 scroll:2707 client:718 triggerPos:2394 compareTo:2707
scrollTop:1840 offset:718 scroll:2707 client:718 triggerPos:2558 compareTo:2707
scrollTop:1946 offset:718 scroll:2707 client:718 triggerPos:2664 compareTo:2707
scrollTop:1987 offset:718 scroll:2707 client:718 triggerPos:2705 compareTo:2707
scrollTop:1988 offset:718 scroll:2707 client:718 triggerPos:2706 compareTo:2707

I would propose that there be a configurable "pad" that is included in the calculation. So that instead of it requiring to be at the end of the list, it could load at a row or two above. Something like:

int nPad = 25; // get this from config somewhere
GWT.log("PAD:" + JsMath.abs(
		JsMath.abs(offsetHeight) + JsMath.abs(scrollTop)
				- new Double(scrollHeight + (offsetHeight - clientHeight)).intValue()));
if (JsMath.abs(
		JsMath.abs(offsetHeight) + JsMath.abs(scrollTop)
				- new Double(scrollHeight + (offsetHeight - clientHeight)).intValue()) <= nPad) {
	GWT.log("Firing event");
	dataTable.fireTableEvent(new BodyScrollEvent(ScrollPosition.BOTTOM));
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working version 2.x.x Version 2.x.x issues
Projects
Status: Done
Development

No branches or pull requests

3 participants