The Wine development release 1.1.14 is now available.

What's new in this release (see below for details):
  - Various bug fixes for Internet Explorer 7.
  - Many crypt32 improvements, including new export wizard.
  - Better support for windowless Richedit.
  - Improvements to the print dialog.
  - Many fixes to the regression tests on Windows.
  - Various bug fixes.

The source is available from the following locations:

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

Binary packages for various distributions will be available from:

  http://www.winehq.org/site/download

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

You can also get the current source directly from the git
repository. Check http://www.winehq.org/site/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.1.14:

   1875  CoCreateGuid under wine generates rather weak guid's
   2173  wineps printer driver does not print bitmaps (Geogrid-Viewer)
   4650  cm3 does not start
   5054  can not install microsoft visual C++ express 2005
   6661  World Of Warcraft (WoW) installer: EULA is shown as wierd Chars
   7187  WMI showstopper due to unimplemented function ole32.dll.CoSwitchCallContext
   7920  Post provider setup of WMI core 1.5 fails due to wmi advapi32 exports missing
   7987  NFS: Most Wanted crashes in light
   8499  AutoWikiBrowser doesn't work (uses .NET 2 framework)
   9574  IBExpert install crash with wine riched20.dll
   9771  Steam Friends doesn't work (fails to render correctly or refresh)
   9939  Microsoft OneNote 2007 trial install fails with ole/rpc crash
  10293  sequentially running games/apps with different SafeDisc versions fails
  10383  Models and backgrounds in Every Extend do not appear.
  10596  unable to play mp3 voices in .dat file
  10773  EVE Online permanently slows down every time a system is loaded
  11672  NinjaTrader
  12056  gdiplus.dll.GdipCreateFontFromDC not implemented (affects Sibelius)
  12088  cannot scroll text in textbox in winrar
  12109  Endnote X1: update X1.0.1 does not install
  12351  thread stack PAGE_GUARD/overflow handling (NT compatibility)
  12407  Call of Duty 2 1.00 crashes Wine on hit by enemy (Singleplayer)
  12567  Richedit always uses word wrap
  12786  Framedrops in World of Warcraft (WoW)
  12803  "Empire Earth III" cannot install from DVD
  12984  Icons incorrect in Dragon NaturallySpeaking 9.0 and TED Notepad
  13235  Worldwide telescope crash on start
  13568  VeohTV beta client shows bug report window due to missing pdh stub(PdhEnumObjectItemsW,PdhEnumObjectsA,PdhEnumObjectsHA)
  13967  Pando crashes in install
  14503  Riched20 assertion failure when running DNS9.0
  14528  Warhammer online, game can start but patcher not it is needed to log in the game.
  14597  Wine 0.9.60 Breaks SuperMemo 2006 Build 13.02 June 05, 2007 with "Runtime error 216 at 00406124"
  14749  riched20: Fix vertical scrolling
  14837  Red Alert 3 Beta crashes on volume IDs that are only one character
  14953  Funky graphical artifacts - Unreal Tournament 3
  14962  Dungeon Siege 2 full screen and mouse issues
  15117  Full Tilt Poker crashes when initially opening a table
  15188  Warcraft 3 World Editor: Panels for resize are to huge.
  15203  World of Warcraft: Right alt key not working
  15765  Homeworld 2: Crash/Lockup during Single Player game load
  15914  TryWoW.exe WoW trial installer hangs extremely long on startup
  16126  Keyboard keys displaced one position to left
  16161  GetOverlappedResult called with NULL for lpNumberOfBytesTransferred
  16466  Palm OS Resource Editor crashes
  16533  A Vampyre Story Demo requests for d3dx9_38
  16534  drakensang demo request s for d3dx9_39.dll
  16585  Printing document with images crashes wine
  16626  NBC Direct installer can't find resources
  16725  Intermittent deadlock in GDI32 between freetype_cs and GDI_Level
  16787  PowerDVD 8 (Trial) fails to install
  16883  .NET 3.0: WCF installer fails due bug in services.exe svcctl_GetServiceKeyNameW
  16886  .NET 3.0: WCF installer requires ChangeServiceConfig2 with SERVICE_CONFIG_FAILURE_ACTIONS support
  16920  Automatic download of dotnetfx installer doesn't work anymore
  16927  Compile broken in dlls/kernel32/cpu.c on NetBSD
  16933  Compile broken in dlls/ntdll/signal_i386.c on NetBSD
  16944  DVD-Ripper RipIt4Me stopped working as of version 1.1.8
  16946  Calling CloseServiceHandle() multiple times on same client side service handle corrupts heap
  16947  [v]DbgPrint[Ex][WithPrefix] output buffers as ansi - not suitable in cases when unicode format codes are passed
  16960  UnrealTournament video issue: wined3d: Add support for EXT_vertex_array_bgra.
  16970  read exactly on newline boundary returns the \r (crlf not being performed)
  16982  fgets as first read on file followed by fread gives wrong results
  16994  widechartomultibyte not converting properly
  16999  Visual C++ 2005 Express IDE: stack overflow at startup due to empty class id string
  17007  MSIMODIFY_SEEK = -1
  17010  Interface not supported in mshtml
  17020  Pasco DataStudio driver won't install
  17022  Systemtools Hyena tool fails to start due to missing aclui.dll
  17076  Embedded .NET installer hangs in installation of SnelStart
  17077  Unity web player crashes with unimplemented KERNEL32.dll.DeleteTimerQueue
  17115  Kega Fusion: Segmentation fault occurs with user32.dll from Wine 1.1.13
  17125  Perfidia Standalone (part of DATALINE Lohnabzug): installer aborts
  17135  virtual write watches cause problems in multithreaded .NET code (simultaneous GC heap allocations)
  17161  Provide lodctr.exe tool to prevent misleading process spawn failure console messages (.NET installers)
  17163  winrar text box covered by a horizontal scrollbar
  17167  Graphics completely freeze in Halo
  17168  In ShBrowseForFolder(), control forgotten when dialog is resized

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

