Sorry, I attached the wrong patch. Here is the correct one. @Mark: This is a small fix which may enter 0.92.
cya Robert Robert Schuster wrote: > Hi, > this fumbles a bit with the way the gradient and the border is painted for > JMenu > components. > > Still need to find out how 'they' manage to join the painting of a JMenu with > a > adjacent JToolBar ... > > 2006-08-04 Robert Schuster <[EMAIL PROTECTED]> > > * javax/swing/plaf/metal/MetalMenuBarUI.java: > (update): Check size and paint smaller gradient. > * javax/swing/plaf/metal/MetalBorders.java: > (MenuBarBorder): Removed borderColor field. > (MenuBarBorder.paintBorder): Added note, fetch color from UIManager or > MetalLookAndFeel. > > > cya > Robert
Index: javax/swing/plaf/metal/MetalBorders.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalBorders.java,v
retrieving revision 1.35
diff -u -r1.35 MetalBorders.java
--- javax/swing/plaf/metal/MetalBorders.java 18 May 2006 17:07:36 -0000 1.35
+++ javax/swing/plaf/metal/MetalBorders.java 3 Aug 2006 22:21:18 -0000
@@ -926,15 +926,11 @@
/** The border insets. */
protected static Insets borderInsets = new Insets(1, 0, 1, 0);
- // TODO: find where this color really comes from
- private static Color borderColor = new Color(153, 153, 153);
-
/**
* Creates a new border instance.
*/
public MenuBarBorder()
{
- // Nothing to do here.
}
/**
@@ -951,7 +947,17 @@
public void paintBorder(Component c, Graphics g, int x, int y, int w,
int h)
{
- g.setColor(borderColor);
+ // Although it is not correct to decide on the static property
+ // currentTheme which color to use the RI does it like that.
+ // The trouble is that by simply changing the current theme to
+ // e.g. DefaultMetalLookAndFeel this method will use another color
+ // although a change in painting behavior should be expected only
+ // after setting a new look and feel and updating all components.
+ if(MetalLookAndFeel.getCurrentTheme() instanceof OceanTheme)
+ g.setColor(UIManager.getColor("MenuBar.borderColor"));
+ else
+ g.setColor(MetalLookAndFeel.getControlShadow());
+
g.drawLine(x, y + h - 1, x + w, y + h - 1);
}
Index: javax/swing/plaf/metal/MetalMenuBarUI.java
===================================================================
RCS file: /cvsroot/classpath/classpath/javax/swing/plaf/metal/MetalMenuBarUI.java,v
retrieving revision 1.2
diff -u -r1.2 MetalMenuBarUI.java
--- javax/swing/plaf/metal/MetalMenuBarUI.java 16 Jun 2006 12:54:46 -0000 1.2
+++ javax/swing/plaf/metal/MetalMenuBarUI.java 3 Aug 2006 22:21:18 -0000
@@ -1,5 +1,5 @@
/* MetalMenuBarUI.java -- MenuBar UI for the Metal L&F
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -76,12 +76,15 @@
*/
public void update(Graphics g, JComponent c)
{
+ int height = c.getHeight();
if (c.isOpaque()
&& UIManager.get("MenuBar.gradient") != null
- && c.getBackground() instanceof UIResource)
+ && c.getBackground() instanceof UIResource
+ && height > 2)
{
- MetalUtils.paintGradient(g, 0, 0, c.getWidth(), c.getHeight(),
+ MetalUtils.paintGradient(g, 0, 0, c.getWidth(), height - 2,
SwingConstants.VERTICAL, "MenuBar.gradient");
+
paint(g, c);
}
else
signature.asc
Description: OpenPGP digital signature
