branch-info.txt for GWT 1.5 release:
Tracks interactions between this branch and other branches. 
See: http://code.google.com/p/google-web-toolkit/wiki/ManagingMerges

Copies:
/releases/1.5/ was created (r2940) as a straight copy from /trunk/@r2939
/tags/1.5.0 was created (r2959) as a straight copy from /releases/1.5/@r2941

Merges:
/releases/1.5/@r2940:2941 was merged (r2942) into /trunk/
/releases/1.5/@r2941:2990 was merged (r2992) into /trunk/
/trunk c2986 was merged (r2991) into this branch
/releases/1.5/@r2991:2994 was merged (r2998) into /trunk/, skipping c2991
/releases/1.5/@r2994:3048 was merged (r3050) into /trunk/
/releases/1.5/@r3048:3078 was merged (r3079) into /trunk/
/releases/1.5/@r3078:3125 was merged (r3126) into /trunk/
/releases/1.5/@r3125:3170 was merged (r3173) into /trunk/
/releases/1.5/@r3170:3188 was merged (r3202) into /trunk/
/releases/1.5/@r3188:3205 was merged (r3206) into /trunk/
/trunk c3005,c3008,c3098,c3180 were merged (r3231) into this branch.
/trunk c2990 was merged (r3240) into this branch
/releases/1.5/@r3205:3230 was merged (r3351) into /trunk/
/releases/1.5/@r3231:3239 was merged (r3351) into /trunk/, skipping c3231
/releases/1.5/@r3240:3341 was merged (r3351) into /trunk/, skipping c3240
/releases/1.5/@r3341:3372 was merged (r3376) into /trunk/
---> The next merge into trunk will be 3372:????

