The Wine development release 1.3.1 is now available.

What's new in this release (see below for details):
  - Support for drag & drop between X11 and OLE.
  - New ipconfig.exe builtin tool.
  - Support for favorites in builtin Internet Explorer.
  - Beginnings of a shell Explorer control.
  - A number of DirectDraw code cleanups.
  - Improvements to the calendar control.
  - Various bug fixes.

The source is available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.1.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-1.3.1.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.1:

   3975  FILE: printing does not work as expected
   5779  Corrupted Graphics in Tropico / Tropico Paradise Island
   6580  Mia's Math crashes on startup if you have saved a game
   6869  Need for Speed Carbon wont install due to detecting Wine as having DirectX 0
   7575  Corel Lightning demo installer hangs
   9724  Intellicad - Unhandled exception when saving
  10815  Drag from native apps, drop to Wine doesn't work
  11067  Kid Pix Deluxe 4 Home Edition installer hangs near end
  11539  Anycount 6.0 refuses to start (VMWare backdoor check, magic 0x564D5868 on port 0x5658)
  12269  DirectX 6 SDK d3dim sample programs fail
  12710  Call of Duty 2 1.02: Game hangs up after several seconds
  12720  Text missing in Miranda's "View/Change My Details" dialog
  12874  The Master Genealogist 4.0d - Unhandled page fault on write access
  12977  Kid Pix Deluxe 4 Home Edition crashes if you click on Backgrounds
  13265  winepath exit always with zero code
  13690  failed to crosscompile dbghelp.dll (dogfood)
  14101  DirectX update takes very long time to complete
  15011  ooVoo: Interface isn't drawn correctly, is unusable.
  15370  DX-applications (mostly games) do not render shadows correctly
  15482  iTunes 8.0.2.20 fails while sign in to iTunes Store
  15957  GRLevelX Images Hidden
  16211  DC++ .707 fails to run, throws an unhandled exception
  16378  Mia's Math sound regressions
  16413  Ignored return values
  16450  EssentialPIM: Doesn't restore from tray
  17084  .NET 1.0: imagehlp.ImageGetDigestStream needs more flesh (assembly registration fails)
  17435  AntiDupl: crashes when duplicated images founded
  17699  World In Conflict 1.010: New launcher crashes preventing application usage
  17704  Seamonkey 2.0b1pre not drawing images
  18149  msvcrt.dll.??2@YAPEAX_K@Z is not implemented
  18165  dlls/winhttp/net.c: assignment discards qualifies from pointer target type
  18170  regedit should accept CR-separated lines
  18365  Shareaza uses 100% CPU when not minimized
  18401  Cars won't be renderer with PC3 shaders
  18955  SupremeCommander: GPGNet fails to install
  19093  Canon DPP: Editor window quits unexpectedly when zooming to 100%
  19245  GPUZ crashes on unimplemented hal and ntoskrnl APIs
  19276  Internet Explorer 1.0 fails to install
  19414  Excel 2003 & 2007 crash trying to run macros
  19529  .NET 2.0: LDAP authorization fails
  19849  Links 2003 does not run
  19867  Active Identity installation crashes due to unimplemented function winscard.dll.SCardListCardsA
  20001  Unimplemented function ntdll.dll.NtQuerySystemEnvironmentValue
  20429  X3 Terran Conflict (v 2.5) - intermittent cursor problems
  20443  EslWire: crash at start (dwmapi.DwmDefWindowProc is not implemented)
  20828  InstallUtil.exe fails on "Appraise It" setup
  20864  Tropico 3 1.09 crashes in-game after several seconds
  21027  Lego Digital Designer hangs on startup
  21568  advapi32/crypt tests crash with +heap
  22121  EVEMon (v1.3.1.2138): crashes on adding an account
  22131  CDBurnerXP 4.3.x: arrow buttons do not appear correctly
  22277  Pool Sharks requires implemented GdipSetImageAttributesWrapMode
  22504  Bioshock: fog renders red
  22540  CMake hangs when trying to detect and test MinGW compiler (gcc.exe & g++.exe)
  22574  Blockland v14 freezes on startup
  22605  Open R-Community Tools crashes (SafeNativeMethods.SelectObject Exception)
  22881  Custom-decorated windows not movable with Openbox (affects steam, wow...)
  22958  Missing disc icon on CDBurnerXP's progress dialog
  23014  InstallShield .prq doesn't find Windows Installer 4.5
  23385  NVIDIA Demo: Cascades needs unimplemented function d3d10.dll.D3D10ReflectShader
  23477  WoW Cataclysm Beta needs KERNEL32.SetFileValidData
  23701  Crucial Memory Application - CrucialScan.exe
  23705  Runes of Magic says it can't log in if ConnectEx not available
  23707  stack overflow when destroying a window whose owner is itself
  23753  3D Sexvilla 2 : Installs but doesn't launch.
  23754  Kintecus: missing ipconfig.exe
  23801  Need for Speed: Shift Demo has partly transparant pit crew
  23818  Adobe FrameMaker 8: crashes on exit
  23834  Black Buccaneer: game freezes at start
  23848  Unable to build a shared WoW 64 build
  23849  Hofmann photo album app has access violation dialog during startup
  23879  Mopsos does not start
  23885  Build fails in dlls/d3dx9_36/tests
  23904  Starcraft II game screens are rendered upside-down
  23908  regedit fails to process some registry files
  23935  Can't install video conferencing program from NanoCorp
  23940  SetWindowPos does not work for other process windows
  23953  qemu.exe exhausts file descriptors
  24046  Keypressing in listview can result in infinite hang
  24047  Chessmaster Grandmaster Edition crashes
  24054  Unreal Tournament fails to start

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

