The Wine development release 1.1.4 is now available.

What's new in this release (see below for details):
  - Substantial chunks of WinHTTP are implemented.
  - More JavaScript support.
  - Beginnings of shell AppBar implementation.
  - Several fixes for Google Chrome support.
  - Chinese translations.
  - Various bug fixes.

The source is available from the following locations:

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

   1411  Crimson Skies trial won't run
   2424  Genotyper crashes when the registration dialog should appear
   3326  Subtitle Workshop & weird errors
   4065  picasa2: Korean fonts render with boxes
   5031  First Encounter Assault Recon (FEAR) SP Demo Crashes on Start
   5807  Mercora IMRadio crashes while attempting to run
   6299  steam pop-ups appear as small blue boxes without anything in them
   6486  Terragen water levels
   6609  Unable to install K-Lite Codec Pack
   7273  Several graphical corruptions in Railroad Tycoon 3
   7755  Mafia (v1.2): Game runs but there is a choppy sound.
   8210  Atlantis Quest 1.0 demo crashes at startup
   8512  Saving in Google SketchUp6 doesn't work
   9119  VAZ Modular 3.03 Live Input module doesn't work.
   9537  Running JSmooth triggers Unhandled page fault
  10023  Vaz Modular 3.03 OSS driver output broken.
  10229  Serious Sam TSE 1.07 - network connection fails
  10414  Minimap in Warhammer 40k: Dark Crusade is offset
  10661  regedit imports wrong binary data from .reg files (affects FAR Manager) fix proposed
  10902  Steam and PulseAudio
  11119  XML Notepad 2007 won't start
  11301  documentElement.ownerDocument.createElement fails
  11357  Reflections in  Tomb Raider - Anniversary Demo are buggy
  11688  Lego Star Wars II: In-game sound does not work
  11885  Supreme Commander is black It doesn't render anything.
  11962  regedit highlights the wrong item when searching
  12041  STALKER 1.0004-Trainer.exe crashes in dsound
  12285  BabasChess icons/buttons don't show after upgrading from wine 0.9.57
  12573  Notation Composer: font glitch - boxes scattered around on initial screen
  12817  Music in Solfege still loopback repeatedly
  13118  Rome Total War Gold v1.5 stops responding in main menu after a while
  13229  Lunar Magic's level and overworld rendering area don't appear properly
  13321  WoW EULA fails to activate "Agree" button during installation (gecko wrapper)
  13327  StarryNight Pro: Window is painted black
  13523  distorted sound in Suboceanic 64k demo
  13526  Ableton Live window rendering bug (Worked in 0.9.13)
  13646  d3d9 device tests crash on XP
  13698  HyperChem 8.0.3: Error at beginning of InstallShield wizard
  13701  MBAC Ver. B Trial crash
  13899  Touhou games STILL don't show backgrounds at startup
  14104  Chessbase Fritz 10 does not start
  14241  FedExShipManager installer fails with "fixme:msxml:domdoc_createNode unhandled node type 2"
  14265  AxCrypt 1.6.4.4 can not be installed
  14291  winhelp: font sizes are smaller than with Windows WINHLP32.EXE
  14301  winhelp: Selecting a topic does not aways go to the correct page
  14576  DrawIconEx isn't up to date.
  14734  PowerPoint Viewer 2007 fails to start
  14760  Morrowind does not run and crashes
  14779  Painkiller doesn't start anymore
  14781  Kontakt, Kore Player: crash on start
  14842  Graphics glitch in DAZ Studio
  14946  Aliens vs Predator exits while starting game engine
  14958  Supreme Commander: Background grid gets Moiré pattern
  14977  Text in AVI-Mux GUI shows as garbage
  14992  Diablo 2 crash introduced in 1.1.3
  15006  Problem rendering sky on Rose Online
  15020  assertion failed in GPSS World
  15035  Gothic 2, Aplication error - access violation
  15074  System Shock 2: randomly disappearing sound (esp. when loading level)
  15116  Google Chrome URL bar does not render properly

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

Changes since 1.1.3:

Adam Petaccia (16):
      gdiplus: Stub GdipGetFamily.
      gdiplus: Stub GdipGetFontStyle.
      gdiplus: Test for GdipGetFamily.
      gdiplus: Test for GdipGetFontStyle.
      gdiplus: Implement GdipGetFamily.
      gdiplus: Implement GdipGetFontStyle.
      gdiplus: Implement GdipGetFontHeight.
      gdiplus: Don't create a font if there is no facename.
      gdiplus: GdipGetFontHeightGivenDPI: Return a valid value for UnitPixel.
      gdiplus: Stub GdipTranslateLineTransform.
      gdiplus: Stub GdipCreateTexture.
      gdiplus: Stub GdipCreateTexture2.
      gdiplus: Stub GdipCreateTexture2I.
      gdiplus: Implement GdipCreateTexture.
      gdiplus: Implement GdipCreateTexture2.
      gdiplus: Implement GdipCreateTexture2I.

