Index: Toolbar.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/awt/Toolbar.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -b -r1.9 -r1.10 --- Toolbar.java 2004/02/29 08:00:05 1.9 +++ Toolbar.java 2004/02/29 21:07:06 1.10 @@ -486,17 +486,7 @@ } // invalidate the toolbar, trigger proper relayout - // toolbars can affect layout of whole frame, we need to - // force repaint of frame (unfortunately) Toolbar.this.invalidate (); - Container parent = Toolbar.this.getParent (); - while ((parent != null) && !(parent instanceof Frame)) { - parent = parent.getParent(); - } - if (parent != null) { - parent.validate(); - parent.repaint(); - } return Toolbar.this; } Index: MainWindow.java =================================================================== RCS file: /cvs/core/windows/src/org/netbeans/core/windows/view/ui/MainWindow.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -b -r1.18 -r1.19 --- MainWindow.java 2004/02/29 19:22:26 1.18 +++ MainWindow.java 2004/02/29 19:51:29 1.19 @@ -343,10 +343,6 @@ if(desktop != null) { desktopPanel.add(desktop, BorderLayout.CENTER); } - - invalidate(); - validate(); - repaint(); } Index: MiniStatusBar.java =================================================================== RCS file: /cvs/core/src/org/netbeans/core/MiniStatusBar.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- MiniStatusBar.java 2004/02/04 10:23:21 1.4 +++ MiniStatusBar.java 2004/02/29 20:24:56 1.5 @@ -21,6 +21,7 @@ import java.text.MessageFormat; import javax.swing.border.Border; import javax.swing.BorderFactory; +import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.SwingConstants; import org.netbeans.core.IDESettings; @@ -127,8 +128,8 @@ if (!isMiniStatusBarEnabled ()) return ; // set visible this mini status bar if there is any text - if (getRootPane ()!=null) { - getRootPane ().revalidate (); + if (isShowing() && getParent() instanceof JComponent) { + ((JComponent) getParent()).revalidate(); } if (desc!=null) { if (desc.startsWith ("")) { // NOI18N Index: MainWindow.java =================================================================== RCS file: /cvs/core/windows/src/org/netbeans/core/windows/view/ui/MainWindow.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -b -r1.19 -r1.20 --- MainWindow.java 2004/02/29 19:51:29 1.19 +++ MainWindow.java 2004/02/29 21:36:09 1.20 @@ -167,6 +167,19 @@ //#38810 end } + private boolean hackFirst = Boolean.getBoolean("netbeans.winsys.flashhack"); //NOI18N + /** Workaround for main window flashing during startup problem on Windows. + * Depends on the main window being laid out twice during startup, so may + * not be safe enough for producting use, but including for testing. Can't + * find any platform it causes a problem on thus far. */ + public void doLayout() { + if (hackFirst) { + hackFirst = false; + return; + } + super.doLayout(); + } + /** Creates and returns border for desktop which is visually aligned * with currently active LF */ private static Border getDesktopBorder () { Index: Toolbar.java =================================================================== RCS file: /cvs/openide/loaders/src/org/openide/awt/Toolbar.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -b -r1.7 -r1.8 --- Toolbar.java 2004/02/19 03:14:21 1.7 +++ Toolbar.java 2004/02/29 06:43:54 1.8 @@ -193,6 +193,23 @@ } } super.updateUI(); + } + + public Dimension getPreferredSize() { + String lf = UIManager.getLookAndFeel().getName(); + String lfid = UIManager.getLookAndFeel().getID(); + int minheight; + if ("Aqua".equals(lfid)) { + minheight = 29; + } else if ("Metal".equals(lf)) { + minheight = 36; + } else { + minheight = 28; + } + + Dimension result = super.getPreferredSize(); + result.height = Math.max (result.height, minheight); + return result; }