Changes since 1.3.0:

Alexander Nicolaysen Sørnes (9):
      shdocvw: Add Favorites menu to IE.
      shdocvw: Allow navigating to Favorites in IE.
      shdocvw: Recurse into directories when adding Favorite in IE.
      shdocvw: Add a toolbar to IE.
      shdocvw: Make the Home button in IE work.
      shdocvw: Add icons to the IE toolbar.
      shdocvw: Allow the addressbar text in IE to be localized.
      shdocvw: Add View menu to IE with list of installed toolbars.
      mshtml: Send more informative messages to OleInPlaceFrame.

Alexandre Goujon (1):
      atl: Fix AtlAxAttachControl wine check.

Alexandre Julliard (15):
      configure: Add dependency on makefile for import libs to make sure the destination directory is created.
      winex11: Sending a move/resize client message to the root requires a SubstructureRedirect mask too.
      winebuild: Copy the strmake function from winegcc to simplify string formatting.
      winebuild: Support an arbitrary number of temporary files.
      winebuild: Add a spawn() helper function to avoid starting a shell where possible.
      winebuild: Get rid of the ignored symbol support.
      winegcc: Add a printf format attribute to the strmake() function.
      winemenubuilder: Rename some variables to reflect the fact that we no longer use XPM format.
      shdocvw: Fix an incorrect const typecast.
      makefiles: Add dependencies for cross-compiled objects in static libraries.
      configure: Check that the cross-compiler that we found actually works.
      d3dx9: Fix some incorrect const typecasts.
      explorer: Only run the systray timer when a systray icon is present.
      configure: Require autoconf 2.62, older versions don't handle source dir symlinks correctly.
      winhttp: Make WinHttpQueryHeaders behave the same way for all query types.

Anders Jonsson (16):
      mapi32: Add Swedish translation.
      cryptui: Add Swedish translation.
      README: Update Swedish translation.
      cryptui: Fix typos in English resources.
      winmm: Fix typo in English, Slovak resources.
      xcopy: Add Swedish translation.
      start: Add Swedish translation.
      reg: Add Swedish translation.
      jscript: Add Swedish translation.
      credui: Update Swedish translation.
      setupapi: Update Swedish translation.
      wininet: Update Swedish translation.
      mshtml: Update Swedish translation.
      shdocvw: Update Swedish translation.
      ipconfig: Add Swedish translation.
      jscript: Update Swedish translation.

Andrew Eikum (10):
      regedit: Add regedit test suite.
      regedit: Process reg files which use \r line endings.
      shell32/tests: Fix some Win9x failures.
      shell32: Add tests for SHChangeNotify functions.
      regedit: Improve importing of REG_SZ with invalid quoting.
      hlink: Implement HLINKGETREF flags handling.
      oleaut32: Use correct bitpattern if referenced type is not user defined.
      oleaut32: Overwrite previous CustData segment.
      oleaut32: Ensure that CyclicList nodes have a type.
      oleaut32: Implement ITypeInfo2::GetCustData.

Andrew Nguyen (8):
      gdi32: Improve AddFontMemResourceEx parameter validation.
      mpr: Initialize the output enumeration handle to NULL in WNetOpenEnumA/W with no providers available.
      ipconfig: Add stub implementation.
      ipconfig: Implement basic command-line parsing.
      include: Add prototype for GetAdaptersAddresses.
      ipconfig: Partially implement basic adapter information output.
      include: Add definitions for IP_ADAPTER_ADDRESSES flag values.
      ipconfig: Partially implement full adapter information output.

