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
>
>

Reply via email to