Alexander Dorofeyev (6):
      wined3d: Add glFlush when clearing the front buffer in ClearSurface.
      wined3d: Remove glFlush in RealizePalette.
      wined3d: Make the condition to enter p8 conversion shader path more strict.
      wined3d: Remove glDrawBuffer calls in BltOverride.
      wined3d: Get rid of gl buffer variable in BltOverride.
      wined3d: Remove obsolete code & ModifyLocation TODO.

Alexander Nicolaysen Sørnes (32):
      regedit: Remove unneeded character conversions.
      regedit: Fix possible memory leaks.
      regedit: Convert favourites handling to unicode.
      regedit: Fix memory leaks in favourites handling.
      regedit: Convert searching to Unicode.
      regedit: Convert treeview init to Unicode.
      regedit: Use only SendMessageW in treeview.c.
      regedit: Convert menu & statusbar handling to unicode.
      regedit: Fix leak in GetItemFullPathW.
      regedit: Add listview entries as unicode.
      regedit: Ignore case when sorting values.
      regedit: Fix concat handling for ANSI files.
      regedit: Avoid conversion to ANSI when importing hex values.
      regedit: Use Unicode strings when updating listview.
      regedit: Convert value creation to unicode.
      regedit: Convert value editing to unicode.
      regedit: Remove old fixme.
      regedit: Don't try to convert NULL pointers.
      regedit: Convert value renaming to unicode.
      regedit: Convert key renaming to unicode.
      regedit: Remove some ANSI functions.
      regedit: Fix a memory leak.
      regedit: Convert listview init to unicode.
      regedit: Set the unicode flag for the listview.
      regedit: Remove an ANSI function.
      regedit: Set the unicode flag for the treeview.
      include: Define some Get/SetUnicodeFormat macros.
      regedit: Fix some references to TCHARs.
      regedit: Remove some unused code.
      regedit: Some minor unicode conversions.
      regedit: Convert open/save dialogues to unicode.
      regedit: Fix a memory leak in export handling.

Alexandre Julliard (46):
      configure: Generate the dlls directory lists in configure instead of make_makefiles.
      configure: Add possibility to exclude some directories from the generated lists.
      configure: Use the generic directory enabling mechanism to turn off dlls that depend on external libraries.
      configure: Allow multiple variables in makefile output, and generate the programs directory lists.
      d3dxof: Don't make local variables static.
      makefiles: Recurse into all directories for install-lib and install-dev too.
      configure: Generate the list of top-level directories to install.
      gdi32: Add missing WineEngRealizationInfo function for the non-freetype case.
      winhttp: Fix WinHttpSetDefaultProxyConfiguration spec entry.
      winhttp: Add support for building on Windows.
      dnsapi: Fix compile without the resolv library.
      wininet/tests: Add support for optional notifications. Fix the test to pass again on Windows and Wine.
      shell32/tests: Fix an unsigned comparison warning.
      ntdll/tests: Allow alternate results in the env test to make it pass on Vista.
      ntdll/tests: Allow alternate results in the info test to make it pass on Vista.
      ntdll/tests: Allow alternate results in the string tests to make them pass on Vista.
      msvcrt/tests: Add support for some broken demangle results on older Windows versions.
      wininet: Avoid testing errno when it isn't set. Simplify NETCON_getNextLine a bit.
      wininet/tests: Add a couple more optional notifications.
      Include sys/filio.h to get the FIONREAD definition on Solaris.
      ntdll/tests: Handle a couple of failures on NT4.
      user32: Apply the SendMessage recursion counter to DispatchMessage too.
      ntdll/tests: Fix a few more failures in the info test.
      configure: Build the winetest dependencies in configure instead of make_makefiles.
      winetest: Build the test list from the makefile instead of make_makefiles.
      winex11: Allocate image data from the process heap where possible.
      winex11: Always set the z-order when a window is being made visible.
      shell32: Merge Chinese resources into a single file.
      comdlg32: Merge Chinese resources into a single file.
      comctl32: Rename the Chinese resources to comctl_Zh.rc.
      widl: Replace write_name() by get_name() to make the code more readable.
      widl: Add support for finally function in proxy methods.
      programs: Build the programs that support it with -DWINE_NO_UNICODE_MACROS.
      libwine: Reserve some malloc space on Solaris before we start mapping other things.
      msvcrt/tests: Fix the %n format test for Vista.
      configure: Disable by default some modules that cannot work on Windows.
      reg.exe: Get rid of remaining uses of Unicode macros.
      xcopy.exe: Get rid of remaining uses of Unicode macros.
      libwine: Add support for relocating MS-style imports that use OriginalFirstThunk.
      winebuild: Generate MS-style imports using the OriginalFirstThunk field.
      ntdll: Implemented NtOpenProcessTokenEx and NtOpenThreadTokenEx.
      ntdll: Add stubs for all the job object functions.
      kernel32: Implemented the wrapper functions for job objects.
      shlwapi/tests: Avoid sizeof in traces.
      jscript: Avoid an uninitialized variable warning on older gcc.
      crypt32: Avoid some uninitialized variable warnings on older gcc.