Andrew Talbot (8):
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comctl32: Constify some variables.
      comdlg32: Constify a variable.
      crypt32: Constify some variables.
      crypt32: Constify some variables.
      crypt32: Constify some variables.
      crypt32: Constify some variables.

Andrey Turkin (2):
      imagehlp: Remove uninitialized variable.
      ntdll/tests: Do not check signedness for char types.

André Hentschel (13):
      winecfg: Sync German keyboard shortcuts.
      comdlg32: Fix German font dialog.
      comdlg32: Fix German shortcut conflict.
      ntdll: Add SXS error codes.
      shdocvw: Update German translation.
      mshtml: Update German translation.
      mshtml: Fix indentation in resource file.
      shdocvw: Update German translation.
      dwmapi: Add stub for DwmDefWindowProc.
      user32: Use a macro instead of direct values.
      jscript: Update German translation.
      ntdll: Add more error codes.
      ipconfig: Add German translation.

Aric Stewart (8):
      usp10: Add beginning support for GSUB Alternate Substitution Subtable.
      usp10: Factor out script ranges in an more expandable way.
      usp10: Report accurate information about our currently known scripts.
      usp10: Have ScriptIsComplex reflect information in our scripts.
      usp10: Generalize out applying Opentype features and define default features for currently known scripts.
      usp10: Add contextual shaping proc to the script shaping data.
      usp10: Add Syriac contextual shaping.
      usp10: Update pwLogClust with glyph transformations.

Aurimas Fišeras (5):
      shdocvw: Updated Lithuanian translation.
      mshtml: Update Lithuanian translation.
      shdocvw: Updated Lithuanian translation.
      jscript: Update Lithuanian translation.
      ipconfig: Add Lithuanian translation.

Austin English (2):
      kernel32: Add stub for SetFileValidData.
      ntdll: Check for __FreeBSD_kernel__, remove redundant ifdef's, make FIXME's consistent.

Austin Lund (6):
      dmime/tests: Added tests for IDirectMusicPerformance.
      dmime: Ensure IDirectMusicPort is initialised when calling IDirectMusicPerformance::PChannelInfo.
      advapi32: Add magic codes to HCRYPTKEY and HCRYPTHASH.
      advapi32/tests: Add more error reporting for ReportEvent tests.
      comctl32/tests: Do not perform comparison of dates if GetDateFormat fails.
      comctl32/tests: DateTimePicker and MonthCalendar controls only support Gregorian calendar.

Damjan Jovanovic (4):
      winex11.drv: Use a Wine list to store XDnD data.
      winex11.drv: Filter out all CF_* formats when CF_HDROP is present.
      winex11.drv: Implement a framework for dragging from X and dropping to OLE.
      winex11.drv: Implement the DataObject for dragging from X and dropping to OLE.

David Hedberg (37):
      explorerframe: Add dll stub.
      explorerframe: Implement DllGetVersion.
      explorerframe: Add a stub of NamespaceTreeControl.
      explorerframe: Add classfactory implementation.
      explorerframe/tests: Add initial NamespaceTreeControl tests.
      explorerframe: Add some infrastructure to register the NamespaceTreeControl CLSID.
      shell32: Replace some checks with calls to _ILIsEmpty().
      explorerframe: Implement Initialize.
      explorerframe: Create the treeview on initialization.
      explorerframe: Add IOleWindow implementation.
      explorerframe: Implement Set/GetControlStyle(2).
      explorerframe: Implement TreeAdvise/TreeUnadvise.
      explorerframe: Implement InsertRoot and AppendRoot.
      explorerframe: Handle TVN_GETDISPINFO to get icons, filename and information about subfolders.
      explorerframe: Implement RemoveRoot and RemoveAllRoots.
      explorerframe: Implement GetRootItems.
      shell32: Partial implementation of IShellItem::BindToHandler.
      explorerframe: Fix INameSpaceTreeControl::RemoveRoot.
      explorerframe: Implement expansion of nodes.
      explorerframe: Handle changing the selection.
      explorerframe: Handle keyboard events.
      explorerframe: Handle some mouse events.
      explorerframe: Implement CollapseAll.
      comctl32: Don't break on TVIS_NOSINGLEEXPAND.
      explorerframe: Implement SetItemState and GetItemState.
      comctl32: Return 0 when extended item state is requested from a treeview.
      explorerframe: Implement GetNextItem.
      explorerframe: Implement GetSelectedItems.
      explorerframe: Implement GetItemRect.
      explorerframe: Implement HitTest.
      explorerframe: Implement EnsureItemVisible.
      explorerframe: Some additional basic tests.
      shell32: Add IExplorerBrowser interface stub.
      shell32/tests: Add initial tests for the IExplorerBrowser control.
      shell32: Add IShellBrowser stub.
      shell32: Implement IExplorerBrowser::Initialize.
      shell32: Implement IExplorerBrowser::SetRect.

