On Thursday, March 29, 2012 5:43:55 AM UTC+2, GWTter wrote:
>
> Hi all,
>
> I've used the CustomScrollPanel in order to implement some custom 
> scrollbars, everything was working great until I added DnD (gwt-dnd, not 
> native) functionality
> to an element in the scrollpanel. The dragging action on the elements 
> within is extremely laggy. After a good amount of testing I found that the 
> issue had to do with
> the CustomScrollPanel since using a regular ScrollPanel performs just fine 
> with minimal lag if any. I then looked at what is generated for the 
> customscrollpanel to 
> work and found some divs had been generated which I couldn't attribute any 
> specific functionality to (ITEMs 1 & 2 below). They're basically just 
> overlaying the whole
> scrollpanel area and deleting them with firebug did not affect the 
> customscrollpanel functionality, but deleting them did improve the dnd 
> performance considerably. I see that
> the more elements that are layered between the mouse click and the target 
> element affect the performance to a good degree.
>
> My question is does anyone know if these extra DIVs are needed, and if so 
> is there a way to workaround so I can still have the custom scroll bars 
> with good DnD.
>

The DIVs are added by the ResizeLayoutPanel.ImplStandard to detect when the 
content grows or shrinks, so the CustomScrollPanel can update the 
scrollbars.

BTW, the ITEM3 div is used by the Layout to detect changes of the font size 
so ti can update its layers when they're positioned using EM or EX units.

Does changing the z-index of the various divs (ITEM1, ITEM2 and 
dragdrop-dropTarget) changes anything performance-wise?

DIRTY HACK: You could also try calling onDetach() on the 
containerResizeImpl when entering the scroll panel (while dragging) and 
calling onAttach() when leaving or dropping (use JSNI to access the private 
containerResizeImpl). You might have to explicitly call 
maybeUpdateScrollbars() after calling containerResizeImpl.onAttach(), as 
I'm not sure onAttach() would call the ResizeLayoutPanel.Impl.Delegate), 
and you might have to call it from a Scheduler.get().scheduleDeferred(), as 
ResizeLayoutPanel.ImplStandard uses it.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/_dSY6jIjA1IJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to