diff options
Diffstat (limited to 'libjava/gnu/awt/xlib/XCanvasPeer.java')
-rw-r--r-- | libjava/gnu/awt/xlib/XCanvasPeer.java | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/libjava/gnu/awt/xlib/XCanvasPeer.java b/libjava/gnu/awt/xlib/XCanvasPeer.java index 83646b1f338..39a3f9331f4 100644 --- a/libjava/gnu/awt/xlib/XCanvasPeer.java +++ b/libjava/gnu/awt/xlib/XCanvasPeer.java @@ -55,6 +55,8 @@ public class XCanvasPeer implements CanvasPeer Component component; XGraphicsConfiguration config; + private WindowAttributes attributes = new WindowAttributes(); + private long eventMask; public XCanvasPeer(Component component) { @@ -92,7 +94,6 @@ public class XCanvasPeer implements CanvasPeer object. */ component.setBounds(bounds); - WindowAttributes attributes = new WindowAttributes(); /* Set background color */ Color bg = component.getBackground(); @@ -349,8 +350,21 @@ public class XCanvasPeer implements CanvasPeer public void setBackground(Color color) { - /* default canvas peer does not keep track of background, since it won't - * paint anything. */ + if (color != null) + { + int[] components = + { + color.getRed (), + color.getGreen (), + color.getBlue (), + 0xff + }; + + ColorModel cm = config.getColorModel (); + long pixel = cm.getDataElement (components, 0); + attributes.setBackground (pixel); + window.setAttributes (attributes); + } } public void setBounds(int x, int y, int width, int height) @@ -388,20 +402,22 @@ public class XCanvasPeer implements CanvasPeer public void setEventMask(long eventMask) { - WindowAttributes attributes = new WindowAttributes(); - - long xEventMask = getBasicEventMask(); - - if ((eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0) + if (this.eventMask != eventMask) + { + this.eventMask = eventMask; + long xEventMask = getBasicEventMask (); + + if ((eventMask & AWTEvent.MOUSE_EVENT_MASK) != 0) { - xEventMask |= - WindowAttributes.MASK_BUTTON_PRESS | - WindowAttributes.MASK_BUTTON_RELEASE; + xEventMask |= + WindowAttributes.MASK_BUTTON_PRESS | + WindowAttributes.MASK_BUTTON_RELEASE; } - - attributes.setEventMask(xEventMask); - window.setAttributes(attributes); - ensureFlush(); + + attributes.setEventMask (xEventMask); + window.setAttributes (attributes); + ensureFlush (); + } } public void setFont(Font font) |