Davide Pizzetti (2):
      xcopy: Italian translation update.
      wordpad: Italian translation update.

Detlef Riekenberg (10):
      include: Add a closing bracket.
      shdocvw: Do not trim the last character, when using the iexplore open menu.
      gdi32: Always use a HANDLE for GDI_ReleaseObj.
      shlwapi/tests: Run more language dependent tests only on English locales.
      include: Add inaddr.h.
      wineps: Use winspool.drv for job management.
      qmgr/tests: Detect when the service is disabled.
      ntdll: Implement RtlIpv4AddressToString / RtlIpv4AddressToStringEx.
      ntdll/tests: Add tests for RtlIpv4AddressToString / RtlIpv4AddressToStringEx.
      gdi32/enhmfdrv: Remove unneded if() before HeapFree.

Dmitry Timoshkov (5):
      gdi32: Do not crash on an invalid pointer passed to AddFontMemResourceEx.
      user32: Add a test for GetClassInfo, make it pass under Wine.
      ws2_32: Rearrange the code to avoid a needless release_sock_fd().
      user32: Protect from setting as a window owner one of its successors.
      user32: Properly pack the WM_WINE_SETWINDOWPOS internal message.

Frédéric Delanoy (5):
      shdocvw: Update French translation.
      shdocvw: Update French translation.
      mshtml: Update French translation.
      jscript: Update French translation.
      ipconfig: Add French translation.

Gerald Pfeifer (2):
      comctl32: Merge is_textT and is_textW into a single is_text.
      d3dx9_36: minwidth and minheight are set but not used in point_filter_simple_data; remove them.

Hans Leidekker (7):
      mscms/tests: Mark some win98 test results as broken.
      msi/tests: Fix some WoW64 test failures.
      msi/tests: Use HKEY_CURRENT_USER instead of HKEY_LOCAL_MACHINE for registry tests.
      msi/tests: Skip SourceDir tests on win9x.
      msi: Handle signature filenames in short|long notation.
      msi: Bump version to 4.5.
      wldap32: Fix handling of zero timeout value in ldap_search_extW.

Henri Verbeet (51):
      d3dx9_36/tests: Avoid the non-portable NAN macro.
      wined3d: Use the correct divider for 15-bit depth formats in IWineD3DSurfaceImpl_BltZ().
      wined3d: Pass the color as floating point values to device_clear_render_targets().
      wined3d: Always set the get_drawable_size() surface function.
      wined3d: Allow filtering and blending with WINED3DFMT_ATI2N.
      wined3d: Replace color_fill_fbo() with device_clear_render_targets().
      wined3d: Cleanup Get/SetRenderTarget().
      wined3d: Cleanup Get/SetDepthStencilSurface().
      wined3d: Only try to acquire a context in surface_cleanup() if there are GL resources to be destroyed.
      wined3d: Make some lookup tables const.
      wined3d: Reattach FBO attachments when any of the corresponding surfaces is unloaded.
      wined3d: Fix some misspellings of "surface".
      wined3d: Cleanup IWineD3DBaseSwapChainImpl_GetBackBuffer() a bit.
      wined3d: Print the correct resource location in surface_set_texture_name().
      wined3d: Correctly calculate the resource size for ATI2N surfaces.
      wined3d: Rename surface_calculate_size() to wined3d_format_calculate_size().
      wined3d: Round up to complete compressed blocks in IWineD3DDeviceImpl_UpdateSurface().
      wined3d: Fix a couple of typos.
      wined3d: Remove SetContainer() from the public IWineD3DVolume interface.
      wined3d: Remove SetContainer() from the public IWineD3DSurface interface.
      wined3d: A volume's container is always a volume texture.
      wined3d: Also store the subresource container type.
      wined3d: Get rid of the now redundant SFLAG_SWAPCHAIN surface flag.
      wined3d: Avoid IWineD3DSurface_GetContainer().
      dsound: Remove the useless CINTERFACE definition.
      mmdevapi: Remove the useless CINTERFACE definitions.
      wined3d: Add a TRACE to IWineD3DSurfaceImpl_LoadTexture().
      ddraw: Merge direct3d.c into ddraw.c.
      ddraw: Remove useless light callbacks.
      ddraw: Remove a useless material callback.
      ddraw: Remove a useless viewport callback.
      wined3d: Don't print format IDs in decimal.
      wined3d: Release the previous render target only after replacing it in IWineD3DDeviceImpl_SetRenderTarget().
      wined3d: Cleanup device_resource_released().
      ddraw: Merge gamma.c into surface.c.
      ddraw: Merge texture.c into surface.c.
      ddraw: Remove unused / redundant includes.
      ddraw: Add a separate function for light initialization.
      ddraw: Add a separate function for material initialization.
      ddraw: Add a separate function for viewport initialization.
      ddraw: Add a separate function for parent initialization.
      ddraw: Add a separate function for clipper initialization.
      usp10: Pass the correct buffer size to lstrcpynA() in load_GSUB_feature().
      ddraw: Add a separate function for device initialization.
      ddraw: Add a separate function for execute buffer initialization.
      ddraw: Add a separate function for palette initialization.
      ddraw: Add a separate function for vertex buffer initialization.
      ddraw: Add a separate function for ddraw initialization.
      ddraw: Add a separate function for surface initialization.
      ddraw: Add / improve TRACEs.
      wined3d: Do not release a reference we do not have in IWineD3DSurfaceImpl_Flip().