Alistair Leslie-Hughes (11):
      msxml3: Correct unsupported functions in IDispatchEx.
      mshtml: Implement IDispatch for IHTMLBodyElement.
      mshtml: Add missing defines.
      mshtml: Add missing IDispatchEx tids.
      mshtml: Add missing interfaces.
      mshtml: Add dispinterface DispHTMLBody.
      mshtml: Make IHTMLBodyElement use correct IDispatchEx interface.
      mshtml: Add IHTMLElementBody test.
      msxml3: Correct FIXME.
      msxml3: Add IDispatchEx support to IXMLDOMDocument2.
      msxml3: Add IDispatchEx test.

Andrew Talbot (6):
      dxdiagn: Sign-compare warning fix.
      iphlpapi: Sign-compare warning fix.
      jscript: Sign-compare warnings fix.
      msimtf: Sign-compare warning fix.
      mstask: Sign-compare warnings fix.
      msvfw32: Sign-compare warning fix.

Aric Stewart (3):
      user32: Add test demonstrating the WM_PAINT loop.
      systray: Keep systray hidden when requested by moving it off screen.
      comctl32: monthcal: Set the stStart parameter when sending the MCN_GETDAYSTATE notification.

Chris Robinson (2):
      wined3d: Use 8 bits-per-component for the PBO test internal format.
      wined3d: Use the proper internal type for some formats.

Christian Costa (6):
      d3dxof: Implement storage of parsed information.
      d3dxof: Fix guid syntax.
      d3dxof: Some fixes for template parsing in text mode.
      d3dxof: Fix IDirectXFileDataReference macros.
      d3dxof: Start implementing IDirectXFile_CreateEnumObject.
      d3dxof: Handle comments in templates text format.

Damjan Jovanovic (2):
      oleaut32: Fix negative number handling in VarFormat.
      oleaut32: Thousands separator support for VarFormat.

Dan Hipschman (5):
      ole32: Add widl-generated proxies for unknwn.idl and dcom.idl.
      ole32: Add a widl-generated proxy file for objidl.idl.
      ole32: Add a widl-generated proxy file for oleidl.idl.
      widl: Output NULL for inherited methods in the vtbl.
      oleaut32: Add a widl-generated proxy file for ocidl.idl.

David Adam (1):
      d3dx8: Remove useless variables.

Detlef Riekenberg (5):
      include: Declare TranslateURL and needed flags.
      shlwapi: Fix parameters for RegQueryValueExW to read the default value.
      shlwapi: Fix results for UrlApplyScheme.
      shlwapi/tests: Add tests for UrlApplyScheme.
      oleaut32: Add entry for 16-bit LHashValOfNameSys.

Dmitry Timoshkov (3):
      user32: Add a test for monitor work area, fix some failures.
      user32: Partially revert 499c26ce66ec6cbbb3569c69ca95c9dfac01d39f.
      ntdll: Add support for NtSetInformationProcess(ProcessExecuteFlags).

Dylan Smith (6):
      richedit: Pressing tab with selection back to start of table.
      richedit: Fixed a bug in protecting table cell boundaries.
      richedit: Copy cell border properties when appending a row to the table.
      richedit: Prevent streaming in rich text at end of table row.
      richedit: Prevent typing text at end of table row.
      richedit: Prevent integer overflow in wrapping code with no wrap.

Eric Pouech (6):
      dbghelp: Added the definitions for Dwarf3 specifications.
      winedump, dbghelp: Correctly name the age field in PDB headers.
      dbghelp: Improve the symbol loader.
      dbghelp: Improve the symbol loader for .DBG files.
      dbghelp: SymFindFileInPath doesn't check for the parameters passed when looking in a directory, whatever the dbghelp's options.
      winedbg: Search default debuggee dir for symbol information.

Francois Gouget (19):
      Assorted spelling fixes.
      gdiplus: Add some documentation stubs to make winapicheck happy.
      msxml3: Add a '\n' to a Wine trace.
      winhttp/tests: Add a trailing '\n' to an ok() call.
      user32/tests: Add a trailing '\n' to an ok() call.
      dplayx/tests: Fix compilation on systems that don't support nameless unions.
      appwiz.cpl: Remove spaces before '...' in the Norwegian resources.
      notepad: Remove spaces before '\n' in the Chinese resources.
      winhlp32: Remove spaces before '...' in the Chinese resources.
      wined3d: Add a '\n' to Wine traces.
      gdiplus/tests: Remove unneeded casts.
      d3dxof: Remove spaces before '\n', add '\n' in Wine traces.
      crypt32: Fix compilation on systems that don't support nameless unions.
      oleaut32: Improve the LHashValOfNameSys() documentation a bit.
      crypt32/tests: Add a trailing '\n' to an ok() call.
      wined3d: Remove spaces before '\n' in Wine traces.
      gdiplus: Add/fix the trailing '\n' in Wine traces.
      kernel32/tests: Add a trailing '\n' to an ok() call.
      d3dxof: Add a '\n' to a Wine trace.

Gerald Pfeifer (3):
      winhttp: Include <sys/socket.h>.
      quartz: Add return statement to PullPin_Thread_Main().
      winenas: Add return statement to wodPlayer().

