Uploaded image for project: 'Pivot'
  1. Pivot
  2. PIVOT-751

TabPaneSelectionListener#selectedIndexChanged called twice when first tab is inserted

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: 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.

        Attachments

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

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: