diff --git a/src/main/java/com/threerings/getdown/data/Application.java b/src/main/java/com/threerings/getdown/data/Application.java index f759ef0..42d6858 100644 --- a/src/main/java/com/threerings/getdown/data/Application.java +++ b/src/main/java/com/threerings/getdown/data/Application.java @@ -1749,7 +1749,9 @@ public class Application { if (!StringUtil.isBlank(hexValue)) { try { - return new Color(Integer.parseInt(hexValue, 16)); + int rgba = Integer.parseInt(hexValue, 16); + boolean hasAlpha = hexValue.length() > 6; + return new Color(rgba, hasAlpha); } catch (NumberFormatException e) { log.warning("Ignoring invalid color", "hexValue", hexValue, "exception", e); } diff --git a/src/main/java/com/threerings/getdown/launcher/GetdownApp.java b/src/main/java/com/threerings/getdown/launcher/GetdownApp.java index 0dac4a1..e5f0386 100644 --- a/src/main/java/com/threerings/getdown/launcher/GetdownApp.java +++ b/src/main/java/com/threerings/getdown/launcher/GetdownApp.java @@ -5,7 +5,9 @@ package com.threerings.getdown.launcher; +import java.awt.Color; import java.awt.Container; +import java.awt.IllegalComponentStateException; import java.awt.Image; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; @@ -141,6 +143,13 @@ public class GetdownApp } }); _frame.setUndecorated(_ifc.hideDecorations); + try { + _frame.setBackground(_ifc.background); + } catch (UnsupportedOperationException e) { + log.warning("Failed to set background", e); + } catch (IllegalComponentStateException e) { + log.warning("Failed to set background", e); + } _frame.setResizable(false); } else { _frame.setTitle(title); @@ -226,6 +235,12 @@ public class GetdownApp // to allow the user to close the window if (_frame != null && _frame.isUndecorated()) { _frame.dispose(); + Color background = _frame.getBackground(); + if (background != null && background.getAlpha() < 255) { + // decorated windows do not allow alpha backgrounds + _frame.setBackground( + new Color(background.getRed(), background.getGreen(), background.getBlue())); + } _frame.setUndecorated(false); showContainer(); } diff --git a/src/main/java/com/threerings/getdown/launcher/GetdownApplet.java b/src/main/java/com/threerings/getdown/launcher/GetdownApplet.java index 8f10b96..8df73f3 100644 --- a/src/main/java/com/threerings/getdown/launcher/GetdownApplet.java +++ b/src/main/java/com/threerings/getdown/launcher/GetdownApplet.java @@ -104,6 +104,7 @@ public class GetdownApplet extends JApplet @Override protected Container createContainer () { getContentPane().removeAll(); + getContentPane().setBackground(_ifc.background); return getContentPane(); } @Override diff --git a/src/main/java/com/threerings/getdown/launcher/StatusPanel.java b/src/main/java/com/threerings/getdown/launcher/StatusPanel.java index 4fbb9be..ada90ed 100644 --- a/src/main/java/com/threerings/getdown/launcher/StatusPanel.java +++ b/src/main/java/com/threerings/getdown/launcher/StatusPanel.java @@ -189,10 +189,7 @@ public class StatusPanel extends JComponent super.paintComponent(g); Graphics2D gfx = (Graphics2D)g; - // always draw a background in case our image isn't ready yet - gfx.setColor(_ifc.background); - gfx.fillRect(0, 0, getWidth(), getHeight()); - // then attempt to draw a background image... + // attempt to draw a background image... Image img; if (_displayError) { img = _bg.getErrorImage();