Hans Leidekker (26):
      winhttp: Add support for querying most of the standard header attributes.
      winhttp: Add networking infrastructure.
      winhttp: Implement WinHttpSendRequest.
      winhttp: Implement WinHttpReceiveResponse.
      winhttp: Implement WinHttpQueryDataAvailable.
      winhttp: Implement WinHttpReadData.
      winhttp: Implement WinHttpWriteData.
      winhttp: Remove some unneeded includes.
      winhttp: Implement WinHttpQueryAuthSchemes.
      winhttp: Implement WinHttpSetCredentials.
      winhttp: Add support for secure connections.
      winhttp: Test secure connections. Fix a crash when no response is returned.
      winhttp: Use default values when empty strings are passed for verb, object and version parameters.
      winhttp: Avoid testing errno when it isn't set.
      winhttp: Allow reusing a secure connection.
      winhttp: WinHttpCrackUrl and InternetCrackUrlW use different scheme constants.
      winhttp: Move handling of default request parameters into build_request_string().
      winhttp: Handle redirects.
      winhttp: Add an initial implementation of WinHttpQueryOption and WinHttpSetOption.
      winhttp: Add status notification tests. Make them pass.
      winhttp: Add zero value content length header to POST requests without additional data.
      winhttp: A non-standard port must be included in the host header.
      winhttp: Implement some more options.
      winhttp: Implement WinHttpQueryOption(WINHTTP_OPTION_SECURITY_FLAGS).
      winhttp: Implement WinHttpQueryHeaders(WINHTTP_QUERY_RAW_HEADERS).
      winhttp: The last parameter of WinHttpQueryDataAvailable and WinHttpReadData is optional.

Henri Verbeet (12):
      wined3d: glDeleteFramebuffersEXT() needs a context.
      wined3d: Move a TRACE up a few lines.
      d3dx9: Improve a few TRACEs.
      wined3d: Remove useless hash_table_t typedef.
      msvcrt: Don't depend on the system's implementation of acos() & asin().
      wined3d: Be more careful when deleting FBOs.
      wined3d: Depth stencil tracking depends on the value of This->render_offscreen.
      wined3d: Use the correct representative for texture transform states.
      wined3d: Fix a variable name inside a VTRACE.
      wined3d: Correct a TRACE and remove an incorrect comment.
      wined3d: IWineD3DSurface_PreLoad() doesn't do an implicit glBindTexture() anymore.
      wined3d: Set the viewport to the texture size in depth_blt().

Hongbo Ni (60):
      notepad: Convert simplified Chinese resource to utf8.
      winhlp32: Convert simplified Chinese resource to utf8.
      winefile: Convert simplified Chinese resource to utf8.
      comctl32: Convert simplified Chinese resource to utf8.
      shell32: Convert simplified Chinese resource to utf8.
      wineconsole: Convert simplified Chinese resource to utf8.
      progman: Convert simplified Chinese resource to utf8.
      comdlg32: Convert traditional Chinese resource to utf8.
      comdlg32: Convert simplified Chinese resource to utf8.
      clock: Convert simplified Chinese resource to utf8.
      user32: Convert Chinese resource to utf8.
      winecfg: Convert traditional Chinese resource to utf8.
      shell32: Convert traditional Chinese resource to utf8.
      clock: Add traditional Chinese resource.
      progman: Add traditional Chinese resource.
      winhlp32: Add traditional Chinese resource.
      winefile: Add traditional Chinese resource.
      wineconsole: Add traditional Chinese resource.
      winecfg: Update traditional Chinese resource.
      winecfg: Add simplified Chinese resource.
      notepad: Add traditional Chinese resource.
      user32: Update traditional Chinese resource.
      shell32: Update traditional Chinese resource.
      shell32: Update simplified Chinese resource.
      comdlg32: Update traditional Chinese resource.
      comdlg32: Update simplified Chinese resource.
      comctl32: Add traditional Chinese resources.
      comdlg32: Update simplified Chinese resource.
      notepad: Update Chinese resources - dialog font.
      wordpad: Add simplified and traditional Chinese resources.
      winemine: Add simplified and traditional Chinese resources.
      wineboot: Add simplified and traditional Chinese resources.
      view: Add simplified and traditional Chinese resources.
      uninstaller: Add simplified and traditional Chinese resources.
      taskmgr: Add simplified and traditional Chinese resources.
      appwiz: Add simplified and traditional Chinese resources.
      avifil32: Add simplified and traditional Chinese resources.
      browseui: Add simplified and traditional Chinese resou.
      credui: Add simplified and traditional Chinese resources.
      gphoto2: Add simplified and traditional Chinese resources.
      htctrl: Add simplified and traditional Chinese resources.
      localspl: Add simplified and traditional Chinese resources.
      localui: Add simplified and traditional Chinese resources.
      mpr: Add simplified and traditional Chinese resources.
      msacm32: Add simplified and traditional Chinese resources.
      mshtml: Add simplified and traditional Chinese resources.
      msi: Add simplified and traditional Chinese resources.
      msvfw32: Add simplified and traditional Chinese resources.
      oleaut32: Add simplified and traditional Chinese resources.
      oledlg: Add simplified and traditional Chinese resources.
      sane.ds: Add simplified and traditional Chinese resources.
      serialui: Add simplified and traditional Chinese resources.
      setupapi: Add simplified and traditional Chinese resources.
      shdoclc: Add simplified and traditional Chinese resources.
      shlwapi: Add simplified and traditional Chinese resources.
      wineps: Add simplified and traditional Chinese resources.
      wininet: Add simplified and traditional Chinese resources.
      winspool: Add simplified and traditional Chinese resources.
      oleview: Add simplified and traditional Chinese resources.
      regedit: Add simplified and traditional Chinese resources.