Changes since 1.1.13:

Alasdair Sinclair (17):
      advapi32/tests: Fix missing void in empty parameter list.
      comctl32/tests: Fix missing void in empty parameter list.
      comctl32: Fix missing void in empty parameter list.
      d3d9/tests: Fix missing void in empty parameter list.
      ddraw/tests: Fix missing void in empty parameter list.
      dwmapi: Fix missing void in empty parameter list.
      kernel32/tests: Fix missing void in empty parameter list.
      mshtml/tests: Fix missing void in empty parameter list.
      msi/tests: Fix missing void in empty parameter list.
      urlmon/tests: Fix missing void in empty parameter list.
      winmm/tests: Fix missing void in empty parameter list.
      user32/tests: Fix missing void in empty parameter list.
      oleaut32/tests: Fix missing void in empty parameter list.
      quartz/tests: Fix missing void in empty parameter list.
      riched20/tests: Fix missing void in empty parameter list.
      riched32/tests: Fix missing void in empty parameter list.
      setupapi/tests: Fix missing void in empty parameter list.

Alexandre Julliard (67):
      user32/tests: Fix some more msg test failures and improve message sequence tracing.
      kernel32: LCMapString should include the terminating NULL also for LCMAP_SORTKEY.
      server: Generate padding in request structures from make_requests.
      server: Store process/thread affinity as a 64-bit value.
      wintrust/tests: Clean up temp files after test.
      libwine: Add support in cpmap.pl for parsing the Windows bestfit codepage files.
      libwine: Enable perl warnings and use strict in cpmap.pl.
      libwine: Re-generate the Windows codepage data using the bestfit files.
      advapi32: Reimplemented QueryServiceConfig2W in services.exe.
      advapi32: Get rid of the client-side service handle management.
      advapi32/tests: Fix some service test failures on NT4 and Win64.
      user32/tests: Fix some more message test failures on Windows.
      winmm/tests: Increase the timing tolerances some more.
      kernel32/nls: Use a codepage 950 encoding that round trips correctly for Unicode char 0x5341.
      advapi32/tests: Improve error reporting in the service test. Don't check last error on success.
      advapi32/tests: Add some more tests for GetServiceKeyName.
      advapi32/tests: Add some more tests for GetServiceDisplayName.
      advapi32: Fix GetServiceKeyNameW behavior to pass the tests.
      advapi32: Fix GetServiceDisplayNameW behavior to pass the tests.
      user32/tests: Ignore WM_IME_SELECT message. Skip mouse hovering test if the mouse isn't where we want.
      user32/tests: Don't display window info for hooks that don't contain a window.
      user32/tests: Make the DC test window top-most. Ignore an extra WM_MOUSEMOVE.
      user32/tests: Don't try to do hook tests if we can't set hooks.
      widl: We need an offset after the correlation descriptor for unencapsulated unions.
      comcat/tests: Skip tests if we can't create a test category.
      gdi32/tests: Fix the mapping test to handle the more precise LOMETRIC settings on Vista.
      user32/tests: Fix various failures in the monitor test.
      user32/tests: Ignore some more messages.
      user32/tests: Make the traces less verbose in the window test.
      userenv/tests: Don't check for TEMP and TMP variables on NT4.
      ws2_32/tests: Fix a test failure on WinME.
      include: Update the comments about the Wine exception macros.
      user32: Use a finally handler to make sure capture is always released when exiting the menu loop.
      user32: Make sure the submenu is valid in MENU_HideSubPopups.
      gdi32: Avoid some pointer casts.
      rpcrt4: Don't align the buffer pointer in ComplexStructMemorySize for alignment formats.
      winex11: Flush the display after releasing the capture to make sure it happens right away.
      ntdll: Ignore spurious write faults for a write watch that has been reset already.
      services: Add stub implementation for SERVICE_CONFIG_FAILURE_ACTIONS in ChangeServiceConfig2W.
      user32/tests: Accept DISP_CHANGE_RESTART also for tests expected to fail.
      kernel32/tests: Don't hardcode C drive for SetCurrentDirectory tests.
      gdi32: Release the GDI lock when calling the DC DeleteObject function.
      gdi32: Don't hold the GDI lock while calling the DeleteObject method for GDI objects.
      gdi32: Don't hold the GDI lock while calling the UnrealizeObject method for GDI objects.
      gdi32: Don't hold the GDI lock while calling the GetObjectA/W methods for GDI objects.
      gdi32: Use the official constants instead of the old Win9x magic numbers for GDI object types.
      gdi32: Allocate and initialize GDI objects before giving them a handle.
      gdi32: Release GDI handles before freeing the object.
      gdi32: Allocate palette entries separately from the main GDI object.
      gdi32: Get rid of GDI_ReallocObject.
      gdi32: Don't hold the GDI lock while calling the Freetype font engine functions.
      ntdll: Copy the msvcrt printf implementation to ntdll to allow supporting MS ABI varargs.
      ntdll: Convert the DbgPrint* functions to use MS ABI varargs.
      gdi32: Increment the reference count for the initial DC stock objects.
      gdi32: Store a separate flag to mark a GDI object for delayed destruction.
      gdi32: Store the region data directly in the GDI object.
      gdi32: Don't hold the GDI lock while creating regions.
      gdi32: Replace the MEMCHECK macro in the region code by a proper function.
      gdi32: Check for memory allocation failure in region functions and propagate the error correctly.
      kernel32/tests: Support broken GetTempPath return value on WinME.
      kernel32/tests: Don't test the implementation details of the SList structure.
      ntdll/tests: Add a couple of status values seen on Win2K3.
      user32/tests: Add a few optional messages for Win2K3.
      ntoskrnl.exe: Remove the vectored exception handler on dll unload.
      msi: Fix compiler warning on older gcc.
      configure: Include net/if.h to check for netinet headers on Solaris.
      server: Don't return a value from a void function.

