Thanks Thomas, Test and works as suggested. The class owning my CellList extends Composite and I now have overridden the onLoad method like this: @Override protected void onLoad() { myCellListView.unsinkEvents(Event.MOUSEEVENTS); }
... and no longer are the mouse over/out/move events flooding into my console. Interesting I still get a CPU spike when I wiggle my mouse, but I am in hosted mode, could this have something to do with it? Could it be that when I compile to javascript these mouse events are genuinely ignored and have no processing overhead? It's not a biggie, it's just that I am rendering a non-trivial view of data in my CellList and performance is essential. On Jun 23, 1:57 pm, Thomas Broyer <t.bro...@gmail.com> wrote: > On 23 juin, 10:51, Paul Schwarz <paulsschw...@gmail.com> wrote: > > > > > > > Summary: in a CellList I want to sink the ONCLICK and ONCONTEXTMENU > > events to be handled by my Cell's onBrowserEvent method, but I don't > > want any mouse over/out/move events, but cannot seem to unsink them. > > > In 2.1 M1 we have CellList. If you look at the constructor of CellList > > you'll see on line 139 > > sinkEvents(Event.ONCLICK | Event.ONCHANGE | Event.MOUSEEVENTS); > > > So the CellList is presuming that these are the events that we're > > interested in. Now I have created my own concrete implementation of an > > AbstractCell. > > Other implementations are TextCell, ButtonCell, CheckboxCell, etc. So > > I have followed those as examples, but have created my own Cell > > implementation. > > > One of the methods that can be implemented is: > > public abstract Object onBrowserEvent(Element parent, C value, Object > > viewData, NativeEvent event, ValueUpdater<C> valueUpdater); > > > ... and in that method I am interested in a Click event and a Context > > menu event. I notice that my CPU usage peaks at 50ish% when I move my > > mouse around. Sure enough GWT is picking up all the mouse over, mouse > > out, mouse move events as well. AND I'm not getting my Context menu > > event (because I haven't explicitly sunk it yet). > > > So in my UI class that keeps an instance of this CellList, in the > > constructor I have: > > myCellList.sinkEvents(Event.ONCONTEXTMENU); > > myCellList.unsinkEvents(Event.MOUSEEVENTS); > > > ... so now I am getting my Context menu event, but I am still getting > > a flood of mouse events as I wiggle my mouse over the Cells in the > > CellList. I have tried explicitly unsinking Event.ONMOUSEOVER et al. > > but that has no effect either. > > > Either this is a bug, or more likely I am unsinking the event on the > > wrong element or unsinking in the wrong order, or I am missing > > something altogether. > > > Any ideas? > > Widget#sinkEvents defers the call to DOM.sinkEvents until the widget > is attached, but unsinkEvents doesn't, and don't update the > "eventsToSink" private variable (this could be seen as a bug in > Widget, which should override unsinkEvents too). > The workaround seems to be (not tested) to call unsinkEvents from an > onLoad override. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.