Huw Davies (5):
      cryptdlg: Add stubs for CertViewProperties.
      crypt32: Add support for CERT_NAME_STR_REVERSE_FLAG.
      crypt32/tests: Add a test for streamed, detached updates.
      crypt32: Fix streamed, detached updates.
      include: Add a few more things to mimeole.idl.

Jacek Caban (19):
      mshtml: Added IHTMLDocument::get_Script implementation.
      mshtml: Added IHTMLElement::get_parentElement implementation.
      jscript: Added JSGlobal typelib.
      shdocvw: Pass the right IDispatch to NavigateComplete2 and DocumentComplete.
      jscript: Added IActiveScriptParse::InitNew implementation.
      jscript: Added IActiveScript::SetScriptSite.
      jscript: Added IActiveScript::Close implementation.
      jscript: Added script site tests.
      jscript: Added IActiveScript::GetScriptDispatch implementation.
      jscript: Added IDispatchEx::GetIDsOfNames implementation.
      jscript: Added IDispatchEx::Invoke implementation.
      jscript: Added IActiveScript::GetScriptState implementation.
      jscript: Added parser.
      jscript: Added lexer.
      jscript: Added parser memory managment.
      jscript: Added IActiveScript::ParseScriptText implementation.
      jscript: Added SCRIPTSTATE_STARTED implementation.
      jscript: Added ParseScriptText test.
      jscript: Added empty statement implementation.

James Hawkins (64):
      msi: Handle features installed as source in MsiQueryFeatureState.
      msi: Fix the logic to determine the appropriate action of the feature.
      msi: Only set the action to source if the component has a local feature.
      msi: Don't install a feature that is disabled.
      msi: Skip the feature action detection logic if there is no product code.
      msi: Skip the component action detection logic if there is no product code.
      msi: Store the _Columns and _Tables tables in the database structure.
      advapi32: Fix a few failing tests in Vista.
      advapi32: Fix another set of failures on some Vista systems.
      comctl32: Fix a few failing tests in win2000.
      comctl32: Fix a failing test in XP.
      advapi32: Print the actual result of several failing tests.
      advapi32: Fix several failing tests in Vista.
      crypt32: Fix a failing test in XP.
      crypt32: Fix a failing test in Vista.
      gdi32: Fix a failing test in win98.
      kernel32: Fix a failing test in win95.
      kernel32: Trace the modified buffer on error.
      kernel32: Fix two failing tests in win95.
      kernel32: Trace the last error on failure.
      lz32: Fix several failing tests in win95.
      crypt32: Fix a failing test in Vista.
      rpcrt4: Fix several test failures in Vista.
      comctl32: Fix several test failures in win98.
      comctl32: Fix a test failure in win98.
      comctl32: Trace the message sequences.
      comctl32: Fix a failing test in win2000.
      crypt32: Split the test for ret and last error up.
      msi: Handle converting a value of REG_DWORD in MsiSourceListEnumMediaDisks.
      msi: Add tests for opening an empty package.
      kernel32: Add tests for LoadLibraryEx.
      advapi32: Fix a few test failures in Vista.
      advapi32: Fix the process access rights value for Vista.
      crypt32: Fix a test that fails in Vista.
      crypt32: Remove a test with a binary result that behaves differently across platforms.
      crypt32: Fix a failing test in Vista.
      kernel32: Fix a failing test in Vista.
      kernel32: Fix two tests that fail in win2k3 and modify LoadLibraryEx to match this behavior.
      kernel32: Fix a test that fails in win2k3.
      mlang: Remove a test that fails on all systems.
      mshtml: Fix a test that fails in Vista.
      msi: Fix a failing test in Vista.
      msvcrt: Trace the results of two failing tests.
      ntdll: Fix a few failing tests in Vista.
      ole32: Fix a failing test in Vista.
      riched20: Trace the result of a failing test.
      rpcrt4: Remove a test that was replaced by a better test.
      shlwapi: Fix a few failing tests in Vista.
      rpcrt4: Fix a failing test in Vista.
      schannel: Fix a failing test in Vista.
      comctl32: Fix a failing test in win98.
      comctl32: Fix a failing test in win9x.
      crypt32: Fix several failing tests in win9x.
      crypt32: Fix several test failures in win9x.
      crypt32: Fix several failing tests in win9x.
      crypt32: Fix a few test failures in win9x.
      gdi32: Fix a failing test in win9x.
      iphlapi: Fix a failing test in win95.
      kernel32: Fix a failing test in win95.
      netapi32: Fix two failing tests in NT4.
      ntdll: Fix a failing test in NT4.
      rasapi32: Fix several failing tests in win98.
      ole32: Fix two failing tests in win9x.
      msi: Source for new patch files can only be compressed.