Changes in this branch (excluding changes to this file itself):
- Fixed random JUnit timeouts occurring on module transition. (r2941)
- Updated some machine-translated strings in Showcase with better ones. (r2958)
- TreeItem background color in Mail (r2968)
- Expanded height/width of themed repeating border images to make IE7 run faster (r2969)
- Animation speedups to PopupPanel & TreeItem (r2970)
- Memory leak fix related to selection script typo (r2981)
- Added a .gwt-Frame CSS style to the Frame widget (r2982)
- Fixed typos in gwt-module.dtd (r2987)
- Fixed an RPC bug with Vector (r2988)
- Fixed an RPC error that would cause some types to be erroneously considered non-serializable (r2989)
- Fix for nullField replacements causing an unexpected type change / invalid AST by allowing JFieldRefs to override the type of the referenced field (r2991)
- Change to Pruner such that volatile fields are rescued when assigned to (r2991)
- Fixes ResourceOracleImpl in cases where nested logical packages exist (r2994)
- Showcase layout tweak (r2995)
- Showcase code cleanup (r2996)
- Theme changes to PushButton/ToggleButton to visually show clicking with a 1px down/right shift (r2997)
- Showcase fast-path on example clicks instead of waiting on history to fire (r2997)
- Showcase detects stylesheet loads now to avoid jiggle when changing styles (r2997)
- Adding missing 'final' modifier to GWTTestCase.tearDown() (r3000)
- Build fix to produce javadoc for GWTTestSuite (r3012)
- DecoratedPopupPanel correctly attaches its inner DecoratorPanel and children (r3013)
- Added "gwt-Frame" style to NamedFrame (r3015)
- Removed unused "propertieschanges.txt" file from Showcase sample (r3016)
- Fixed a bug in PopupImplIE that could cause the hidden iframe behind a popup to be larger than the popup (r3017)
- JUnit gives better error messages when the test class did not make it into TypeOracle (r3018)
- Fixes for stats, including making stats available in hosted mode (r3020)
- Accept jars and zips on classpath even without correct extension (r3024)
- Fixed incorrect declaration of Collections.EMPTY_LIST etc (r3030)
- Removed bogus System.out.println() from DOMImpl.isMyListener() (r3032)
- Linux hosted mode bugfix with multiple field reads on Java objects from JSNI (r3035)
- Mac OS X foreign GC crash fix (r3036)
- Static eval bug with floating point vs. integral math (r3040)
- History token bug on IE (r3042)
- RPC bugfix related to implementing a parameterized interface (r3044)
- MenuBar animation exception when page refreshed while menus open (r3045)
- Showcase textual tweaks (r3046)
- Reverted a change that was not meant to be commited with (r3047)
- Provide better error messages when we can't initialize the native parts of hosted mode (r3048)
- HashMap was failing to add keys that were not passing a JS hashCode == parseInt(hashCode) test (r3049)
- Fixes potential compiler errors by making sure all indexed types are compiled (r3052)
- Add TabPanel.setAnimationEnabled method (r3054)
- New Showcase locale icon (r3055)
- DeckPanel now calls setVisible(true) on the Widget that is currently being displayed (r3056)
- JsToStringVisitor could fail to emit a required semi in obfuscated mode on an if-else chain ending with an empty else (r3058)
- Remove unimplemented subList methods so failures will be at compile time rather than runtime, clean up other UnsupportedOperationException messages (3061)
- our internal Object.typeMarker and Object.typeId fields prevented users from shadowing them correctly in web mode with the same identifiers in subclasses (r3062)
- Fixes issue #1678 by passing the appropriate sender and insisting on sender type being FormPanel (r3063)
- Removed spurious System.err print from test code (r3064)
- Fix issue 2496 - the generator needed to be updated to properly support ConstantsWithLookup with generic types (r3065)
- Use of EnumSet in some cases could cause a compiler ICE (r3067)
- Removed redundant styles from css template (r3068)
- When inserting a call to nullMethod(), the type of the call was previously always set to the null type (r3069)
- Rearranged the UIObject.ensureDebugID methods so users can override the default implementation using a deferred binding (r3070)
- Fixes a NPE in JSORestrictionsChecker that could be triggered by attempting to validate a unit with errors (3072)
- Autoboxing was not handled correctly when a box type was used with ++, --, or a compound assignment such as += (r3073)
- "gwt.nowarn.metadata" was doing the opposite of what it should. (r3074)
- Add missing JRE pieces, fix long sort bug, add test for long sort (r3075)
- Wrapper types that are not used in a program are not present, so don't rely on being able to look up all wrapper types (r3076)
- Generate currency data at compile time rather than runtime (r3077)
- Some Java compilers allow "aByte+= 1" where aByte is of type Byte.  Others do not. (r3078)
- Fix a bug where Safari 3 does not correctly calculate the value of DOM.getAbsoluteLeft(elem). Issue 1711. (r3082)
- Fix a broken test in DOMTest related to getAbsoluteTop and getAbsoluteLeft. (r3083)
- Add support for wrapping existing DOM elements using wrap() methods. Also added InlineLable, InlineHTML, SimpleRadioButton, SimpleCheckbox widgets.Issues 1544, 2289, and 2291 (r3085)
- Add support for the standard 'contextmenu' event to the DOM layer. (r3086)
- Add the ability to set a tab's text and html after it has been created. Issue 661. (r3087)
- Fix javadoc for Anchor to say "href" instead of "target history token". (r3088)
- Patch for breaking TabBarTest.java. (r3089)
- Modified DOM.eventGetClientX/Y to account for margins and borders on the HTML element in Safari 2 and Firefox. Issue 1932. (r3090)
- Got rid of an unused import error in HTMLPanel. (r3091)
- Fix issue 2543 by relaxing an overly strict assertion in LongEmulationNormalizer.(r3092)
- Fixes issue 934 (History.newItem() broken on Opera), and issue 2550 (HistoryImplStandard uses function argument rather than string) (r3094)
- JUnit issues fixed: NPEs when client module load fails, content type on loadError XHR not valid, BenchmarkStrategy threw CCE in some cases (r3097)
- Added caching for allTypes (r3098)
- Prune PerfLogger output to make it more readable. (r3099)
- Run perflogger around all generators; removed specific perflogger calls from GWTRunnerGenerator. (r3100)
- PerfLogger twiddling in CompilationState and JdtCompiler. (r3101)
- Added javadoc and an assertion to CompilationUnit. (r3102)
- Fixes a refresh bug introduced in r3100:r3103. (r3104)
- Implements a lightweight set of JsArray classes for dealing with primitive arrays and JSON structures containing other JSOs. (r3106)
- Remove checkstyle error on HistoryImplOpera and make package protected. (r3108)
- Add assertions to all DOM.eventGetXXXmethods on the attribute being retrieved. issues 2556, 1667. (r3109)
- Fixes clientHeight and clientWidth for Opera 9.5 standards mode. (r3115)
- Protects a number of new global identifiers from being redefined by the compiler. Issue 2578. (r3117)
- Exposes an immutable map of the query parameters to allow calling Window.Location.getParameterMap(). Issue 2211 (r3118)
- Fixes an unguarded reference to window.external that's causing problems with certain IE plugins and hosting environments (e.g. SWT). (r3119)
- Changes Anchor and SimpleCheckBox to extend FocusWidget. (r3120)
- Opera 9 doesn't need to use FocusImplOld anymore. (r3121)
- Improve long RPC serialization performance by transmitting the long as its internal representation of two doubles. (r3122)
- Fixes for broken Anchor tests. (r3123)
- Updated the algorithm used for computing the set of serializable types. (r3124)
- Introduces a new public class, GWTMockUtilities, aimed at allowing developers to mock out GWT Widgets in JUnit tests. (r3125)
- gwt-servlet.jar was failing to include benchmarks classes (r3135)
- NPE in Arrays.hashCode(Object[]) when array contained a null (r3140)
- Fix for how i18n searches for resources (r3142)
- CustomButtom tripping invalid assertions on mouse events (r3149)
- TreeMap can now be constructed with a null comparator (r3152)
- Many widgets now have accessible protected constructors for subclassing that can take existing elements (r3158)
- Fix for a startup bug that would affect certain apps in IE when using the Cross-site Linker (r3163)
- Fix for an NPE in hosted mode when using a static entry point (r3165)
- Fixes several potential compiler crashes related to invalid types on temporary locals (r3166)
- Fixes a potential NPE in STOB logging (r3167)
- Fixes a code generation bug for a switch statement when a final default case ends with a labelled break statement (r3168)
- Fixes  missing javadoc for two methods; Adds setCapture() and releaseCapture()delegates to DOM (r3171)
- Adds to FormPanel the ability to wrap an existing form, and still create a synthetic IFrame (r3178)
- De-flakify ImageTest by removing most timers and loosening up the timing constraints (r3181).
- Fix sort order of new method (r3183)
- Opens up PopupPanel.hide(Z) (r3184)
- Modify PushButton and ToggleButton styling for the "dark" style (r3185)
- Fix for issue 2512. Widgets that inherit from CustomButton should only respond to left mousedown/up (r3186)
- Fix excessive stack use while parsing consecutive comment lines (r3187)
- Reverts DOM.getIntStyleAttribute() to its original js implementation (r3188)
- Fixes occasional exception in IE popups (issue 2656) (r3200)
- DOM.getIntStyleAttribute() should be static.  Fixes checkstyle errors too. (r3201)
- Fixes for issues 2278 (Replacing calls to getBoxObjectFor() on FF3), 1556 (getAbsoluteLeft/Top() for Opera fails) (r3204)
- Fix some more checkstyle errors in WidgetSubclassingTest (r3205)
- Refactor history to fix exception problems and fix issue 99 (r3234-3236)
- Fix Window.Location on IE (r3239)
- Merge in r2990 from trunk, which fixes GWT.isClient for mocking (r3240)
