java.awt.GridLayout bugs (kaffe 1.0.b1)
Giles Lean
kaffe@rufus.w3.org
Tue, 28 Jul 1998 00:03:15 +1000
[Seems like PR'd bugs don't get copied to the list ... yell if bug
postings here are unwelcome.]
GridLayout has a couple of problems, the first a minor nit:
Line 105:
c.setBounds( x, y, cw-hgap, ch-hgap);
should presumably be:
c.setBounds( x, y, cw-hgap, ch-vgap);
(i.e. the second "hgap" should be "vgap").
More interestingly, the 1.0.b1 implementation doesn't support leaving
rows or columns as zero. Below is a diff to provide this.
Giles
*** kaffe-1.0.b1-dist/libraries/javalib/java/awt/GridLayout.java Tue Jul 14 14:34:38 1998
--- kaffe-1.0.b1/libraries/javalib/java/awt/GridLayout.java Mon Jul 27 23:09:07 1998
***************
*** 29,34 ****
--- 29,36 ----
}
public GridLayout (int rows, int cols, int hgap, int vgap) {
+ if ( rows == 0 && cols == 0)
+ throw new IllegalArgumentException("GridLayout rows and cols cannot both be zero");
this.rows = rows;
this.cols = cols;
this.hgap = hgap;
***************
*** 40,53 ****
Dimension adjustDim ( Container parent) {
Dimension d = new Dimension( cols, rows);
!
! boolean extCol = true;
! while ( parent.nChildren > d.width * d.height ) {
! if ( extCol ) d.width++;
! else d.height++;
! extCol = !extCol;
}
!
return d;
}
--- 42,71 ----
Dimension adjustDim ( Container parent) {
Dimension d = new Dimension( cols, rows);
!
! if ( rows == 0 ) {
! d.width = cols;
! d.height = parent.nChildren / cols;
! if (parent.nChildren % cols != 0)
! d.height++;
}
! else if ( cols == 0 ) {
! d.height = rows;
! d.width = parent.nChildren / rows;
! if (parent.nChildren % rows != 0)
! d.width++;
! }
! else {
! boolean extCol = true;
! while ( parent.nChildren > d.width * d.height ) {
! if ( extCol )
! d.width++;
! else
! d.height++;
! extCol = !extCol;
! }
! }
!
return d;
}