Alistair Leslie-Hughes (9):
      mshtml: Implement IHTMLDocument5 createComment.
      riched20: Return a long in fnGetObjectCount.
      msxml3: Register missing SAXXMLReader Components.
      msxml3: IXMLDOMDocument2 async default value is VARIANT_TRUE.
      msxml3: Implement IXMLDOMDocument2 IPersistStream_Save.
      mshtml: Implement IHTMLDocument3 getElementsByTagName.
      shdocvw: Add test to show IServiceProvider is supported.
      shdocvw: Add IServiceProvider support.
      mshtml: Add missing interfaces.

Anders Jonsson (11):
      wordpad: Add Swedish translation.
      write: Add Swedish translation.
      regedit: Add Swedish translation.
      progman: Add Swedish translation.
      winhlp32: Update Swedish translation.
      winefile: Update Swedish translation.
      oleview: Fix typo in English, Russian resources.
      view: Add Swedish translation.
      wineconsole: Fix typos in Swedish resources.
      cmdlgtst: Add Swedish translation.
      comdlg32: Update Swedish translation.

Andrew Nguyen (5):
      kernel32/tests: Simplify a test function's parameters.
      kernel32: Ensure that WriteConsoleW succeeds with an empty input buffer.
      msi/tests: Fix a few handle leaks.
      winmm: Make the return behavior of waveOutPrepareHeader consistent for 16-bit and 32-bit.
      gdi32: Stub the NamedEscape function.

Andrew Talbot (14):
      riched20: Declare some functions static.
      rpcrt4: Declare some functions static.
      netapi32: Fix some limits and bounds checking.
      rsaenh: Declare some functions static.
      rsaenh: Declare some functions static.
      rsaenh: Declare some functions static.
      rsaenh: Declare some functions static.
      shell32: Declare some functions static.
      secur32: Declare a function static.
      setupapi: Declare a function static.
      winealsa.drv: Declare a function static.
      winedos: Declare some functions static.
      winex11.drv: Declare some functions static.
      msctf: Declare some variables static.

Andrey Turkin (6):
      ole32: Add CoGetCallContext and CoSwitchCallContext implementations.
      ole32: Add a few fields to OLE TLS area to match native memory layout.
      ole32: Prevent recursion when CLSIDFromString is passed empty string.
      dwmapi: Add DwmEnableMMCSS stub.
      loadperf: Rename argument to match its function.
      programs: Add lodctr and unlodctr tools.

André Hentschel (1):
      comctl32: Fix callback in treeview.

Aric Stewart (16):
      imm: Send WM_IME_SELECT messages when IME is selected and deselected.
      shell32: Initial stub for SHCreateShellItem. It returns E_NOINTERFACE until shell32 version 6.0 or later.
      shell32: Initial stub for SHGetImageList.
      shdocvw: Stub implementation of IEParseDisplayNameWithBCW.
      rasdlg: Initial stub dll.
      msctf: Add base dll framework.
      msctf: Add regsvr functions.
      msctf: Add definition of CLSID_TF_ThreadMgr.
      msctf: Add stub ITfThreadMgr interface.
      reg.exe: Implement ADD for REG_SZ.
      reg.exe: Implement DELETE.
      wine.inf: Add reg.exe as a stub to system32 now that it does something.
      setupapi: Implement pSetupInstallCatalog.
      shell32: In ParseDisplayName make use of shdocvw if the display name is not a drive but has a :.
      mlang: Implementation of base functionality of IMultiLanguage2::ValidateCodePage and IMultiLanguage2::ValidateCodePageEx.
      oleaut32: Implement de/serialize_param of types VT_ARRAY|<type>.

Austin English (20):
      ntdll: Add support for NetBSD.
      kernel32: Fix a compiler warning on NetBSD.
      ntdll: Add support for NetBSD (64-bit).
      widl: Fix a compiler warning.
      iphplapi: Reorder defines for NetBSD.
      iphplapi: Include sys/protosw.h for Net/OpenBSD.
      iphplapi: Reorder includes for NetBSD.
      iphplapi: Include <sys/timeout.h> for OpenBSD/NetBSD.
      updspapi: Add missing functions and forward to setupapi.
      iphlpapi: Include netinet/if_inarp.h for NetBSD.
      configure.ac: Fix a couple more includes on NetBSD.
      iphlpapi: Fix includes for NetBSD.
      tools/wine.inf: Add a placeholder for stdole2.tlb.
      configure: Fix <netinet/in_pcb.h> detection on OpenBSD.
      configure: Fix <netinet/tcp_var.h> detection on OpenBSD.
      kernel32: Add a stub for OpenProfileUserMapping.
      authz: Add stub dll.
      traffic: Add stub dll.
      mssign32: Add stub dll.
      configure: Check for xinpgen struct.

Austin Lund (1):
      riched20/tests: Added ITextServices::TxGetNaturalSize test.

Ben Klein (1):
      winecfg: Fix a typo in autodetect_drives.

Christian Costa (2):
      mciavi: Don't wait for events we don't handle.
      d3dxof: Fix dead code.

Damjan Jovanovic (3):
      shlwapi: Support the content type query.
      shlwapi: Support the friendly doc name and default icon queries.
      shlwapi: Support the command file type association query.

Dan Kegel (4):
      msvcrt: Remove CRs earlier in ascii mode.
      msvcrt: _flsbuf zeroes _cnt.
      msvcrt: Remove CRs earlier in ascii mode in fseek, too.
      winedos: Get File Attributes must fail for files with names ending in slash.

