| Version | Date | Description |
|---|---|---|
| 4.2 | 2011-12-09 | Release 4.2 |
| 4.1 | 2011-11-20 | Release 4.1 |
| 4.0 | 2011-08-20 | Release 4.0 |
| 4.0 | 2011-08-14 | Release 4.0 |
| 3.7.4 | 2011-01-30 | Release 3.7.4 |
| 3.7.3.1 | 2010-05-01 | Release 3.7.3.1 |
| 3.7.3 | 2010-04-30 | Release 3.7.3 |
| 3.7.2 | 2009-12-22 | Release 3.7.2 |
| 3.7.1 | 2009-08-03 | Release 3.7.1 |
| 3.7 | 2009-03-01 | Release 3.7 |
| 3.6.3 | 2009-01-16 | Release 3.6.3 |
| 3.6.2 | 2008-12-16 | Release 3.6.2 |
| 3.6.1 | 2008-12-15 | Release 3.6.1 |
| 3.6 | 2008-09-03 | Release 3.6 |
| 3.5.6 | 2008-08-22 | Release 3.5.6 |
| 3.5.5 | 2008-06-16 | Release 3.5.5 |
| 3.5.4 | 2008-06-07 | Release 3.5.4 |
| 3.5.3 | 2008-06-01 | Release 3.5.3 |
| Type | Changes | By |
|---|---|---|
| Added JavaFX2 code into the main MigLayout project. | tbee | |
| Guarded the beans check with a catch since it has been reported that it doesn't work with a null class loader. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Updated the Maven poms and moved the releases to the Sonatype Central Repo. | tbee |
| Type | Changes | By |
|---|---|---|
| If using design time (in IDEUtil.java) is turned on (normally just by IDEs with MigLayout support) there was a memory leak. | mikaelgrev |
| SWT had a memory leak. When disposing Controls they were held strongly by MigLayout. | mikaelgrev |
| In SWT after setting a new LayoutData on a control it sometime wasn't picked up. And when it was all constraints were recreated which was slow. | mikaelgrev |
| Introduced a fail safe for buggy Swing applications/containers so that there's less risk for memory leaks. | mikaelgrev |
| Reduced heap memory consumption for components that doesn't have a constraint. Now a CC is reused instead of recreated with Grid. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| MigLayout now requires at least Java 5 and the code base has been updated to for-each loops and no explicit value unboxing or boxing. | mikaelgrev | |
| Made Beans package load only if it exist. It doesn't on Android for instance and there might be other places where it doesn't exist. | tuomashuhtanen | |
| Layout Constraint "align" with only one argument used that for the vertical dimension also which wasn't correct. | mikaelgrev |
| Fixed a Negative Array Exception that could happen in rare circumstances. | mikaelgrev |
| Fixed a bug where some layout changes didn't re-layout the container. | mikaelgrev |
| IDEUtil did output "hideMode" instead of "hidemode". | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Fixed most FindBugs warnings in the library. | mikaelgrev |
| "debug" mode had a javax.swing.Timer going and it seems it hinders shutdown without explicit exit. | mikaelgrev |
| Fixed a NPE in DimConstraint. Thanks to Stephan for the test code. | mikaelgrev |
| Made IDEUtil drop the trailing null if possible for "gapx" recreation. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Fixed IDEUtil's reparsing of "height xxx!" type values. Thanks to Konstantin Scheglov from Instantiations, Inc for the bug report. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Fixed a regression that the performance fix in 3.7.1 introduced. Thanks to Ingo Kegel ej-technologies for the fix. | mikaelgrev |
| Added a fix that makes spanning components in multiple rows works more consistent. | mikaelgrev |
| Made it clear in the White Paper that sizes can't contain links. | mikaelgrev |
| Removed a debug print statement from 3.7.2 | mikaelgrev |
| Made the documentation concerning docking clearer in the White Paper. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| "pos" pointing to "visual" or "container" didn't work in SWT and possibly Swing if the container was resized during layout. | mikaelgrev |
| Changed so that two or more consecutive spaces in an expression is the same as one. | mikaelgrev |
| Added some API to the API version (e.g. new CC().slit()) which made it more complete. Thanks tbee. | mikaelgrev |
| DPI in SWT on Mac OS X in Java 6 was wrong. DPI was changed in Swing from 72 to 96 DPI in Java 6 by Apple. I have now forced it to be 72 when at least one SWT MigLayout is created. It is not possible to have correct DPI in both Swing and SWT on OS X with Java 6 and above. | mikaelgrev |
| 'aligny baseline' for the Layout Constraint was accepted by the parser but failed for layout. Now the parser correctly throws an IllegalArgumentException. | mikaelgrev |
| Baseline alignment broken, at least on Mac, since 3.7.1. | mikaelgrev |
| There was a problem to serialize a layout for a container that wasn't a part of a component hierarchy. | mikaelgrev |
| If "skip" during a "span" then an extra cell was skipped. | mikaelgrev |
| Fixed a race condition regression introduced in 3.6.1. | mikaelgrev |
| Made IDEUtil design time empty row/column gap override default to 0 instead of 15. This is so that design time is always the same as normal unless IDE vendors opt in to have special empty row size. See LayoutUtil.setDesignTimeEmptySize(int pixels). | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Fixed a performance bug that made deeply nested MigLayout containers really slow in some circumstances. Now an invalid parent for a layout will only re-check the sizes for all children once. Please post a bug report with a runnable demo that shows this regression and I will try to make a version that doesn't suffer from this performance bug and which are without regressions. Thanks to Jermo from the forums which posted the bug report. Note that this might also be a performance problem in the SWT version, which is unpatched. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Turned off baseline alignment support for components that has BaselineResizeBehavior == OTHER. This means that for instance JLabel with HTML content will now be aligned vertically as CENTER rather than BASELINE. This is because the HTML implementation in Swing doesn't return a reasonable baseline value anyway. For instance, it quite often returns different values for the same arguments when called twice in sequence and every now and again returns a negative value indicating it doesn't support baseline alignment. | mikaelgrev |
| Improved SWT text components having the Swt.WRAP property set. They should now get a more correct height that is dependant on the width. | mikaelgrev |
| Component constraints "push", "pushx" and "pushy" was still affecting the layout even if the component was invisible in hidemode 2 and 3. Now that will happen only in hidemode 0 and 1. | mikaelgrev |
| There was still a case when "skip" did not skip the correct number of cells. | mikaelgrev |
| A cell spanning many columns did not transfer its minimum size in an optimal way. Now a column will get more pixels if its preferred size is larger than its minimum size. Before, the last column was increased to a size more than its preferred while another column could get somewhere between its minimum size and preferred size. Basically all columns will now be pushed to their preferred size before the last column will be increased. Still, if there is a "push" component/column it will be increased before any other column. Rows and columns are interchangeable in this context. | mikaelgrev |
| If a component had a 'grow' constraint it would affect the column and/or row to take up more space if the whole layout was set to 'fill' the bounds. This was a legacy from the time when 'push' did not exist. 'push' now does that so it is not logical that 'grow' should do it as well. 'grow' now only affects the component so that it will take up as much space as it can without affecting the grid. It should be noted that everything now works as the documentation has stated the whole time. If your layouts change to not grow in some way due to this then look for 'grow' (or growx/growy) and add a similar 'push' next to it. | mikaelgrev |
| If there were more than 512 rows or columns in the grid the preferred size was sometimes wrong (negative). | mikaelgrev |
| Made the persistence delegate for UnitValue and BoundsSize not look for the BeanInfo classes, since they will never exist and it delays startup as an Applet. Thanks Anthony. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Added Linux/Gnome platform defaults. This means that Gnome Human Interface Guidelines' gaps and sizes are now correct on Linux. | joeluckelman |
| MigLayout in a Serialized component throws a NPE. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| "skip" skipped cells before they where checked if there was a spanning component. This meant that "skip" did sometimes not skip a cell, instead it skipped the cell that would be skipped anyway since there was another component (spanning) there already. This is unlikely to affect many and if it does you are probably overusing the "skip" keyword anyway. :) | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| "skip" did not take automatic layout wrapping (wrap in the Layout Constraints) into account. So if you skipped the last cells on a row the component did not end up in the next row as expected but on the same row. "skip" now alwats skips the correct number of cells and move to new rows as needed. | mikaelgrev |
| If "newline size" or "wrap size" was used with "span" the size was attached to the wrong row. Also, if there was a wrap on one line and a newline on the next the extra row was removed, which was also a bug. | mikaelgrev |
| Fixed a strange shrinkage of some components due to calling Window.getPreferedSize() within the layout loop. This seem to be a workaround for a Swing bug rather than a big in MigLayout but it is hard to know. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| The parser now throws an IllegalArgmentException if links to other components are in the min/pref/max width or height keywords. Prior to this the link was silently evaluated to 0. | mikaelgrev |
| Made "sg" and "sizegroup" set the size group for both width and height. This might break old code but this way is more compliant with for instance "grow", which is also a short for both dimensions. It was not documented either way so I thought I would make it the most logical choice. If you have bugs because of this make sure you don't have "sg" or "sizegroup" without the trailing "x" or "y". | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Fixed a bug that linked sizegroupx and sizegroupy in certain circumstances. | mikaelgrev |
| Fixed a memory leak that pegged the layout instance in memory when debug mode was used. Thanks Dieter Krachtus. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| Added a compensation for a probable Swing bug introduced in java 6.0. In Swing when calling component.getBaseline(width, height) on a component that has embedded HTML and at least one BR or P section, Swing always revalidates the layout. This leads to a new call to component.getBaseline(width, height) and the loop goes on forever. It is unclear how to get out of this loop, if there even exist a simple all-working solution. In the mean time you can set "aligny center" or "aligny top" to make it not call that method from this version. | mikaelgrev |
| IDEUtil: Fixed a formatting error in IDEUtil where gaps was not recreated correctly. | mikaelgrev |
| IDEUtil: Fixed a formatting error in IDEUtil where width/height was used together with maxWidth/maxHeight. | mikaelgrev |
| If there was an active "split" in progress a docking component would be in that split instead of docked. | mikaelgrev |
| Converted MigLayout project to Maven 2 for build and deploy management. See the Maven part of the site for information on how to use MigLayout though Maven. | anavarro |
| Type | Changes | By |
|---|---|---|
| IDEUtil: Added option to get which cells in the layout grid the components end up in. Good for IDE Integrators.. | mikaelgrev |
| Type | Changes | By |
|---|---|---|
| If aligny baseline was specified for a textfield component it might get x and w that were wrong. Thanks Konstantin Scheglov - Instantiations, SwingDesigner. | mikaelgrev |
| TextFields in a baseline does not align the first layout if it has size 0, 0 before. Thanks Konstantin Scheglov - Instantiations, SwingDesigner | mikaelgrev |