Jan de Mooij (2):
      comdlg32/printdlg: If ToPages field is left empty set it to FromPages value.
      comdlg32/printdlg: Leave FromPages/ToPages empty if it contains max. WORD value.

Jeff Latimer (6):
      user32/tests: Deregister the class created by create_dde_window.
      user32: Make some DDE traces more meaningful.
      user32/tests: Test infrastructure for testing ddeml end to end.
      user32: DdeConnect causes 2 XTYP_CONNECT_CONFIRM messages to flow.  Delete one.
      user32/tests: Tests for a W interface connection adding some todo_wine tests.
      user32/tests: Add more A and W test combinations for dde.

Jeff Zaroyko (5):
      msvcrt: Add a test for unlinking non-empty directories.
      kernel32: Add some tests for DeleteFile.
      ntdll: Add some tests for NtDeleteFile.
      winetest: Check that user enters a tag.
      dsound: Check for invalid parameter when unlocking secondary buffers.

Jim Cameron (9):
      user32: Fixed bug in loading .cur files.
      user32/tests: Add a regression test for CreateIconFromResource.
      dinput: Add IID_IUnknown to DICF_CreateInstance(), DirectInputCreateEx().
      ntoskrnl.exe: Add stub for IoGetDeviceObjectPointer().
      ntoskrnl.exe: Add stub for IoGetRelatedDeviceObject().
      ntoskrnl.exe: Add stub for IoRegisterDriverReinitialization().
      ntoskrnl.exe: Add stub for IoRegisterShutdownNotification().
      ntoskrnl.exe: Add stub for ObReferenceObjectByHandle().
      ntoskrnl.exe: Add stub for ObfDereferenceObject().

Juan Lang (36):
      crypt32: Add tests for verifying the hash of a detached hash message.
      crypt32: Separate decoding data from finalizing (hashing or signing) it.
      crypt32: Fix verifying the hash of a detached hash message.
      crypt32: Add stub for CryptVerifyDetachedMessageHash.
      crypt32: Add tests for CryptVerifyDetachedHashMessage.
      crypt32: Implement CryptVerifyDetachedMessageHash.
      cryptuiapi.h: Add missing definitions.
      crypt32: Test encoding/decoding the authority info access extension.
      crypt32: Implement authority info access encoding.
      crypt32: Implement authority info access decoding.
      crypt32: Don't ignore errors when encoding items in an array.
      crypt32: Add tests for encoding/decoding CTLs.
      crypt32: Implement encoding CTLs.
      crypt32: Implement CTL decoding.
      wincrypt.h: Fix typos.
      wincrypt.h: Add missing definitions.
      crypt32: Fix typo.
      crypt32: Fix typo.
      crypt32: Add tests showing signed CTLs aren't decoded by CryptDecodeObject.
      cryptuiapi: Add a stub for CryptUIDlgCertMgr.
      crypt32: Add tests for CertCreateCTLContext.
      crypt32: Implement CertCreateCTLContext and CertFreeCTLContext.
      crypt32: Add tests for CertGetCTLContextProperty.
      crypt32: Add support for CTL properties.
      crypt32: Implement CertDuplicateCTLContext.
      crypt32: Implement CertAddEncodedCTLToStore.
      crypt32: Add CTLs to the memory store.
      crypt32: Add CTLs to the collection store.
      crypt32: Add CTLs to the provider store.
      crypt32: Add CTLs to the file store.
      crypt32: Add CTLs to the registry store.
      crypt32: Implement CertEnumCTLsInStore.
      crypt32: Implement CertDeleteCTLFromStore.
      crypt32: Implement CertFindCTLInStore.
      crypt32: Add tests for CertAddEncodedCTLToStore.
      crypt32: Implement CertAddCTLContextToStore.

Katayama Hirofumi MZ (1):
      wordpad: Added Japanese resource.

Lei Zhang (3):
      regedit: Fix typo in commit c6d01ac847edc2ad02ef02c7a0ead7a833539c3c.
      wininet: Work around NULL headers when handling HTTP_QUERY_RAW_HEADERS_CRLF.
      wininet: Remove redundant CrLf variables.

Louis Lenders (4):
      shlwapi: Add test showing UrlUnEscape should convert the url in place when URL_UNESCAPE_INPLACE is set.
      shlwapi: Fix UrlUnEscape to expand URLs in-place even if the output buffer is NULL.
      shobjidl.idl: Add Taskbarlist interface definitions.
      wine.inf: Add default Directx registry key for InstalledVersion.

Luis C. Busquets Pérez (2):
      d3dx8: D3DXQuaternionRotationMatrix correct compare value for the trace.
      d3dx9: Add types to d3dx9shader.h.

Maarten Lankhorst (1):
      winealsa.drv/dsound: Handle underruns better.

Marcus Meissner (2):
      msxml3: Fixed incorrect MultiByteToWideChar.
      Annotate with allocation size attribute.

Markus Hitter (1):
      user32: Better reflect the current state of DrawIconEx.

Martin Profittlich (1):
      user32: Make RegisterDeviceNotificationW behave likeRegisterDeviceNotificationA.

