For efficiency, I agree that we should suppress the second event. -- Noel.
Chris Bartlett wrote: > I had a quick look and feel that the 2nd notification seems wrong (where the > event's previousSelectedIndex is 0 while > the TabPane's current selected index is also 0) > > However, CardPane and Accordion behave in the same way, so any changes to > TabPane should also be made to these for > consistency. > > I think it makes more sense to suppress the 2nd notification rather than > leaving the user to deal with it, but I don't > know how much of a problem this is in reality. Perhaps just documenting the > behaviour would be sufficient? > > Any comments from others on the mailing list? > > Chris > > On 4 June 2011 14:31, Edvin Syse <[email protected] > <mailto:[email protected]>> wrote: > > I'm wondering if this is as intended or a bug: > > When I add a tab to an _empty_ tabpane, two selectedIndexChanged events > are called. I.e, when I add a > TabPaneSelectionListener to a tabpane and call: > > tabpane.getTabs().add(component); > > .. my listener fires twice, with previousSelectedIndex set to -1 and then > 0. > > The two events are fired by line 68 and 72 in TabPane.java: > > 68 tabPaneListeners.tabInserted(TabPane.this, index); > 69 > 70 // Fire selection change event, if necessary > 71 if (selectedIndex != previousSelectedIndex) { > 72 tabPaneSelectionListeners.selectedIndexChanged(TabPane.this, > selectedIndex); > 73 } > > Should the if on line 71 take into account that previousSelectedIndex > might have been -1 when invoked, like this: > > if (selectedIndex != previousSelectedIndex && previousSelectedIndex > -1) > { > > .. to avoid the double event notification? > > -- Edvin > >