David Adam (3):
      ddraw/tests: Add a few tests for ComputeShereVisibility.
      d3dx9_38: Implement the dll and forward the functions to d3dx9_36.
      d3dx9_39: Implement this dll and forward the functions to d3dx9_36.

Detlef Riekenberg (3):
      ddrawex/tests: Fix a typo in ok().
      comdlg32: Remove dead code (GetModuleHandleA can't fail).
      comdlg32: Fix return type of COMDLG32_StrRetToStrNW.

Diaa Sami (2):
      shell32: Include the text control when resizing ShBrowseForFolder dialog.
      shell32: Fix a mem leak in SHBrowseForFolder.

Dylan Smith (23):
      richedit: Added test for detecting ascii rtf with Unicode codepage.
      richedit: EM_SETTEXTEX detects ascii richtext with Unicode codepage.
      richedit: Prevent sending Ctrl-C to console and ending tests.
      richedit: Implemented ITextHost for windowed richedit controls.
      richedit: Used ITextHost methods to avoid using window handle directly.
      richedit: Prevented using NULL hwnd for certain operations.
      richedit: Implemented ITextServices_TxSendMessage.
      richedit: Implemented ITextServices TxGetText and TxSetText.
      richedit: Added test for scroll position after EM_SETTEXTEX.
      richedit: Typing is ignored while mouse is captured.
      richedit: Removed some unused invalidation code.
      richedit: Implemented ITextServices_TxGetVScroll & TxGetHScroll.
      riched32: Modified tests to show paragraph break inconsistency.
      richedit: End of line sequence limited to 2 carriage returns.
      riched32: Test EM_LINELENGTH between carriage return & line feed.
      richedit: Handle case for EM_LINELENGTH when offset is between \r\n.
      riched32: Test for EM_GETTEXTRANGE from middle of end of paragraph run.
      richedit: Handle starting in EOL sequence in EM_GETTEXTRANGE.
      richedit: Removed redundant ME_FindItemAtOffset using ME_RunOfsFromCharOfs.
      riched32: Test EM_FINDTEXT searching for end of line characters.
      richedit: Actually store end of line string for end paragraph runs.
      richedit: Suppress scrollbar if missing WS_[VH]SCROLL style.
      richedit: Updated internal style flags on EM_SHOWSCROLLBAR.

Erich Hoover (2):
      regedit: Fix import mangling REG_EXPAND_SZ values.
      oleaut32: Fix OLEPicture rendering vector metafiles without setting up the source rectangle.

Florian Köberle (11):
      user32/tests: Fixed error message.
      user32/tests: Extended test about thick child windows.
      user32: Refactor of WINPOS_GetMinMaxInfo.
      user32: Fixed max size of child with exStyle WS_EX_DGLMODALFRAME.
      user32: Removed code without effect.
      user32/tests: Use AdjustWindowRectEx to calculate minTrack and maxPosition.
      user32: Fix maxPosition of thick child windows.
      user32: Fix thick child minTrack and size.
      user32/tests: Improved an error message.
      user32: Fix maximized child windows.
      user32: Unify handling of child and normal windows in getMinMaxInfo.

Francois Gouget (19):
      kernel32: Fix some bad left-over uses of value in the CPU detection code.
      winedbg: Make some functions static.
      winedbg: Make lexeme_alloc() static in debug.l.
      wineconsole: WCUSER_OptionDlgProc(): use the given configuration information.
      wineconsole: Make some functions static.
      wineconsole: Make WINECON_SetHistory{Mode,Size}() static.
      comctl32/tests: Add a trailing '\n' to an ok() call.
      riched20/tests: Make test_TxGetNaturalSize() static.
      comdlg32: Remove a space before a '\n'.
      quartz: Make the IMemInputPin functions static.
      wineconsole: WINECON_GetHistory{Mode,Size}() are unused so remove them.
      winecfg: Make enumerate_valuesW() static.
      regedit: We don't bother unregistering window classes on exit, so remove HexEdit_Unregister().
      regedit: Make some functions static.
      d3d10core: Make some device_parent_*() functions static.
      ddraw: Make some device_parent_*() functions static.
      d3d8: Make some device_parent_*() functions static.
      twain_32/tests: Add a trailing '\n' to ok() calls.
      msvcrt/tests: Remove a space before a '\n'.

Frans Kool (2):
      crypt32: Added missing Dutch translation.
      cryptdlg: Added Dutch translations.

Ge van Geldorp (13):
      user32/tests: Save iSmCaptionWidth for later testing.
      winetest: Make the wrapper immune to Ctrl-C.
      msi/tests: Windows Installer 3.0 often returns ERROR_INVALID_PARAMETER.
      msi/tests: Double nul-terminate REG_MULTI_SZ values.
      urlmon/tests: Fix protocol tests when proxy is configured.
      msi/tests: EstimatedSize is not set consistently between Windows Installer versions.
      user32/tests: Prevent buffer overflow.
      ole32/tests: Some Windows versions need the class to be registered.
      uxtheme/tests: Adjust error test for W2K8.
      setupapi/tests: Make tests pass on Vista and W2K8.
      kernel32/tests: "none" debugger test needs user interaction.
      d3d8/tests: Make tests pass on a W2K8 VM.
      ole32/tests: Write to HKCR instead of HKCU/Software/Classes for the benefit of older Windows versions.

Gerald Pfeifer (4):
      comctl32: Remove unused parameter from SYSLINK_WrapLine.
      comctl32: Simplify twelve functions by removing unused parameters.
      comctl32: Simplify ten functions by removing unused parameters.
      iphlpapi: #define RTF_LLINFO if not in system headers.

Hans Leidekker (20):
      wininet: Avoid illegal filenames in CreateUrlCacheEntryW.
      msvcrt: Forward ANSI open functions to their Unicode counterparts instead of the other way around. Implement _wfreopen.
      wininet: Strip trailing slashes from filename in CreateUrlCacheEntryW.
      updspapi: Add a stub implementation of UpdSpSetDynamicStringA.
      wintrust: Set system attribute on the target catalog file in CryptCATAdminAddCatalog.
      rpcrt4: Add a stub implementation of NdrGetUserMarshalInfo.
      loadperf: Add stub implementations for InstallPerfDllA/W.
      rpcrt4: Move NdrGetUserMarshalInfo stub near user marshal functions. Add documentation header.
      mscat32: Forward CryptCATCDFEnumMembersByCDFTag to wintrust.
      setupapi: Implement SetupInstallFileExA/W.
      schannel: Add stub implementations of SslEmptyCacheA/W.
      msi: Add stub implementations of MsiSourceListClearSourceA/W.
      msvcrt: Add a test for _vsnwprintf.
      wuapi: Add class factory for CLSID_AutomaticUpdates.
      kernel32: Add stub implementations of Wow64DisableWow64FsRedirection and Wow64RevertWow64FsRedirection.
      wininet: Mark IE6 behaviour of HttpSendRequestW as broken.
      wininet: Return success from per connection option stubs. Fully initialize the value.
      wininet: Add a stub implementation of GetDiskInfoA.
      wininet: Make sure redirected POST requests become GET requests.
      wininet: Implement IsDomainLegalCookieDomainW.

Henri Verbeet (30):
      d3d10core: Implement device_parent_CreateSurface().
      d3d10core: Implement device_parent_CreateRenderTarget().
      d3d10core: Implement device_parent_CreateDepthStencilSurface().
      dxgi: Allow dxgi_surface to be aggregated.
      dxgi: Implement IDXGIDevice::CreateSurface().
      wined3d: Remove some superfluous pointer casts.
      d3d10core: Remove a superfluous pointer cast.
      d3d9: Remove some superfluous pointer casts.
      ddraw: Compare the against the correct IID in IDirect3DExecuteBufferImpl_QueryInterface().
      ddraw: Fix Thunk_IDirect3DDeviceImpl_2_GetCurrentViewport().
      ddraw: Get rid of ICOM_VFIELD_MULTI_NAME2.
      ddraw: Get rid of ICOM_VFIELD_MULTI.
      ddraw: Get rid of ICOM_INIT_INTERFACE.
      ddraw: Get rid of ICOM_INTERFACE.
      ddraw: Get rid of ICOM_VFIELD_MULTI_NAME and ICOM_VFIELD_OFFSET.
      ddraw: Get rid of ICOM_THIS_FROM.
      ddraw: Get rid of ICOM_OBJECT.
      ddraw: Get rid of ddcomimpl.h.
      ddraw: Get rid of CONVERT and CONVERT_REV.
      ddraw: Rename the main vtables to lpVtbl.
      wined3d: Take EXT_vertex_array_bgra into account in send_attribute() and loadNumberedArrays().
      wined3d: Don't use drawStridedFast() when pointsize data is present.
      wined3d: Don't use drawStridedFast() for drawing pretransformed vertices.
      d3d10core: Add a stub ID3D10RenderTargetView implementation.
      d3d10core: Add a stub ID3D10Buffer implementation.
      d3d10core: Implement ID3D10Texture2D::GetDesc().
      d3d10core: Implement ID3D10Texture2D::GetType().
      d3d10core: Implement ID3D10Buffer::GetType().
      d3d10core: Handle a NULL view desc in CreateRenderTargetView().
      d3d10core: Add a small test for CreateRenderTargetView().

Hervé Chanal (3):
      shell32: A new icon for mycomputer.
      shell32: A new icon for trash_file.
      shell32: A new icon for mydocs.

Huw Davies (42):
      comdlg32: Fix spelling of millimeter.
      comdlg32: Set the margins groupbox title to reflect whether we are using metric or imperial measurements.
      comdlg32: Display the fractional part of the margins.
      comdlg32: We need to be able to type the decimal separator into the margin edit controls so ES_NUMBER is no use. Subclass them and filter WM_CHAR instead.
      comdlg32: Give update_margin_edits the ability to update just one edit control if required.
      comdlg32: Fix parsing of the margin edit controls.
      comdlg32: Switch to using a locale dependent decimal separator.
      comdlg32: Let pagesetup_update_papersize take care of landscape mode.
      comdlg32: Add a helper for setting the orientation.
      comdlg32: Add a helper for getting the orientation.
      comdlg32: Add helpers for getting and setting the devmode papersize.
      comdlg32: Add a helper for setting the defaultsource.
      comdlg32: Add a function to update the orientation buttons.
      comdlg32: Rename PRINTDLG_PS_ChangePrinterA to better reflect its function.
      comdlg32: Initialize the printer combobox using unicode strings.
      comdlg32: Initialize the paper comboboxes using unicode.
      comdlg32: Use unicode APIs to access the paper combos.
      comdlg32: Use unicode APIs in pagesetup_update_papersize.
      comdlg32: Use unicode APIs to react to the change printer combo.
      comdlg32: Move invocation of the Printer... dialog to a separate function.
      comdlg32: Move handling of the 'Properties' button to a separate function.
      comdlg32: Rewrite the 10ths mm conversion function to use the is_metric helper.
      comdlg32: Rewrite the 1000ths inch conversion function to use the is_metric helper.
      comdlg32: Simplify the preview change function a little.
      comdlg32: Rename pagesetup data type to reflect upcoming unicode/ansi merge.
      comdlg32: Use a helper function to retrieve pagesetup flags.
      comdlg32: Add a helper function to access the PAGESETUPDLG's ptPaperSize element.
      comdlg32: Add a helper to access the margin rect.
      comdlg32: Fix incorrect scaling.
      comdlg32: Simplify the DEVNAMES access functions are unify the release.
      comdlg32: Remove ugly macro.
      comdlg32: Add a function to access the hooks.
      comdlg32: Add a helper to return the dialog struct.
      comdlg32: Move the initialization code into a common function.
      comdlg32: Add a placeholder for the unicode dialog struct. Update helper functions to work in the unicode case.
      comdlg32: Move the unicode version to the common implementation.
      comdlg32: Set the correct error code if there is no default printer.
      ole32: Move private data structure out of header file.
      ole32: Move functions around in file to avoid forward declarations.
      ole32: Add a helper function to return the file size and modify EnsureExists to use it.
      ole32: The bigblockfile on ILockBytes implementation should work on any ILockBytes not just those based on HGLOBAL.
      oleaut32: Print an LCID in hexadecimal.

Igor Tarasov (1):
      gdi32: Add logcal points to device points conversion for source bitmap before bit stretching.

Jacek Caban (4):
      jscript: Added Math.random implementation.
      jscript: Fixed Math.round with no argument.
      wininet: Set dwError to 0 in first INTERNET_STATUS_REQUEST_COMPLETE notification.
      shdocvw: Fixed tests on IE7.

James Hawkins (3):
      advpack: Skip tests for broken functions.
      advapi32: Skip tests if the default provider cannot be removed.
      advpack: Don't test properties of a file if it can't be created.

Jeff Latimer (5):
      user32/tests: Resend: Fix test to work on Vista.
      user32: Pass pConv to WDML_Global2DataHandle so that it can be correcly passed to DdeCreateDataHandle.
      user32: Check the instance id on DdeCreateDataHandle and retire a couple of todos.
      user32/tests: Add tests for invalid instance passed to DdeCreateStringHandle.
      user32: DdeCreateStringHandle checks for an invalid instance Id and sets lastError for instances on that thread.

Jeremy White (8):
      twain_32: Add an initial test framework for twain_32.dll.
      twain_32: Modify get_condition_status to allow for a specific source.
      twain_32: Add an interactive set of tests for a selected scanner.
      twain_32: Add a bit more tracing about the scanners found.
      sane.ds: Initialize the SupportedGroups field when returning a source.
      sane.ds: Implement CAP_SUPPORTEDCAPS.
      twain_32: Set the correct condition code for DG_CONTROL/DAT_IDENTITY/MSG_GETDEFAULT.
      twain_32: Return TWRC_FAILURE/TWCC_NODS when we have no sources.

Juan Lang (71):
      crypt32: Only open the read-only root store for the local machine location.
      crypt32: Remove location checks when opening root store.
      crypt32: Include root store in CertEnumSystemStore enumeration for the local machine location.
      netapi32: Remove unused define.
      crypt32: Add a localized name for the TrustedPublisher store.
      quartz: Only test for the presence or absence of a single filter in a loop. Testing for more than one depends on the order of enumeration, which isn't guaranteed.
      rpcrt4: Use pseudo-random numbers to generate UUIDs rather than using the (old, deprecated) MAC-address-and-time generation algorithm.
      ntdll: Implement the ThreadAffinityMask query.
      cryptui: Add stub for CryptUIWizExport.
      cryptui: Add a do-nothing export wizard.
      cryptui: Skip the format page of the export wizard if the format is implied.
      cryptui: Remember format and format options when leaving the format page of the export wizard.
      cryptui: Disable the PFX export format in the export wizard unless the source has a private key.
      cryptui: Enable/disable checkboxes in the format page of the export wizard depending on selection.
      cryptui: Validate filename in export wizard.
      cryptui: Implement browsing for a filename in the export wizard.
      cryptui: Show details of export on finish page of export wizard.
      cryptui: Implement saving from the export wizard.
      cryptui: Use a public type rather than a private one for export options in the export wizard.
      cryptui: Implement CryptUIWizExport for the no UI case.
      cryptui: Fix a typo.
      cryptui: Call CryptUIWizExport when asked to.
      include: Add definition of OBJECT_NAME_INFORMATION.
      cryptui: Always initialize export wizard's export options.
      cryptui: Default to exporting in DER format.
      cryptui: Add error checking to CryptUIWizExport.
      include: Add missing type to union.
      cryptui: Add support for exporting a serialized store from CryptUIWizExport.
      crypt32: Set save function in switch statement rather than with trinary conditional operator.
      crypt32: Close file when appropriate in CertSaveStore.
      cryptui: Implement CryptUIWizExport for CRYPTUI_WIZ_EXPORT_CERT_STORE_CERTIFICATES_ONLY.
      cryptui: Select export format based on input in CryptUIWizExport.
      cryptui: Move code for enabling the PFX export format to the correct dialog proc.
      cryptui: Set default export file name based on input in CryptUIWizExport.
      cryptui: Export all selected certificates when requested from the certificate manager, not just the first one.
      crypt32: Fix typo.
      include: Add a few definitions.
      include: Add PFX definitions.
      crypt32: Add stub for PFXExportCertStoreEx.
      crypt32: Implement PFXExportCertStore on top of PFXExportCertStoreEx.
      crypt32: Implement PFXIsPFXBlob.
      crypt32: Add stub for PFXImportCertStore.
      crypt32: Implement CertFindCertificateInStore for CERT_FIND_PUBLIC_KEY.
      include: Add definitions for CryptFindCertificateKeyProvInfo.
      crypt32: Implement CryptFindCertificateKeyProvInfo.
      rsaenh: Add tests for key permissions.
      rsaenh: Honor the CRYPT_EXPORTABLE flags to CryptImportKey.
      rsaenh: Honor the CRYPT_EXPORTABLE flag to CryptAcquireContext and CryptGenKey.
      rsaenh: Fix CryptSetKeyParam for KP_PERMISSIONS.
      rsaenh: Split CPExportKey into helper functions for each export type.
      rsaenh: Honor a key's permissions when exporting a private key.
      rsaenh: Add a test for importing a key into a container and acquiring a container with the same name before the original container is released.
      rsaenh: Separate storing a key container's keys from releasing them.
      rsaenh: Use helper function to install keys.
      rsaenh: Split CPImportKey into a helper function for each type of key supported.
      rsaenh: Store a key's value to the registry when a key is imported.
      rsaenh: Don't store a key to the registry when it's being read from the registry.
      rsaenh: Use key spec rather than char * to identify a key pair.
      rsaenh: Load/store key permissions along with key pair value.
      rsaenh: Also write a key's permissions when it's being stored to the registry.
      crypt32: Fix debug channel for PFX functions.
      crypt32: Move test for duplicating a NULL cert to existing function.
      crypt32: Add index of failing test to output.
      crypt32: Fix CryptProtectData tests on older Windows versions.
      cryptui: Fix a few test failures on older Windows versions.
      cryptnet: Skip failing tests no matter what the last error is, but only on Windows.
      inetmib1: Remove a test that's no longer true on Windows Vista.
      rsaenh: Fix some recently introduced test failures on Win9x/NT4.
      shell32: Fix a test on Windows Vista/2008.
      shell32: Remove a test that no longer fails on Windows Vista/2008.
      shell32: Allow PIDLs to have alternate types to support more recent versions of Windows.

Lei Zhang (1):
      wineps.drv: Remove SelectBitmap stub implementation.

Marcus Meissner (17):
      winefile: Avoid array overrun (coverity).
      msi: Initialize row (Coverity).
      ddrawex: Use stack ctx instead of uninitialized variable.
      shell32: Added missing fclose (Coverity).
      kernel32: Initialize events correctly.
      d3d9: Initialize hr (Coverity).
      riched20: rcUpdate cannot be NULL in ME_PaintContent (Coverity).
      d3d9: Remove useless NULL check in stateblock test (Coverity).
      regedit: Check HeapAlloc results (coverity).
      riched20: Removed unneeded NULL check (Coverity).
      riched20: Exit the loop instead of crashing (Coverity).
      riched20: Handle cp NULL more gracefully (Coverity).
      riched20: Handle NULL fp more gracefully (Coverity).
      riched20: Handle more missing allocs gracefully (Coverity).
      server: Handle NULL thread in send_hardware_message (Coverity).
      msxml3: Handle get_element returning NULL (Coverity).
      xcopy: Handle return from vsnprintfW (Coverity).

Mario Kacmar (4):
      comdlg32: Update Slovak translation.
      comctl32: Added Slovak translation.
      setupapi: Added Slovak translation.
      shlwapi: Added Slovak translation.

Michael Gruber (1):
      winex11.drv: Remove "German keyboard layout without dead keys 105".

Michael Stefaniuc (52):
      mlang: Remove superfluous pointer casts.
      mscms: Remove superfluous pointer casts.
      wordpad: Remove superfluous pointer casts.
      winemine: Remove superfluous pointer casts.
      view: Remove superfluous pointer casts.
      crypt32: Remove some superfluous pointer casts.
      winex11.drv: Remove superfluous pointer casts.
      dbghelp: Remove superfluous pointer casts.
      inetcomm: Remove superfluous pointer casts.
      objsel: Remove superfluous pointer casts.
      ole32/tests: Remove superfluous pointer casts.
      oleview: Remove superfluous pointer casts.
      comcat: Remove superfluous pointer casts.
      crypt32/tests: Remove superfluous pointer casts.
      quartz/tests: Remove superfluous pointer casts.
      winenas.drv: Remove superfluous pointer casts.
      qmgr: Remove superfluous pointer casts.
      secur32: Remove superfluous pointer casts.
      wineoss.drv: Remove superfluous pointer casts.
      shlwapi: Remove superfluous pointer casts.
      winealsa.drv: Remove superfluous pointer casts.
      dinput8: Remove superfluous pointer casts.
      ifsmgr.vxd: Remove superfluous pointer casts.
      msdmo: Remove superfluous pointer casts.
      msxml3: Remove superfluous pointer casts.
      crypt32: Remove some more superfluous pointer casts.
      itss: Remove some superfluous pointer casts.
      gdi32: Remove superfluous pointer casts.
      avifil32: Remove superfluous pointer casts.
      hlink: Remove superfluous pointer casts.
      ntprint: Remove superfluous pointer casts.
      dmsynth: Remove superfluous pointer casts.
      gphoto.ds: Remove superfluous pointer casts.
      localspl: Remove superfluous pointer casts.
      user32: Fix bogus "if (!x & y)" code.
      wineesd.drv: Add missing return in function returning non-void.
      dsound: Fix mixup between HWAVEOUT and HWAVEIN.
      dsound: Use UlongToHandle to make the real payload a HWAVEIN/HWAVEOUT.
      dinput: Remove superfluous pointer casts.
      crypt32: Remove remaining superfluous pointer casts.
      setupapi: Remove superfluous pointer casts.
      oleaut32/tests: Remove superfluous pointer casts.
      quartz: Remove superfluous pointer casts.
      expand: Remove superfluous pointer casts.
      wintrust: Remove superfluous pointer casts.
      d3dxof: Remove superfluous pointer casts.
      services: Remove superfluous pointer casts.
      winspool.drv: Remove superfluous pointer casts.
      msvcrt: Remove superfluous pointer casts.
      d3d9: Remove superfluous pointer casts.
      psapi: Remove superfluous pointer casts.
      riched20: Remove superfluous pointer casts.

Mikołaj Zalewski (3):
      comctl32: treeview: Add a test showing that a pszText of NULL is equivalent to LPSTR_CALLBACK.
      regedit: Don't pass an ANSI string to vsprintfW.
      comctl32: toolbar: Make sure all TBUTTON_INFO fields are initialized when a button is added in the middle.

Nikolay Sivov (13):
      include/msiquery.h: Fix MSIMODIFY enum definition.
      mshtml: Added ISupportErrorInfo for IHTMLDocument.
      aclui: Added stub dll.
      urlmon: Added a stub for HlinkSimpleNavigateToMoniker.
      richedit: Update EM_GETOLEINTERFACE documentation status.
      kernel32: Make GetOverlappedResult crash on NULL args as native does.
      kernel32: Added DeleteTimerQueue.
      msi: Remove redundant pointer check (Coverity).
      msi: Fix NULL dereference in MsiQueryComponentStateW (Coverity).
      msi: Fix potential NULL pointer dereference in ILockBytes_Release (Coverity).
      mshtml/tests: Fix interface release (Coverity).
      quartz: Fix NULL pointer dereference (Coverity).
      gdiplus: Implemented GdipCreateRegionHrgn for rectangular regions.

Paul Chitescu (1):
      wined3d: Detect Radeon Xpress Series, report PCI ID of Radeon Xpress 200M.

Paul Vriens (28):
      wintrust/tests: Add a test for enumerating catalog attributes.
      wintrust: Add some CryptCATCDF stubs.
      wintrust/tests: Add a few parameter tests.
      wintrust/tests: Make the catalog properties test a bit more flexible.
      wintrust/tests: Add some tests that creates catalog files.
      riched20/tests: Fix a test failure on Win9x.
      wintrust: Add some cdf parsing definitions.
      wintrust/tests: Add some cdf parsing tests.
      wintrust/tests: Check file attributes set by CryptCATAdminAddCatalog.
      crypt32/tests: Skip a few tests if needed.
      shell32/tests: Fix a test failure on some platforms.
      quartz/tests: Fix some test failures on Win95.
      shell32/tests: Use A-functions to test on Win9x.
      shell32/tests: Fix a test failure on Win9x and W2K.
      shell32/tests: Fix a test on Win9x, WinME and W2K.
      wintrust/tests: Fix a test failure on W2K.
      user32: Allocate buffer on heap.
      inetcomm: Wrap a few traces in debugstr_a() (Coverity).
      quartz/tests: Fix test failures on Win95 by using A-functions.
      kernel32/tests: Fill the buffer to show a bug in Wine.
      kernel32/tests: Don't crash when run as a normal user.
      kernel32/tests: Fix some test failures on several platforms.
      kernel32/tests: Fix some test failures on Win9x and WinME (GetPrivateProfileSectionNames).
      kernel32/tests: Fix some test failures on Win9x and WinME (GetPrivateProfileString).
      crypt32: Fix CertDuplicateCertificateContext for a passed NULL context.
      kernel32/tests: Skip some tests on Win9x and WinME.
      kernel32/tests: Fix some test failures on Win9x and WinME.
      rsaenh/tests: Fix the remaining test failures on Win9x up to W2K.

Reece Dunn (1):
      comctl32: Don't generate a fixme message for the TBSTYLE_EX_DOUBLEBUFFER extended style.

Ricardo Filipe (5):
      ntdll: Add stub for RtlGetCompressionWorkSpaceSize.
      ntdll: Add stub for RtlCompressBuffer.
      setupapi: Add stub for SetupDiGetClassImageList.
      ntdll: Add stub for RtlDecompressBuffer.
      pdh: Add stub for EdhEnumObjectItemsA/W.

Rico Schüller (3):
      d3dx9_38: Fix version information.
      d3dx9_39: Fix version information.
      d3dx9_40: Implement d3dx9_40 and forward the functions to d3dx9_36.

Rob Shearman (12):
      widl: Add a new function, type_alias_get_aliasee to wrap  the retrieval of the type that the alias aliases.
      widl: Add new type_get_type and type_get_real_type_type  functions.
      rpcrt4: Don't declare functions that aren't exported by rpcrt4.dll in include/rpcndr.h.
      rpcrt4: Remove the NDR version check from NdrClientCall2 and NdrStubCall2.
      rpcrt4: Fix buffer overflow in UUID tests.
      ole32: Fix some tests that fail on NT4 and Win9x.
      ole32: Fix a missing CoUninitialize in test_CoFreeUnusedLibraries.
      rpcrt4: Don't test for a specific value for fBufferValid in test_client_init.
      rpcrt4: Implement NdrGetUserMarshalInfo.
      rpcrt4: Add tests for NdrGetUserMarshalInfo.
      oleaut32: Fix the typelib tests on 64-bit platforms.
      rpcrt4: Fix a cstub test failure on older versions of Windows.

Shunichi Fuji (1):
      configure: Set default libs if ***-config is missing.

Stefan Dösinger (3):
      wined3d: Don't single-allocate new gl shaders.
      wined3d: Get rid of last_was_foggy_shader & friends.
      wined3d: Get rid of is_compiled in the pixel shader.

Uwe Bonnes (1):
      msvcrt/tests: Test case to show Wine still mishandles file text mode.

Vincent Pelletier (13):
      dinput: Move WARN where it belongs.
      winejoystick.drv: Fix file descriptor leak.
      winejoystick.drv: Use JSIOCGAXMAP ioctl to correct axes mapping.
      winejoystick.drv: Implement POV support.
      dinput: Add effect gain support.
      dinput: Test that upload, unacquire, acquire still permits updating uploaded effect.
      dinput: Fix macro definitions.
      dinput: Use tested DirectInput version instead of latest.
      dinput: On Unacquire, stop all effects and unload them.
      dinput: Add test to show that effects are stopped after Unacquire + Acquire and preserved in dinput.
      dinput: Implement auto-center set & get.
      dinput: Fix gain-related bugs.
      dinput: Clamp lMagnitude to -10000..10000 range.

Vincent Povirk (1):
      gdiplus: Do not call delete_element(NULL).

--
Alexandre Julliard
julliard@winehq.org