Huw Davies (1):
      rpcrt4: Add a missing STUBLESS_INITOUT case.

Hwang YunSong (3):
      mshtml: Update Korean resource.
      shdocvw: Update Korean resource.
      winmm: Update Korean resource.

Igor Paliychuk (4):
      shdocvw: Update Ukrainian translation.
      mshtml: Update Ukrainian translation.
      jscript: Ukrainian translation update.
      ipconfig: Added Ukrainian translation.

Jacek Caban (41):
      mshtml: Get rid of useless nsQIResult type.
      jscript: Use generic properties for NaN and Infinity implementation.
      jscript: Fixed test crash on some win9x installations.
      jscript: Use generic property for Error.number.
      mshtml: Improved tracing of nsACString arguments.
      mshtml: Moved HTTP headers list freeing to separated function.
      mshtml: Moved getting HTTP header to separated function.
      mshtml: Moved setting HTTP header to separated function.
      mshtml: Moved headers parsing to separated function.
      mshtml: Allow customization of BeginningTransaction.
      mshtml: Store request headers in nsChannel if possible.
      mshtml: Added nsIChannel::GetRequestHeader implementation.
      mshtml: Added nsIChannel::SetRequestHeader implementation.
      mshtml: Store request method in nsChannel.
      mshtml: Added nsIChannel::GetRequestMethod implementation.
      mshtml: Added support for custom post data type.
      jscript: Use generic property for Error.description.
      jscript: Use generic property for Error.message.
      jscript: Fixed Error.toString implementation for non-Error this.
      jscript: Get rid of no longer needed ErrorInstance struct.
      jscript: Throw TypeError in instanceof_expression_eval.
      jscript: Throw TypeError in in_eval.
      shdocvw: Ignore invalid NULL PostData.
      dbghelp: Silence template related dwarf FIXMEs.
      mshtml: Use QueryCommandState to get align state.
      mshtml: Added nsIHttpChannel::referrer implementation.
      mshtml: Treat file URLs pointing to Gecko installation directory as special URIs.
      mshtml: Added nsIURL::Resolve implementation.
      mshtml: Use fake scheme only for about protocol in nsIURI::GetScheme.
      mshtml: Return true spec in nsIURI::GetSpec.
      mshtml: Added nsIChannel::GetName implementation.
      mshtml: Call nsILoadGroup::AddRequest from AsyncOpen.
      mshtml: Moved update_window_doc to on_start_nsrequest and update callback's document if needed.
      mshtml: Skip mutation notifications on documents that are being replaced.
      mshtml: Call on_stop_nsrequest asynchronously.
      mshtml: Avoid asynchronous parse_complete call.
      mshtml: Added an explicit CDECL attribute to imported functions.
      mshtml: Don't use start_binding in IPersistStreamInit::InitNew.
      oleaut32: Try both SYS_WIN64 and SYS_WIN32 syskind in QueryPathOfRegTypeLib on win64.
      ntdll: IMAGE_REL_BASED_HIGH, IMAGE_REL_BASED_LOW and IMAGE_REL_BASED_HIGHLOW should be supported on win64.
      wscript.exe: Improved argument parsing.

Jeff Cook (2):
      winealsa.drv: Init mixer on cards with a single Mic control, like snd_usb_audio mics.
      winealsa.drv: If we can't open a device as stereo, try mono. This is necessary for snd-usb-audio mics.

Jeff Latimer (1):
      msvcirt: Add some stubs.

Jerome Leclanche (1):
      gdi32: Properly set ERROR_NOACCESS when GetObject receives invalid arguments.

Jose Rostagno (5):
      shdocvw: Add Spanish translation.
      notepad: Fix Spanish translation.
      cmd: Fix Spanish translation.
      shdocvw: Update Spanish translation.
      mshtml: Update Spanish translation.