Michael Stefaniuc (2):
      winhttp: Move the wine includes after the system includes.
      jscript: Move 'inline' right after the storage specifier in a declaration.

Muneyuki Noguchi (13):
      comdlg32: Update Japanese translation.
      shell32: Update Japanese translation.
      user32: Update Japanese translation.
      clock: Add Japanese resources.
      winhlp32: Add Japanese resources.
      winecfg: Update Japanese translation.
      winefile: Add a Japanese resource file.
      comdlg32: Update Japanese translation.
      winemine: Add Japanese translation.
      clock: Update Japanese translation.
      winecfg: Update Japanese translation.
      taskmgr: Update Japanese translation.
      regedit: Update Japanese translation.

Nicolas Le Cam (1):
      comctl32: Implement LVM_GETUNICODEFORMAT.

Nikolay Sivov (38):
      gdiplus: Free memory after some Graphics tests.
      gdiplus: Use GdipFree instead of HeapFree in GdipDeleteGraphics.
      gdiplus: Free memory after some GraphicsPath tests.
      gdiplus: Added a test for GdipGetDC/GdipReleaseDC behaviour + fixes to be able to run it.
      gdiplus: Basic GdipGetDC/GdipReleaseDC implementation.
      gdiplus: Made Graphics calls check for busy state.
      gdiplus: GdipDeleteGraphics affected by busy state too. Test added.
      gdiplus: Basic parameter check in GdipTransformPoints with tests.
      gdiplus: Test for default Graphics clipping region.
      gdiplus: Implemented GdipIsInfiniteRegion with tests.
      gdiplus: GdipPathIterNextPathType stub added with test.
      gdiplus: Add gdiplus debug channel to matrix.c.
      gdiplus: Fix for GpRegion clone helper.
      gdiplus: Implemented GdipGetClip.
      gdiplus: Added TRACE/FIXME to all PathIterator calls.
      gdiplus: Move some TRACE() higher in region.c.
      gdiplus: Implemented GdipIsEmptyRegion with tests.
      gdiplus: Implemented GdipSetClipRegion with basic tests.
      gdiplus: Added test shows that CombineModeReplace actually replaces data.
      gdiplus: Fix for CombineModeReplace with some tests.
      gdiplus: Implemented GdipResetClip with tests.
      gdiplus: Implemented GdipIsEmptyClip with tests.
      gdiplus: Add TRACE(..) to graphicspath.c.
      gdiplus: Stub for GdipFlattenPath with tests.
      gdiplus: Add some TRACE(..) to Graphics.
      gdiplus: Fix API documentation name.
      gdiplus: Add TRACE(..) to CustomLineCap.
      gdiplus: Add TRACE(..) for brush calls.
      gdiplus: GdipGetLineGammaCorrection should check result pointer. Test added.
      gdiplus: Add TRACE(..) for font calls.
      gdiplus: Add few TRACE(..) for ImageAttributes.
      gdiplus: Add few TRACE(..) for Matrix.
      gdiplus: Initial GdipFlattenPath implementation.
      gdiplus: Fix curve closing in GdipDrawClosedCurve2.
      gdiplus: Stubs for AdjustableArrowCap calls.
      gdiplus: Implemented GdipGraphicsClear.
      gdiplus: Implemented GdipCloneImage.
      gdiplus: Fix for GdipGraphicsClear.

Paul Vriens (39):
      advapi32/tests: Remove duplicate test.
      advapi32/tests: Fix a crash.
      advapi32/tests: SC_MANAGER_ENUMERATE_SERVICE is enough.
      advapi32/tests: Don't test unimplemented functions.
      kernel32/tests: Fix two failures on win9x.
      kernel32/tests: Use a file that is available on all platforms.
      kernel32/tests: Use skip instead of trace.
      d3dxof/tests: Run tests again on win9x.
      shell32/tests: Run tests again on win95.
      crypt32/tests: Use CryptAcquireContextA instead of CryptAcquireContextW.
      shlwapi/tests: Fix a test on Vista.
      comctl32/tests: Don't assert on not implemented function.
      mstask/tests: Skip tests for security services if they are not implemented.
      advapi32/tests: Remove tests for calculation with drivers.
      netapi32/tests: Fix the error text.
      msi/tests: Remove service tests.
      oleaut32/tests: Skip some tests on win9x.
      rpcrt4/tests: Skip ok check for win9x.
      quartz/tests: Use CreateFileA instead of CreateFileW to please win9x.
      msi/tests: Add a missing CoUninitialize.
      include: Add a system restore header.
      msi/tests: Create a system restore point when needed.
      shell32/tests: Don't test unimplemented functions.
      shlwapi/tests: Don't test unimplemented functions.
      msxml3/tests: Add a missing CoUninitialize.
      msxml3/tests: Add a missing CoUninitialize.
      dplayx/tests: Remove a stray CoInitialize.
      ddraw/tests: Let tests run again on win9x.
      dplayx/tests: Add a few missing HeapFree's.
      msxml3/tests: Use CreateFileA to please win98.
      msxml3/tests: Fix a test on win98.
      ws2_32/tests: Use CreateEventA for win9x.
      kernel32/tests: Split the test for ret and last error.
      crypt32/tests: Don't crash on Vista.
      urlmon/tests: Fix test on win98.
      dsound/tests: Fix typos in tests.
      quartz/tests: Add a missing CoUninitialize.
      wintrust/tests: Add a missing FreeLibrary.
      winspool.drv/tests: Fix a test on Vista/W2K8.

