Pivot
  1. Pivot
  2. PIVOT-751

TabPaneSelectionListener#selectedIndexChanged called twice when first tab is inserted

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 2.0, 2.0.1
    • Fix Version/s: 2.0.2
    • Component/s: wtk
    • Labels:
      None

      Description

      If you add a tab to an empty tabpane, two selectedIndexChanged events are called. I.e, when you add a TabPaneSelectionListener to a tabpane and call:

      tabpane.getTabs().add(component);

      .. the 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 }

      This could be fixed by taking into account that previousSelectedIndex might have been -1 when invoked, like this:

      if (selectedIndex != previousSelectedIndex && previousSelectedIndex > -1) {

      See this thread for more info: http://apache-pivot-users.399431.n3.nabble.com/TabPaneSelectionListener-selectedIndexChanged-called-twice-when-first-tab-is-inserted-td3022515.html

      PS: According to Chris, CardPane and Accordion behave in the same way, so any changes to TabPane should also be made to these for consistency.

      1. PIVOT751.java
        2 kB
        Chris Bartlett
      2. PIVOT751.txt
        1 kB
        Chris Bartlett

        Activity

          People

          • Assignee:
            Sandro Martini
            Reporter:
            Edvin Syse
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development