Juan Lang (8):
      ntdll: Implement NtQueryInformationProcess for ProcessDefaultHardErrorMode.
      ntdll: Implement NtSetInformationProcess for ProcessDefaultHardErrorMode.
      kernel32: Implement GetErrorMode/SetErrorMode on top of NTDLL.
      crypt32/tests: Add a test of SSL_EXTRA_CERT_CHAIN_POLICY_PARA's fdwChecks field.
      crypt32: Honor SECURITY_FLAG_IGNORE_CERT_CN_INVALID.
      iphlpapi: Don't overwrite last IPv4 address with first IPv6 address.
      shdocvw: Apply default scheme when none is present.
      mshtml: Fix off by one error in setting status text.

Jörg Höhle (5):
      winecoreaudio: Use same hard-coded limit on frequency as ALSA/OSS.
      mcicda: Rework MCI notification system.
      mcicda: Fix several return codes.
      mcicda: Fix seeking.
      kernel32/tests: GetVolumeInformationA X: succeeds iff drive's default dir is root.

Konrad Wartke (2):
      wineboot: Added more architectures in create_enviroment_registry_keys.
      browseui: Improved a FIXME in DllGetVersion.

Luca Bennati (6):
      shdocvw: Add Italian translation.
      shdocvw: Update Italian translation.
      shdocvw: Update Italian translation.
      mshtml: Update Italian translation.
      jscript: Update Italian translation.
      ipconfig: Add Italian translation.

Maarten Lankhorst (2):
      winmm: Fix fd leak on restarting timer.
      mciqtz32: Fix window visibility.

Mariusz Pluciński (6):
      gameux/tests: Add test of IGameExplorer creation.
      gameux: Add stub of IGameStatisticsMgr implementation.
      gameux/tests: Add test of IGameStatisticsMgr creation.
      gameux: Add IGameExplorer2 implementation stub.
      gameux/tests: Add test of IGameExplorer2 creation.
      gameux: Add definitions of resource identifiers to header file.

Marko Nikolic (2):
      advapi32/tests: Removed sign comparison warnings in eventlog tests.
      advpack/tests: Removed sign comparison warning in advpack tests.

Matteo Bruni (18):
      d3dcompiler_43: Add dll directory.
      include: Add some d3dcompiler-related definitions.
      include: Fix some d3d10shader.h defines.
      include: Stub d3dcompiler.h, d3d11shader.h.
      d3dcompiler_42: Stub dll.
      d3dcompiler_41: Stub dll.
      wined3d: Call set_render_offscreen at the end of context_setup_target.
      wined3d: Fix context_apply_clear_state with ORM = backbuffer.
      wined3d: Remove isInDraw hack from context_setup_target.
      d3dcompiler: Remove useless kernel32 imports.
      d3dcompiler_40: Stub dll.
      d3dcompiler_39: Stub dll.
      d3dcompiler_38: Stub dll.
      d3dcompiler_37: Stub dll.
      d3dcompiler_36: Stub dll.
      d3dcompiler_35: Stub dll.
      d3dcompiler_34: Stub dll.
      d3dcompiler_33: Stub dll.

Michael Stefaniuc (3):
      ddraw: Use FAILED instead of NOT SUCCEEDED.
      gameux: Don't bother to output a "stub" FIXME in DllCanUnloadNow().
      explorerframe: Don't cast NULL.

Mike Kaplinskiy (7):
      include/mswsock: Add WS_ prefix if necessary.
      ws2_32/tests: Test ConnectEx.
      ws2_32: Don't set FD_READ/FD_WRITE before the connection is complete.
      ws2_32: Create a wrapper for connect.
      ws2_32: Implement ConnectEx.
      ws2_32: Implement SO_UPDATE_CONNECT_CONTEXT.
      ws2_32: Fix a bad pointer crash.

Mikko Rasa (1):
      crypt32: Only clear *pcbDecoded on error in CryptVerifyMessageSignature.

Misha Koshelev (4):
      d3dx9: Complete test for D3DXCreateSphere.
      d3dx9: Add _D3DXMESH enumeration.
      d3dx9: Add stub and tests for D3DXCreateMesh.
      d3dx9: Add tests for FVF <-> declaration conversion.