Piotr Caban (1):
      msxml3: Added custom queryresult DISPIDs implementation.

Rico Schüller (1):
      wined3d/d3d9: Set the initial scissorrect to the dimesions of the backbuffer from the first swapchain of the device.

Rob Shearman (4):
      widl: Raise RPC_X_SS_IN_NULL_CONTEXT exception for NULL in-only context handles instead of RPC_X_NULL_REF_PTR.
      rpcrt4: Add tests for RpcBindingReset.
      winealsa.drv: Use CP_UNIXCP instead of CP_ACP for strings obtained from native OS functions.
      msxml3: Use CP_UNIXCP instead of CP_ACP in libxmlFatalError as the input string is one generated by a native OS function.

Roy Shea (3):
      mstask: Implemented PersistFile_Save stub.
      mstask: Implemented CreateTrigger.
      mstask: Implemented (Set|Get)Trigger.

Shunichi Fuji (1):
      gdi32: Adjust FT_MulFix function to Freetype cvs head.

Stefan Dösinger (50):
      wined3d: Override the default filter of conditional np2 textures.
      wined3d: Make sure the pixel shader is compiled.
      wined3d: Remove a few texture initializations.
      wined3d: Get a GL context before creating a PBO.
      wined3d: Add fixed function sRGB write correction.
      wined3d: Disable D3DFMT_A4L4.
      wined3d: Disable D3DFMT_A2W10V10U10.
      wined3d: Fix the drawStridedSlow callback function calling convention.
      wined3d: Don't retry less strict formats if a match was found.
      ddraw: Don't destroy the application's window.
      wined3d: Fix the texcoord size mask.
      wined3d: Implement D3DTOP_BUMPENVMAPLUMINANCE.
      wined3d: Implement D3DTA_ALPHAREPLICATE in arbfp and atifs.
      wined3d: Fix projected bump mapping.
      wined3d: Use the correct texture limit.
      wined3d: Declare the texture factor when D3DTOP_BLENDFACTORALPHA is used.
      wined3d: The final luminance factor is clamped.
      wined3d: Make the alphaop == colorop matching a bit smarter.
      winex11: Add a run-total fps counter to the fps debug channel.
      wined3d: Disable D3DFMT_R3G3B2.
      wined3d: Advertise a few line caps.
      wined3d: D3DTOP_DOTPRODUCT3 colorop overrides the alphaop.
      wined3d: Clean up the texbeml parameter forward.
      wined3d: Handle texture transforms in the TEXTURETRANSFORMFLAGS state.
      wined3d: Update the arbfp shader on a texturetransformflags change.
      wined3d: Remove some junk.
      wined3d: Remove dead code.
      wined3d: Remove unneeded code.
      wined3d: Make the texture stage mapping nvrc independent.
      wined3d: Replace an #if 0 with if(0).
      wined3d: Remove BaseTexture::UnBindTexture.
      wined3d: Remove some more junk code.
      wined3d: Replace a #if 0 with if(0).
      wined3d: Handle projected+bump mapped textures in atifs.
      wined3d: Silence some format spam.
      wined3d: Handle projected textures properly in arbfp and atifs.
      wined3d: Implement YV12 support for emulated overlays.
      wined3d: BLENDTEXTUREALPHAPM reads the texture.
      wined3d: Report incorrect filtering settings in ValidateDevice.
      wined3d: Implement secondary color in the arbfp ffp pipeline.
      ddraw: Beware of the surface type when checking for format support.
      ddraw: Catch attempts to opengl-render to the desktop window.
      ddraw: Pass proper parameters to CheckDeviceFormat.
      wined3d: Optimize the projected bump map handling.
      ddraw: Add some overlay tests.
      wined3d: Compressed surface sizes are multiples of 4.
      wined3d: Pack the ffp_desc structure better.
      wined3d: Fix the pixelformat selection logic.
      wined3d: Close a pshader on-off switching loophole.
      wined3d: Fix uploading higher transform matrices.

Stefan Leichter (1):
      rasapi32: Fix tests on platforms winme and some win98.

Vijay Kiran Kamuju (2):
      advapi32: Add stub for ConvertToAutoInheritPrivateObjectSecurity.
      d3drm: Include d3drmobj.h in d3drm.h.

Vincent Povirk (6):
      user32/tests: Don't check menu items when testing MNS_CHECKORBMP.
      shell32: Move SHAppBarMessage implementation from shell32 to explorer.
      shell32: Add tests for SHAppBarMessage.
      explorer: Implement ABM_ADD and ABM_REMOVE.
      explorer: Track appbar positions and send ABN_POSCHANGED notifications.
      explorer: Modify rects passed to SHAppBarMessage to not interfere with existing appbars.

Vladimir Pankratov (2):
      shell32: Update Russian translation.
      appwiz.cpl: Add Russian translation.

--
Alexandre Julliard
julliard@winehq.org
