The Wine development release 1.3.5 is now available.

What's new in this release (see below for details):
  - Support for animated cursors.
  - Printing directly through CUPS instead of lpr.
  - Installer fixes for Office 2010.
  - Many MSXML3 improvements.
  - Improved Shader Model 4 support.
  - Proper icons in built-in Internet Explorer.
  - Translation updates.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.5.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.5.tar.bz2

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

You can also get the current source directly from the git
repository. Check http://www.winehq.org/git for details.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

----------------------------------------------------------------

Bugs fixed in 1.3.5:

   5693  Chessmentor demo fails during startup
   6715  Text rendering problems in X-Change 3
   7835  Anno 1701 crash at startup
   9787  Warcraft3 Battle.net Doesn't work (Needs AcceptEx)
   9795  Russian business application 1C:Enterprise crashes
  10318  Hellgate London freezes
  10796  Problems with font and layout of InstallShield
  11354  Complex Shader Distance Error - EverQuest2.
  12468  winspool doesn't use CUPS ports, always uses lpr
  14529  Hellgate: London - Launcher cannot start the game
  15211  Inserting objects in Word 97 always trigger an ole error
  15263  Cannot install games in Steam (requires opening new iexplore window)
  16281  Support for animated cursors is not implemented
  16355  Zoo Tycoon Demo hangs while loading level
  16655  OpenOffice.org 3 installer ignores "Create a start link on desktop" option [dogfood]
  18671  Getting Error while Calling XMLHTTP  using VB6
  18842  Error with Procast (a moglus or livestream application)
  21034  8BallClub fails to launch due to unimplemented msxml functionality
  21192  Make fails with Assembler error on ARMv6
  21676  Plants vs Zombies is stretched on widescreen monitors
  21870  Steam 2010 beta UI can't purchase games
  22190  Roller Coaster Tycoon 3 cursor vanishes after a few minutes
  22894  Patch of PyLOTRo crashes
  23285  Animated mouse pointer invisible in 3D mode in Ice Cream Tycoon
  23286  Disconnected:  Server unable to authenticate Steam ID
  23412  ManyCam: Fails to start
  23427  Microsoft Visual C++ 2010 Redistributable Package crashes during installation
  23655  Heroes V : Cursor icon dissapears and makes game unplayable
  23656  Crystal Cubes requires native msxml3 to start
  23718  Medieval Conquest - game unplayable due to distorted / scrambled graphics
  23820  internet explorer 7 (ie7) crashes on start if cwd is not C:\Program Files\Internet Explorer
  23902  Games crash during audio initialization
  24131  Demoscene fr-041 debris leads to a heap corruption
  24145  Life Balance does not install (MsiNetAssemblySupport >"2.0.50727 not met)
  24185  Deadlock in vectored exception handling
  24242  MSXML2.XMLHTTP.3.0 can't GET
  24336  Spreadsheet-like input form uses wrong column size
  24468  GTA2: "gta2 manager.exe" crashes at startup
  24506  The Elder Scrolls 4 - Oblivion not displaying correctly
  24548  Zoo Tycoon Demo starts with black screen and white cursor
  24556  Built in applications crash when you click File -> Open in a directory beyond existing disk devices
  24568  PNG decoder can't decode some PNGs
  24588  64 bit issue within qsort()
  24589  Make NTDLL_mergesort() stable.
  24608  BiDi support broken for Arabic text
  24627  ProPresenter 4.0.0.1 for Windows doesn't startup
  24628  Crystal Cubes crashes on start
  24635  Chrome (game) crashes on start in msvcrt.dll
  24649  crash with certification path
  24654  windows codec installer fails
  24662  Plants vs Zombies is not smooth
  24672  Winamp cannot exit gracefully when winealsa is used
  24673  iexplore: Error when using SSL
  24714  ProteoWizard: Unhandled marshal type 7
  24722  LibreOffice 3.3.0 Beta misses msvcr90 func/var
  24726  Everquest 2 extended: solid blue color where waterfall should be in character select screen

----------------------------------------------------------------

Changes since 1.3.4:

Adam Martinson (5):
      msxml3: Stub domdoc_get_readyState().
      msxml3/tests: Tests for domdoc_validate().
      msxml3: Partial stub domdoc_validate().
      msxml3: XSLPattern support.
      msxml3: Prevent a memory leak if domdoc creation fails.

Akihiro Sagawa (4):
      cryptui: Add Japanese translation.
      inetcpl: Add Japanese translation.
      crypt32: Add Japanese translation.
      shell32: Update Japanese translation.

Alexandre Goujon (1):
      mshtml: Update the Gecko find procedure comment to reflect the latest behavior.

Alexandre Julliard (45):
      mshtml: Try installing Gecko from the global data dir too.
      user32: Don't rely on the cached position for windows that have a mirrored parent.
      server: Update child window positions when resizing a mirrored parent.
      winex11: Mirror the DC exposure region for RTL devices.
      advapi32/tests: Don't bother running HKCR tests when the registry key doesn't exist.
      cryptui: Fix incorrect use of the ScreenToClient function.
      shell32: Fix incorrect use of the ScreenToClient function.
      winefile: Fix incorrect use of the ScreenToClient function.
      comctl32/comboex: Fix incorrect use of the ScreenToClient function.
      comctl32/datetime: Fix incorrect use of the ScreenToClient function.
      comctl32/ipaddress: Fix incorrect use of the ScreenToClient function.
      comctl32/pager: Fix incorrect use of the ScreenToClient function.
      comctl32/progress: Fix incorrect use of the ScreenToClient function.
      comctl32/propsheet: Fix incorrect use of the ScreenToClient function.
      comctl32/toolbar: Fix incorrect use of the ScreenToClient function.
      comdlg32: Fix incorrect use of the ScreenToClient function.
      wine.inf: Add a few more common functions to be excluded from relay traces.
      winex11: Mirror the client rectangle if necessary for update_window_zorder.
      server: Valid rects are in parent coordinates.
      rpcrt4/tests: Fix a test failure on XP SP3.
      ntdll: Use the more portable cfsetospeed() function to set serial baud rate.
      user32: Make sure the driver CreateCursorIcon() entry point is always called.
      user32: Implemented GetIconInfoExA/W.
      user32/tests: Tests for GetIconInfoExA/W.
      user32: Convert the icon cache to a standard Wine list.
      user32: Get rid of the unused icon cache refcount.
      wininet: Load X509_STORE_CTX_get_ex_data from libcrypto not libssl.
      user32/tests: Test GetIconInfoExW too since the A version is broken on Win64.
      jscript: Add a missing terminator to a string constant.
      jscript: Remove an incorrect and unnecessary error check.
      user32: Store the module and resource name information for icons.
      user32: Return the module and resource name in GetIconInfoEx.
      user32: Reimplement icon copying using CURSORICON_Load.
      user32: Store icon objects directly in the cache instead of using a separate structure.
      user32: Make sure AdjustWindowRect and WM_NCCALCSIZE yield the same result for WS_EX_DLGMODALFRAME windows.
      user32: Correctly handle mouse events on a size grip scrollbar.
      gdi32: Improve tracing of GDI objects to make leaks easier to spot.
      user32: Fix a DC leak in DrawIconEx.
      user32: Improve error checking in GetIconInfo.
      user32/tests: Add more tests for DestroyCursor on the active cursor.
      user32: Fix destruction of the active cursor.
      comctl32: Use the appropriate color format when loading a DIB in ImageList_LoadImageW.
      uninstaller: Remove unneeded carriage return in resource string.
      winhlp32: Use a standard About dialog, with the proper icon.
      gdi32/tests: Make the test clipping window topmost to see if it helps.

Amine Khaldi (1):
      xcopy: Fix translations.

Anders Jonsson (3):
      cryptdlg: Add Swedish translation.
      inetcpl.cpl: Update Swedish translation.
      taskkill: Update Swedish translation.

Andrew Eikum (4):
      wininet: Clean up returned UrlPath for file protocol URLs.
      shlwapi/tests: Don't run tests on old shlwapi versions.
      cryptnet/tests: Use UrlCanonicalize to create a URL.
      shlwapi: Handle URL_WININET_COMPATIBILITY flag in UrlCanonicalize.

Andrew Nguyen (13):
      msvcrt/tests: Add tests for the __p__(w)environ accessors.
      msvcrt: Initialize _wenviron in Unicode environment getter function.
      crypt32: Avoid relying on PATH_MAX in import_certs_from_dir helper.
      taskkill: Disallow process self-termination.
      kernel32: Implement GetSystemRegistryQuota as a semi-stub.
      kernel32: Make the return type of LoadModule match the Windows SDK.
      winex11.drv: Use a separate string buffer for X11R6 font check.
      winex11.drv: Avoid relying on PATH_MAX in X11DRV_FONT_InitX11Metrics helper.
      msvcrt: Implement _localtime64_s.
      msvcrt: Use the write_invalid_msvcrt_tm helper in _gmtime64_s.
      msvcrt: Implement _localtime32_s.
      msvcrt: Implement _itoa_s.
      msvcrt: Implement _strlwr_s.

Andrew Talbot (4):
      explorerframe: Constify some variables.
      fusion: Constify some variables.
      gdi.exe16: Constify a variable.
      gdi32: Constify some variables.

André Hentschel (9):
      advapi32/tests: Introduce tests for the merged view of HKEY_CLASSES_ROOT.
      crypt32: Fix German translation.
      cryptui: Fix German translation.
      winedbg: Fix get_addr on ARM.
      winedbg: Implement adjust_pc_for_break on ARM.
      taskkill: Update German translation.
      setupapi/tests: Fix wow64 failures.
      msvcr90: Added __timezone implementation.
      dbghelp: Implement arm_get_addr.

Aric Stewart (15):
      strmbase: Initial creation of static strmbase library for Quartz and Quartz filters.
      strmbase: Add the EnumMediaTypes base implementation.
      strmbase: Move enumpins from quartz to strmbase.
      strmbase: Move BasePin implementation to strmbase.
      strmbase: Move OutputPin implementation to strmbase.
      strmbase: Move InputPin implementation to strmbase.
      usp10: When checking font for shaping the font needs at least 1 of the features but does not need all.
      strmbase: Implement BaseFilter in strmbase.
      strmbase: Add an implementation of BaseFilterImpl_EnumPins.
      strmbase: Move TransformFilter implementation to strmbase.
      strmbase: Move mediaSeeking to strmbase SourceSeeking.
      strmbase: Clean up the allocator negotiating for BaseOutputPin.
      strmbase: Standardize "class" function into functions tables in the structs.
      strmbase: Add GetMediaType and GetMediaTypeVersion to BasePin function table.
      strmbase: Remove non-standard custom allocator logic from strmbase.

Aurimas Fišeras (2):
      inetcpl.cpl: Update Lithuanian translation.
      taskkill: Update Lithuanian translation.

Austin English (6):
      iphlpapi: Remove stray code (clang).
      iphlpapi: Avoid using %n (clang).
      psapi/tests: Remove an ugly macro.
      psapi/tests: Macro cleanup.
      psapi/tests: Get rid of an ugly test macro.
      dbghelp: Fix compile on Hurd.

Austin Lund (7):
      comctl32/tests: Add tests for negative subitems independent of local settings.
      riched20/tests: Plug a few memory leaks and make failure messages more meaningful.
      advapi32/tests: Fix RegEnumValue overflow tests for broken behaviour on XP Pro Chinese.
      d3d9/tests: Fix test failure for IDirect3D9::CreateDevice in test_set_stream_source.
      riched32/tests: Correct error messages in EM_POSFROMCHAR tests.
      riched20/tests: Cleaned up ITextServices::TxGetNaturalSize test and fixed test failures.
      comctl32/tests: Fix ImageList tests for different device color depths.

Christian Costa (1):
      d3dx9: Constant table parsing foundations.

Damjan Jovanovic (3):
      winemenubuilder: Start shared desktop shortcuts through their .lnk files.
      windowscodecs: Load PNGs incrementally.
      comdlg32: Fix a stack overflow.

David Adam (1):
      ddraw/test: Add more combination tests for SetCooperativeLevels.

Detlef Riekenberg (8):
      winmm/tests: Set a struct member to 0 is obsolete after adding a memset.
      winspool: Remove unused code.
      comctl32: Dump a parameter in a TRACE.
      inetcpl: Make a TRACE more silent.
      include: Add mprerror.h from mingw w64.
      mprapi: Add a stub for MprAdminGetErrorString.
      winspool: Implement SetDefaultPrinterA/W.
      winspool: Use CUPS for printing.

Dmitry Timoshkov (3):
      comctl32: Postpone setting the property sheet focus until the tab control is initialized.
      kernel32: Truncate the reported by GlobalMemoryStatus() memory limits for Win9x versions too.
      oleaut32: Handle VT_DATE in serialize_param()/deserialize_param().

Eric Pouech (10):
      dbghelp: Allow loading PE module with 64bit addresses.
      dbghelp: Some more 64bit base address fixes.
      dbghelp: Added a couple of missing CodeView base types (used in 64bit compilation).
      dbghelp: A couple of fixes for 64bit msvc debug info compatibility.
      dbghelp: Only map an ELF file once.
      dbghelp: When enumerating loaded modules from r_debug structure, pass the address of the dynamic section as well.
      dbghelp: Compute ELF load address using the link_map ld's address (and get correct relocation computation).
      dbghelp: Fix some relocation errors for debug formats out of ELF files.
      dbghelp: Ensure the stab_nlist structure is usable on 64bit systems.
      dbghelp: Proper support and definition for S_REGREL_V3.

Erich Hoover (1):
      winex11: Add support for animated cursors in X11 driver.

Francois Gouget (2):
      mshtml: Add a space before ellipses in the Slovenian translation.
      shdocvw: Add a space before ellipses in the Slovenian translation.

Frédéric Delanoy (2):
      inetcpl.cpl: Update French translation.
      taskkill: Update French translation.

Gerald Pfeifer (2):
      msxml3: Use the existing READYSTATE type instead of creating our own enum READYSTATE (and mixing the two).
      user32: Removed some code that is unused after revision 751a09e9839d7273895df24666a0bb2fb51a29c7.

Hans Leidekker (21):
      msi: Put the uninstall key for 32-bit packages under Wow6432Node on 64-bit.
      msi: Remove a potentially noisy trace.
      msi: Validate packages based on supported version, platform and languages.
      msi: Add package validation tests.
      msi: Look at the requested action instead of the action taken in MSI_SetFeatureStates.
      msi Set the feature action to INSTALLSTATE_UNKNOWN if msidbFeatureAttributesUIDisallowAbsent is set.
      msi/tests: Fix some test failures on 64-bit.
      advapi32: Fix a buffer size query in LsaLookupSids.
      msi/tests: Determine Wow64 mode just once.
      msi/tests: Use a different product code in the automation tests.
      msi: Allocate 3 bytes instead of 2 for in-memory string references.
      msi/tests: Fix some test failures on 64-bit.
      msi/tests: Set the MSIFASTINSTALL property.
      msi/tests: Reduce the UI level for a couple of tests.
      msi: Register class ids from 32-bit packages under Wow6432Node on 64-bit.
      msi: Put keys from 32-bit packages starting with HLKM\Software under Wow6432Node on 64-bit.
      msi: A commit or rollback custom action can be a deferred action at the same time.
      msi: Store action data for deferred rollback actions too.
      msi/tests: Don't create a nested restore point on recent versions of MSI.
      programs: Add a stub implementation of aspnet_regiis.exe.
      msi/tests: Move test coverage for standard actions to a separate module.

Henri Verbeet (40):
      ddraw: Remove another hack.
      wined3d: Set the depth/stencil buffer to NULL before releasing it.
      wined3d: Acquire / release the focus window during reset.
      d3d8/tests: Add window proc tests for switching between fullscreen and windowed.
      d3d9/tests: Add window proc tests for switching between fullscreen and windowed.
      wined3d: Recognize the SM4 loop opcode.
      wined3d: Recognize the SM4 and opcode.
      wined3d: Recognize the SM4 frc opcode.
      wined3d: Recognize the SM4 mad opcode.
      wined3d: Recognize the SM4 movc opcode.
      wined3d: Allow multiple shader instruction destination arguments.
      wined3d: Recognize the SM4 NULL register type.
      wined3d: Recognize the SM4 imul opcode.
      wined3d: The SM4 sincos opcode has two destination arguments.
      wined3d: SM4 immediate constants are typeless.
      wined3d: Recognize the SM4 itof opcode.
      wined3d: Recognize the SM4 sample opcode.
      wined3d: Recognize the SM4 sample_l opcode.
      wined3d: Recognize the SM4 utof opcode.
      wined3d: Add traces to IWineD3DDeviceImpl_AcquireFocusWindow() / IWineD3DDeviceImpl_ReleaseFocusWindow().
      ddraw: Use a linear filter in ddraw_surface7_Blt().
      wined3d: Recognize the SM4 sampler register type.
      wined3d: Recognize the SM4 resource register type.
      wined3d: Skip SM4 source register modifiers.
      wined3d: Skip SM4 instruction modifiers.
      wined3d: Recognize the SM4 div opcode.
      wined3d: Recognize the SM4 ftoi opcode.
      wined3d: Recognize the SM4 ieq opcode.
      wined3d: Recognize the SM4 ld opcode.
      wined3d: Recognize the SM4 ABS and NEG source modifiers.
      wined3d: Recognize the SM4 sample_d opcode.
      d3d10core: Implement device_parent_CreateVolume().
      d3d10core: Rename texture2d.c to texture.c.
      d3d10core: Add a stub ID3D10Texture3D implementation.
      wined3d: Consistently use Map/Unmap for mapping resources.
      wined3d: Flip destination coordinates when blitting to an offscreen target in BltOverride().
      wined3d: IWineD3DBuffer_Unmap() can't fail.
      d3d10core: Implement ID3D10Buffer::Unmap().
      d3d10core: Implement ID3D10Buffer::Map().
      d3dcompiler: Remove some stray tabs.

Hwang YunSong (3):
      inetcpl.cpl: Update Korean resource.
      kernel32: Update Korean resource.
      taskkill: Update Korean resource.

Jacek Caban (25):
      mshtml: Try installing Gecko from hardcoded '/usr/share/wine/gecko/' location.
      mshtml: Use URLDownloadToFile to download Gecko package file.
      urlmon: Added Abort implementation to wininet-based protocols.
      urlmon: Added Abort tests.
      urlmon: Added Abort support to BindProtocol.
      include: Added d3d10_1.idl.
      urlmon: Return correct error in get_protocol_handler for unknown protocol types.
      urlmon: Report error on synchronous bindings that don't have a cache file and are not read in callback.
      mshtml: Report better status in on_stop_nsrequest.
      mshtml: Moved more code to handle_docobj_load.
      urlmon: Added IBinding::Abort implementation.
      urlmon: Use existing callback holder in RegisterBindStatusCallback if already exists.
      urlmon: Use default binding callback if no callback is provided.
      urlmon: Added IBinding::Abort and binding without callback tests.
      urlmon: Added support for sending post data from stream.
      urlmon: Added post data stream tests.
      urlmon: Added IInternetProtocolEx support to http protocol handler.
      urlmon: Added IInternetProtocolEx support to ftp protocol handler.
      urlmon: Skip more tests on too old IEs.
      shlwapi: Skip more tests on too old shlwapi.dll.
      mshtml: Added nsIHttpChannel::VisitResponseHeaders implementation.
      msxml3: Don't use xmlnode's IXMLDOMNode iface in replaceChild implementations.
      mshtml: Fixed the first ReportData invocation when binding from objects created by BindToObject.
      jscript: Don't lookup global variables on function invocation.
      exdisp.idl: Added missing declarations.

James McKenzie (1):
      gdi32: Correct typo in comment.

Jeff Cook (2):
      winealsa.drv: Only set micelem as master if there are no other elems on this card.
      winealsa.drv: Rewrite channel counting for additional readability and circumvention of a couple of crashes.

Jeff Latimer (2):
      iphlpapi: Use Windows rather than Unix values to determine family.
      comctl32: Change stub to return IDYES instead of IDOK.

Jeremy Drake (3):
      oleaut32/tests: Added tests for negative fractional variant dates.
      oleaut32/tests: Test conversion of ambiguous DATE values.
      oleaut32: Fix handling of negative fractional variant dates.

Joel Holdsworth (3):
      windowscodecs/tests: Added test for GifFrameDecode_GetResolution.
      windowscodecs: Implemented GifFrameDecode_GetResolution.
      shdocvw: Replaced iexplore.bmp with a tango compliant toolstrip.

Juan Lang (30):
      cryptui: Remove redundant close line.
      cryptui: Check whether caller called WinVerifyTrust when deciding whether to call it.
      winhttp: Let CertVerifyCertificateChainPolicy handle certain security flags.
      include: Define a few missing CERT_TRUST error and info flags.
      include: Define a couple more CERT_CHAIN_POLICY flags.
      crypt32/tests: Add more tests of verifying the base policy, including flags to ignore certain errors.
      crypt32: Improve error checking for the base policy.
      crypt32/tests: Test invalid critical extension in intermediate cert.
      crypt32/tests: Test the base and SSL policies against a certificate with an invalid critical extension.
      crypt32: Set CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT when appropriate.
      crypt32/tests: Add name to test to help identify test failures.
      crypt32/tests: Add macros to declare tests.
      crypt32: Set correct error when encountering unsupported critical extensions in the base and SSL policy.
      crypt32/tests: Fix test failures on NT4/Win9x.
      crypt32/tests: Fix more Win9x failures.
      crypt32/tests: Add name to test to help identify test failures.
      crypt32/tests: Fix another test failure on Win98.
      crypt32/tests: Test OpenSSL chain separately to address test failures on Win98.
      cryptui: Don't crash displaying a certificate hierarchy when the certificate's signer isn't found.
      ipconfig: Specify GAA_FLAG_INCLUDE_ALL_GATEWAYS when calling GetAdaptersAddresses.
      iphlpapi: Only return gateway addresses if GAA_FLAG_INCLUDE_ALL_GATEWAYS is specified.
      iphlpapi: Honor GAA_FLAG_SKIP_UNICAST.
      iphlpapi: Honor GAA_FLAG_SKIP_FRIENDLY_NAME.
      iphlpapi: Set DNS servers in GetAdaptersAddresses when GAA_FLAG_SKIP_DNS_SERVER isn't specified.
      iphlpapi: Use a helper function to get the DNS server list.
      iphlpapi: Set DNS servers in the IP_PER_ADAPTER_INFO returned for non-loopback addresses.
      iphlpapi: Return DNS suffix for all non-loopback adapters.
      wintrust: Get time to verify from cryptographic message when present.
      crypt32: Use A functions for debug string that's only used as an ASCII string.
      crypt32: Trace time value in addition to address of time value.

Krzysztof Nowicki (1):
      ntdll: Fix possible deadlock in vectored exception handling.

Laura Leinonen (1):
      comdlg32: Update Finnish translation.

Louis Lenders (5):
      fusion: Add version resource.
      wine.inf: Add a fake fusion.dll.
      user32/tests: Test FindWindowEx for empty window title.
      advapi32: Add stub for QueryTraceW.
      gameux: Improve stub for GameExplorerImpl_VerifyAccess.

Luca Bennati (2):
      inetcpl.cpl: Update Italian translation.
      taskkill: Update Italian translation.

Maarten Lankhorst (7):
      quartz: Handle passthru calls better.
      quartz: Add MediaSeekingPassThru to video renderer.
      quartz: Use MediaSeekingPassThru for DirectSound renderer.
      quartz: Add support for MediaSeekingPassThru to null renderer.
      quartz: Add support for MediaSeekingPassThru to transform filter.
      quartz: Remove forwarding from base class.
      quartz: Add additional notifications to transform filter.

Marko Nikolic (2):
      cabinet/tests: Removed sign comparison warnings.
      comctl32/tests: Removed sign comparison warnings.

Matteo Bruni (4):
      wined3d: Keep track of texture transformation states in compiled pixel shaders.
      d3dx9/tests: Fix a shader test failure.
      d3dcompiler: Don't store instruction length in DEF opcode in PS 1.x.
      d3dcompiler: Accept dot terminated float immediate values.

Nick Bowler (1):
      dsound: Restore old format on SetFormat failure.

Nikolay Sivov (21):
      msxml3: Add basic bind callback for moniker binding.
      comctl32/toolbar: Properly handle invalid arguments processing TB_ADDSTRING message.
      comctl32/listview: Use actual edit box contents to calculate initial control size.
      comctl32/treeview: Prevent item height to be calculated to zero value.
      comctl32/tab: Fix DRAWITEMSTRUCT filling when extra item data of a custom size is used.
      msxml3: Store user defined request headers on transaction beginning.
      msxml3: Silence more failed urlmon interface queries.
      msxml3: Implemented ::get_status().
      msxml3: Don't fail trying to set NewParser property.
      msxml3: Accept versioned XMLHTTP CLSIDs.
      msxml3: Implement ready state change callback.
      msxml3: Store response data in a stream.
      msxml3: Implement ::get_responseText() for UTF-8 and UTF-16 (little endian) response encoding.
      msxml: Register XMLHTTP objects.
      msxml3: Implement ::abort().
      msxml3: Callback only if state really changed.
      msxml3: Implement ::get_responseBody().
      msxml3: Implement ::get_responseXML().
      shlwapi/assoc: Fix arguments tracing.
      msxml3: Implement POST support with supplied body data.
      msxml3: Fix response text conversion to WCHAR string.

Paul Vriens (2):
      notepad: Add WS_EX_LAYOUTRTL to some RTL resources.
      taskmgr: Remove a useless commented line.

Piotr Caban (8):
      urlmon: Added ProtocolStream_Stat implementation.
      shlwapi: Improved SHGetShellKey implementation.
      shlwapi: Added SKAllocValueW implementation.
      shlwapi: Added SKDeleteValueW implementation.
      shlwapi: Added SKSetValueW implementation.
      shlwapi/tests: Add more tests.
      msvcr90: Added __tzname implementation.
      jscript: Added more safety options flags handling to create_activex_object.

Reece Dunn (2):
      jscript: Throw TypeError if T in 'new T' is not an object.
      jscript/tests: Add tests for ActiveScriptSite_OnScriptError and IActiveScriptError.

Rico Schüller (29):
      d3dcompiler: Add D3DGetBlobPart() stub.
      d3dcompiler: Implement D3DGetBlobPart().
      d3dcompiler: Implement D3DGetInputSignatureBlob().
      d3dcompiler: Implement D3DGetOutputSignatureBlob().
      d3dcompiler: Implement D3DGetInputAndOutputSignatureBlob().
      d3dcompiler: Implement D3DGetDebugInfo().
      d3dcompiler: Add D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB to D3DGetBlobPart().
      d3dcompiler: Add D3D_BLOB_ALL_SIGNATURE_BLOB to D3DGetBlobPart().
      d3dcompiler: Add D3D_BLOB_LEGACY_SHADER to D3DGetBlobPart().
      d3dcompiler: Add D3D_BLOB_XNA_PREPASS_SHADER to D3DGetBlobPart().
      d3dcompiler: Add D3D_BLOB_XNA_SHADER to D3DGetBlobPart().
      d3dcompiler: Implement D3DStripShader().
      d3dcompiler/tests: Add D3DGetBlobPart() test.
      d3dcompiler/tests: Add D3D_BLOB_INPUT_SIGNATURE_BLOB test.
      d3dcompiler/tests: Add D3D_BLOB_OUTPUT_SIGNATURE_BLOB test.
      d3dcompiler/tests: Add D3D_BLOB_INPUT_AND_OUTPUT_SIGNATURE_BLOB test.
      d3dcompiler/tests: Add D3D_BLOB_PATCH_CONSTANT_SIGNATURE_BLOB test.
      d3dcompiler/tests: Add D3D_BLOB_ALL_SIGNATURE_BLOB test.
      d3dcompiler/tests: Add D3D_BLOB_DEBUG_INFO test.
      d3dcompiler/tests: Add D3D_BLOB_LEGACY_SHADER test.
      d3dcompiler/tests: Add D3D_BLOB_XNA_PREPASS_SHADER test.
      d3dcompiler/tests: Add D3D_BLOB_XNA_SHADER test.
      d3dcompiler/tests: Add D3DStripShader() test.
      d3dcompiler/tests: Add D3DCOMPILER_STRIP_DEBUG_INFO test.
      d3dcompiler/tests: Add D3DCOMPILER_STRIP_REFLECTION_DATA test.
      d3d10: Forward D3D10GetInputSignatureBlob() to d3dcompiler.
      d3d10: Forward D3D10GetOutputSignatureBlob() to d3dcompiler.
      d3d10: Forward D3D10GetInputAndOutputSignatureBlob() to d3dcompiler.
      d3d10: Forward D3D10GetShaderDebugInfo() to d3dcompiler.

Rudolf Mayerhofer (2):
      ntdll: Set CPU_FEATURE_HTT when running on a HTT capable system.
      include: Add information class SystemLogicalProcessorInformation.

Stefan Dösinger (2):
      ddraw: Don't try to enumerate WINED3DFMT_R8G8B8A8_SNORM.
      ddraw: Handle WINED3DFMT_R16G16_SNORM.

Stefan Leichter (2):
      setupapi: Add partial implementation of SetupDiGetINFClassW.
      setupapi: Implement SetupDiGetINFClassA on top of SetupDiGetINFClassW.

Stefan Oberhumer (6):
      ntdll: Fix 64 bit issue within NTDLL_mergesort().
      ntdll: Make NTDLL_mergesort() stable.
      ntdll: qsort: Check if necessary to sort.
      ntdll: qsort: Comparator must not get the same pointer.
      ntdll: Fix possible overflow computing middle in NTDLL_mergesort().
      ntdll/tests: Add some more tests for qsort().

Sven Baars (2):
      ipconfig: Update the Dutch translation.
      inetcpl.cpl: Update the Dutch translation.

Thomas Mullaly (8):
      urlmon: validate_fragment works better if it actually calls parse_fragment instead of parse_query.
      urlmon: Implemented functionality for generating raw URI string of a IUriBuilder.
      urlmon: Restructured how ports are canonicalized.
      urlmon: Restructured how the path component is validated in a IUriBuilder.
      urlmon: canonicalize_path_hierarchical should prepend a '/' if needed.
      urlmon: Implemented canonicalization of IUriBuilder components.
      urlmon: Fixed memory leak in error path of CreateUri.
      include: Added missing declaration for CreateIUriBuilder.

Trygve Vea (5):
      crypt32: Updated Norwegian translation.
      cryptdlg: Updated Norwegian translation.
      user32: Updated Norwegian translation.
      wineboot: Updated Norwegian translation.
      wineps.drv: Updated Norwegian translation.

Vincent Povirk (15):
      include: Add declaration for ICLRMetaHost.
      mscoree: Stub CLRCreateInstance.
      mscoree: Add test for creating CLRMetaHost.
      include: Add definition of ICLRRuntimeInfo.
      mscoree: Add a test that enumerates .NET runtimes.
      fusion: Return the path from IAssemblyCacheImpl_QueryAssemblyInfo.
      mscoree: Add stub implementation of ICLRMetaHost.
      mscoree: Implement ICLRMetaHost_GetVersionFromFile.
      mscoree: Implement ICLRMetaHost_EnumerateInstalledRuntimes.
      mscoree: Implement ICLRRuntimeInfo_GetInterface.
      mscoree: Add test for ICLRMetaHost_GetRuntime.
      aclocal: Detect the mingw variant named amd64-mingw32msvc.
      mscoree: Implement ICLRMetaHost_GetRuntime.
      mscoree: Implement ICLRRuntimeInfo_GetRuntimeDirectory.
      mscoree: Use the new Mono runtime search code in GetRequestedRuntimeInfo.

Yaron Shahrabani (19):
      winhlp32: Add Hebrew translation.
      appwiz.cpl: Added Hebrew translation.
      shdocvw: Added Hebrew translation.
      comctl32: Added Hebrew translation.
      shell32: Added Hebrew translation.
      browseui: Added Hebrew translation.
      regedit: Hebrew translation fix.
      wininet: Added Hebrew translation.
      credui: Added Hebrew translation.
      taskmgr: Added Hebrew translation.
      uninstaller: Added Hebrew translation.
      winhlp32: Hebrew translation fixed.
      setupapi: Added Hebrew translation.
      winspool: Added Hebrew translation.
      localui: Added Hebrew translation.
      regedit: Updated Hebrew translation.
      inetcpl: Added Hebrew translation.
      kernel32: heb.nls: Made some corrections.
      mapi32: Added Hebrew translation.

--
Alexandre Julliard
julliard@winehq.org