Nikolay Sivov (25):
      comctl32/monthcal: Rename button navigation helper to better reflect its purpose.
      comctl32/monthcal: Fix navigation from last day in a month.
      comctl32/monthcal: Add helper to jump to specified number of months.
      comctl32/monthcal: Add support for month delta in button navigation.
      comctl32/monthcal: Get rid of stored current selection date, it's always synced with lower bound.
      comctl32/monthcal: No need to calculate month length on every iteration.
      comctl32/monthcal: Erase week numbers rectangle before drawing new text.
      comctl32/monthcal: Add some tests for post-V1 hittest fields.
      comctl32/tests: Remove some noise from function names.
      comctl32/monthcal: Support new hittest fields for some cases.
      comctl32/monthcal: Properly adjust selections on scrolling.
      comctl32/monthcal: Make month popup menu respect multiple calendars.
      comctl32/monthcal: Properly scroll calendars on year change.
      comctl32/monthcal: Remove macro used once.
      comctl32/monthcal: Fix assumption about a single calendar for minimal rectangle calculation.
      comctl32/monthcal: Store all control colors in a single array.
      comctl32/monthcal: Use recently introduced enum in scroll buttons painting helper.
      comctl32/listview: Fix infinite loop case for full item range as a first search range.
      comctl32/tests: Use better names for test functions, discover some new test failures.
      comctl32/tests: Use reduced IMAGELISTDRAWPARAMS structure size for tests.
      comctl32/imagelist: Fix failure code for IImageList_Draw().
      comctl32/imagelist: Fix failure code for IImageList_Remove().
      comctl32/tests: More imagelist tests to show broken parameter validation.
      comctl32/imagelist: Fail in ImageList_GetIconSize on null parameters.
      comctl32/imagelist: Fail to create imagelist with zero or negative image dimensions.

Oldřich Jedlička (3):
      ddraw/tests: New CreateSurface for DDSCAPS_BACKBUFFER tests.
      ddraw/tests: New attachment/flipping tests for back buffers.
      ddraw/tests: Add test for bad size of surface caps in CreateSurface.

Owen Rudge (11):
      d3dx10: Add stub for d3dx10_43.
      d3dx10: Add stub for d3dx10_42.
      d3dx10: Add stub for d3dx10_41.
      d3dx10: Add stub for d3dx10_40.
      d3dx10: Add stub for d3dx10_39.
      d3dx10: Add stub for d3dx10_38.
      d3dx10: Add stub for d3dx10_37.
      d3dx10: Add stub for d3dx10_36.
      d3dx10: Add stub for d3dx10_35.
      d3dx10: Add stub for d3dx10_34.
      d3dx10: Add stub for d3dx10_33.

Paul Vriens (1):
      cmd: Add the Swedish translation.

Piotr Caban (22):
      msvcp90: Added char_traits<char> 64-bit exports.
      msvcp90: Added char_traits<wchar_t> 64-bit exports.
      msvcp90: Added char_traits<unsigned short> 64-bit exports.
      msvcp90: Added 64-bit char_traits tests.
      msvcp90: Added allocator<char> 64-bit exports.
      msvcp90/tests: Added allocator<char> tests.
      msvcp90: Add exception throwing function.
      msvcp90: Added bad_alloc exception.
      msvcp90: Added allocator<wchar_t> implementation.
      msvcp90: Added allocator<unsigned short> implementation.
      msvcp90: Added allocator<void> implementation.
      msvcp90: Added basic_string<char> constructor (with no arguments) implementation.
      msvcp90: Added basic_string<char>::npos.
      msvcp90: Added basic_string<char>::erase implementation.
      msvcp90: Added some basic_string<char>::assign implementations.
      msvcp90: Added ~basic_string<char> implementation.
      msvcp90: Added basic_string<char> copy constructor implementation.
      msvcp90: Added basic_string<char> constructor implementation (from cstr).
      msvcp90: Added basic_string<char>::c_str implementation.
      msvcp90: Added logic_error exception.
      msvcp90: Added _String_base::Xlen implementation.
      msvcp90: Added _String_base::Xran implementation.

Rico Schüller (7):
      d3d10: Fix d3dcommon.h inclusion.
      d3dcompiler: Implement D3DCreateBlob().
      d3dcompiler: Implement ID3DBlob::GetBufferPointer().
      d3dcompiler: Implement ID3DBlob::GetBufferSize().
      d3d10: Forward D3D10CreateBlob to d3dcompiler_43.dll.
      d3dcompiler: Add D3DCreateBlob() declaration.
      d3dcompiler: Add D3DCreateBlob() test.

Roderick Colenbrander (1):
      winex11: X11DRV_nores_SetCurrentMode return DISP_CHANGE_SUCCESSFUL when switching to the current mode.

Stefan Dösinger (4):
      wined3d: Add double to float conversion casts in device.c.
      wined3d: Fix another DWORD to WORD conversion warning.
      wined3d: Replace pow with powf in surface_base.c.
      wined3d: MSVC fixes in state.c.

Sven Baars (4):
      shdocvw: Update the Dutch translation.
      shdocvw: Update the Dutch translation.
      mshtml: Update the Dutch translation.
      shdocvw: Update the Dutch translation.

