Listening for ScrollBars from Browsers :: Dynamic Resize

200 views
Skip to first unread message

Ashton Thomas

unread,
Mar 28, 2012, 2:44:03 PM3/28/12
to google-we...@googlegroups.com
I have a layout that dynamically resizes via:
Window.addResizeHandler(new ResizeHandler() {


However, this is NOT fired when the browsers adds the scroll bars once the UI has dynamically added content to extend the browser's screen

So my app is fine when it first loads and the content doesn't go below the viewport; however, once the content goes below the browsers automatically adds its scrollbars but a resize event is not fired.

This is a problem because the width of the scrollbars also causes the bottom horizontal scrollbars to show.


I appreciate your thoughts! Thanks!



Thomas Broyer

unread,
Mar 29, 2012, 3:47:29 AM3/29/12
to google-we...@googlegroups.com
You could set an overflow-y:scroll CSS property on the html element to force the scrollbar to always appear: http://www.mediacollege.com/internet/css/scroll-always.html
Otherwise, well, periodically check the size of the viewport?

Jens

unread,
Mar 29, 2012, 4:24:51 AM3/29/12
to google-we...@googlegroups.com
Not sure if it could help you, but you can detect if a scroll bar is visible by checking ScrollPanel.getMaximumVerticalScrollPosition(). If its greater than 0 the scroll bar is visible.

So while adding your content into the ScrollPanel you could constantly check this value and if its greater than 0 you could maybe schedule a finally or deferred command that calls layout.onResize() manually?

I have done something similar for a table like widget where I wanted to reposition a right aligned, fixed width column header when the vertical scrollbar of the table's content area gets visible. The scrollbar has pushed the contents to the left so I had to reposition the column header <scrollbar-width> pixels to the left to keep header + column visually in sync.

-- J.

Ashton Thomas

unread,
Mar 29, 2012, 10:20:22 PM3/29/12
to google-we...@googlegroups.com
Thanks guys,

I am trying to go for smooth as possible so, Thomas, looks like I will have to go with the y-overflow solution. My main priority would be instant updating instead of a almost constant or periodic check. I would like to handle it at the highest level possible instead of as a widget is adding content.. Oh well, it would be nice to see some event being fired when the scroll bars are added by the browser. oh well :(

Thanks for the help!
-Ashton
Reply all
Reply to author
Forward
0 new messages