I have experienced a problem that didn't appear in version 2.0.2 but appears since version 2.1.0. I have a Jframe with a JtabbedPane composed by 2 Tabs and a GLCanvas always contained in the panel of the selected tab. When I switch form tab1 to tab2, glcanvas is added to tab2, when I switch back to tab1 glcanvas is added to tab1. The problem is when I switch back to tab1, glcanvas disappear. I post the code of my simple application: public class JoglTabbedPaneError extends JFrame { private GLCanvas glCanvas; private JPanel panel1; private JPanel panel2; private final JTabbedPane tabbedPane; public JoglTabbedPaneError() { panel1 = new javax.swing.JPanel(); panel2 = new javax.swing.JPanel(); panel1.setLayout(new BorderLayout()); panel2.setLayout(new BorderLayout()); GLProfile profile = GLProfile.get(GLProfile.GL2); GLCapabilities glCapabilities = new GLCapabilities(profile); glCanvas = new GLCanvas(glCapabilities); panel1.add(glCanvas, BorderLayout.CENTER); tabbedPane = new JTabbedPane(); tabbedPane.addTab("tab1", panel1); tabbedPane.addTab("tab2", panel2); tabbedPane.addChangeListener(new javax.swing.event.ChangeListener() { @Override public void stateChanged(javax.swing.event.ChangeEvent evt) { if (glCanvas == null) { return; } if (tabbedPane.getSelectedIndex() == 0) { panel1.add(glCanvas, BorderLayout.CENTER); } else { panel2.add(glCanvas, BorderLayout.CENTER); } } }); setContentPane(tabbedPane); setSize(640,480); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } /** * @param args the command line arguments */ public static void main(String[] args) { new JoglTabbedPaneError().setVisible(true); } } If I use jogl 2.0.2 I can switch from tab1 to tab2 and viceversa and this problem doesn't appear
Regression of commit e33e6374e0be0454f7e9732b5f897f84dbc3c4dc (Fix for Bug 729 and Bug 849) !
JAWTWindow's HierarchyListener doesn't set component visible (again) on 'addNotify(..)' It only renders the component invisible after removeNotify() which is performed implicit anyways .. Case java.awt.event.HierarchyEvent.DISPLAYABILITY_CHANGED shall perform similar as our java.awt.event.HierarchyEvent.SHOWING_CHANGED impl.
887dbdb34d71a3a266b7854bc9a3842aad1032f9 - Fixed as described in comment 2 - Tested on Gnu/Linux X11 and OSX incl. re-test Bug 729 and Bug 849 unit tests.