Thomas Mullaly (36):
      urlmon: Implemented IUri_GetHostType.
      urlmon: Silenced a noisy fixme.
      urlmon: Implemented IUri_GetAuthority.
      urlmon: Implemented function for finding the domain name of a URI.
      urlmon: Implemented IUri_GetDomain.
      urlmon: Implemented a path parser for hierarchical URIs.
      urlmon: Implemented a path parser for opaque URIs.
      urlmon: Implemented canonicalization function for hierarchical URI paths.
      urlmon: Implemented a function which removes dot segments from paths of hierarchical URIs.
      urlmon: Implemented canonicalization function for paths in opaque URIs.
      urlmon: Implemented IUri_GetPath.
      urlmon: Implemented function to the file extension of a file in a URI path.
      urlmon: Implemented IUri_GetExtension.
      urlmon: Implemented a parser for URI query strings.
      urlmon: Implemented canonicalization of query strings.
      urlmon: Implemented IUri_GetQuery.
      urlmon: Implemented IUri_GetPathAndQuery.
      urlmon: Implemented a fragment parser.
      urlmon: Implemented canonicalization for URI fragments.
      urlmon: Implemented IUri_GetFragment.
      urlmon: Implemented IUri_GetAbsoluteUri.
      urlmon: Implemented IUri_GetDisplayUri.
      urlmon: Implemented IUri_GetProperties and IUri_HasProperty.
      urlmon: Added support for pre-processing URI strings.
      urlmon: Added support for invalid flag combinations to CreateUri.
      urlmon: Print fixme for unsupported flags to CreateUri.
      urlmon: Implemented IUri_IsEqual.
      urlmon: Added stub for CreateUriWithFragment.
      urlmon/tests: Added testing suite for CreateUriWithFragment.
      urlmon: Implemented CreateUriWithFragment.
      urlmon: Added documentation for CreateUri and CreateUriWithFragment.
      urlmon/tests: Added a few tests for CreateIUriBuilder.
      urlmon/tests: Added tests for IUriBuilder_CreateUri.
      urlmon/tests: Added tests for IUriBuilder_CreateUriSimple.
      urlmon/tests: Added tests for IUriBuilder_CreateUriWithFlags.
      urlmon/tests: Added tests for IUriBuilder_GetFragment.

Tony Wasserka (3):
      d3dx9: Move pixel sampling and recombination in copy_simple_data to separate helper functions.
      d3dx9: Return D3DERR_INVALIDCALL in D3DXLoadSurfaceFromMemory if pDestRect is invalid.
      d3dx9: Implement ARGB point filtering in D3DXLoadSurfaceFromMemory.

Uwe Bonnes (1):
      wininet: Add const qualifier after openssl version check.

Vincent Povirk (18):
      gdiplus: Stub GdipSetPenTransform.
      gdiplus: Stub GdipRotatePenTransform.
      gdiplus: Stub GdipGetPenTransform.
      gdiplus: Stub GdipGetPathGradientPresetBlendCount.
      gdiplus: Stub GdipMultiplyPathGradientTransform.
      gdiplus: Don't require an HDC for the convert_unit function.
      gdiplus: Don't require an HDC in get_graphics_bounds.
      gdiplus: Give a nice warning when we try to draw to an HDC-less graphics.
      gdiplus: Don't require an HDC to get the resolution of a graphics object.
      gdiplus: Create HBITMAP-less bitmap objects for exotic pixel formats.
      gdiplus: Stub GdipSetPathGradientTransform.
      gdiplus: Stub GdipRotatePathGradientTransform.
      gdiplus: Stub GdipScalePathGradientTransform.
      gdiplus: Stub GdipSetPathGradientLinearBlend.
      gdiplus: Stub GdipGetPathGradientTransform.
      gdiplus: Use the software method to draw HBITMAP-less bitmaps.
      gdiplus: Add tests for the HDC's we get from bitmap objects.
      gdiplus: Add a fallback method for getting HDC's from Graphics objects.

Wolfgang Schwotzer (2):
      ws2_32/tests: Only log threads which not terminated by themselves.
      ws2_32: Initialize variable lsap_sel.

Wolfram Sang (2):
      user32: Check for valid pointer in CreateIconFromResource.
      kernel32: Change fixme to trace in comm.c.

Yaron Shahrabani (4):
      wineboot: Added Hebrew translation.
      clock: Added Hebrew translation.
      regedit: Added Hebrew translation.
      clock: Updated Hebrew translation.

Łukasz Wojniłowicz (1):
      shdocvw: Add the Polish translation.

--
Alexandre Julliard
julliard@winehq.org
