This is an example from Satoshi Ishii working on PhotonicsDB. He was trying to setup tabs in the gui by using groups of groups. He wanted the first and last tab to always be enabled. The tabs in between the first and last contained enable tests. Rappture was able to successfully create the tabs, but the last tab always contained data from the first disabled tab. The cause of this problem is that gui/scripts/control.tcl, which is in charge of setting up the tabs, gets an index of which tab was selected and uses this index to access the name and value of the tab to be shown. The index is used in a list which contains all possible tabs, not a list that contains only the enabled tabs. The result is that when we have a list containing five total tabs numbered 1-5, and tabs 1,2, and 5 are enabled, an index of 3 would choose a disabled tab to show. This problem was solved by adding an additional private variable to the controls object that keeps track of which tabs are enabled and shown. We now index into the _showing list instead of the _controls list. In the example above the _showing list would contain tabs 1, 2 and 5. When the last tab was chosen in the graphical user interface, _changeTabs function would receive an index of 3 referencing tab 5 and the correct tab would be displayed to the user.