Index: src/org/eclipse/gef/internal/ui/palette/editparts/PinnablePaletteStackFigure.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.gef/plugins/org.eclipse.gef/src/org/eclipse/gef/internal/ui/palette/editparts/PinnablePaletteStackFigure.java,v retrieving revision 1.5 diff -u -r1.5 PinnablePaletteStackFigure.java --- src/org/eclipse/gef/internal/ui/palette/editparts/PinnablePaletteStackFigure.java 8 May 2008 19:09:06 -0000 1.5 +++ src/org/eclipse/gef/internal/ui/palette/editparts/PinnablePaletteStackFigure.java 3 Feb 2009 19:24:55 -0000 @@ -234,7 +234,13 @@ - (pinSize.height / 2)); pinFigure.setBounds(pinBounds); } else { - headerFigure.setBounds(parent.getClientArea()); + //Fix 237822: If setBounds is called while the expandablePane is closing, + //the headerFigure will resize itself and cover other icons. setLocation is needed + //to prevent the headerFigure from disappearing on expandable pane closing + if(animating) + headerFigure.setLocation(stackLocation); + else + headerFigure.setBounds(parent.getClientArea()); } } } @@ -251,9 +257,13 @@ } if (event.getPropertyName() == ButtonModel.SELECTED_PROPERTY) { + //Fix 237822: store the header's location to prevent it moving during animation, then start the animation + stackLocation = headerFigure.getClientArea().getLocation(); + animating = true; Animation.markBegin(); handleExpandStateChanged(); Animation.run(150); + animating = false; // Now collapse other stacks when they are not pinned open or in the // case of columns and icons layout mode (where only one stack can @@ -296,6 +306,10 @@ private Rectangle headerBoundsLayoutHint = new Rectangle(); +private boolean animating; //Fix 237822: a flag used for marking when animation is happening + +private Point stackLocation; //Fix 237822: the location of headerFigure. + public PinnablePaletteStackFigure() { super();