6644301: lightweight components can repaint outside request bounds
authorson
Thu May 15 11:34:11 2008 +0400 (18 months ago)
changeset 3395a6c318329f2
parent 2398da00cb83d01
child 340abb08b9028f4
6644301: lightweight components can repaint outside request bounds
Summary: repaint() needs to adjust width and height if it receives negative x or y.
Reviewed-by: art
src/share/classes/java/awt/Component.java
--- a/src/share/classes/java/awt/Component.java Sun May 04 07:05:42 2008 -0700
+++ b/src/share/classes/java/awt/Component.java Thu May 15 11:34:11 2008 +0400
@@ -3052,10 +3052,24 @@ public abstract class Component implemen
// services. Additionally, the request is restricted to
// the bounds of the component.
if (parent != null) {
- int px = this.x + ((x < 0) ? 0 : x);
- int py = this.y + ((y < 0) ? 0 : y);
+ if (x < 0) {
+ width += x;
+ x = 0;
+ }
+ if (y < 0) {
+ height += y;
+ y = 0;
+ }
+
int pwidth = (width > this.width) ? this.width : width;
int pheight = (height > this.height) ? this.height : height;
+
+ if (pwidth <= 0 || pheight <= 0) {
+ return;
+ }
+
+ int px = this.x + x;
+ int py = this.y + y;
parent.repaint(tm, px, py, pwidth, pheight);
}
} else {