The Wine development release 1.1.39 is now available.

What's new in this release (see below for details):
  - Support for registry symbolic links.
  - Many MSI fixes.
  - Build process improvements.
  - MSXML cleanups and fixes.
  - A number of MSHTML improvements.
  - Various bug fixes.

The source is available from the following locations:

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

  10329  Sonic & Knuckles Collection freezes when starting a game
  13394  gtk-dev-2.12.9-win32-2.exe crashes on installation
  14128  Oblivion crashes during certain quests when entering certain doors or jumping into water
  14178  Can't paste large amounts of text into an application via the clipboard
  16566  dooble browser's new tab button makes the browser window close
  16675  Europa Universalis 2: crashes after a few moments upon starting
  16812  MyRoots Install fails err:msi:msi_cabextract FDICopy failed
  17632  Anno 1701 crashes at startup
  18178  eBay Turbo Lister unhandled exception
  18426  VMware Player install - not enough disk space
  19217  EVE Online glitches graphically, then crashes
  19256  Turbo Lister's installer put folders in the wrong place
  19388  Portal/Half life ep2 screen is black
  20295  AutoCAD 2004: Crash after closing Layer Management Window
  21179  Acclaim Re-Volt: Unhandled page fault on read access during Battle Tags and Nhood1
  21357  Missing toolbar icons in HTML-Kit
  21379  File open dialog is extremely slow
  21580  Background music doesn't loop in Pikachu Volleyball 1.0
  21603  PAF 5 help viewer crashes
  21607  Aztlam Dreams nolonger displays any graphics
  21618  EVE Online: Crashes when generating certain images
  21622  mscoree.dll.DllUnregisterServer stub needed (.NET 1.0 installer)
  21624  MJ12node.exe crashes with StackOverflowException
  21632  CactusGest crash when selecting any option
  21643  No background music in Pikachu Volleyball 1.0
  21648  Garmin training center crashes
  21667  The Lost Crown: game crashes shortly after beginning
  21671  NuSphere PhpED 5.9 build 5921 crash whenever try to browse file
  21678  Age of Empires III Trial install fails
  21687  make install error with today (11.Feb.10) commits
  21688  Turbo Lister assertion failure
  21728  Mass Effect crashes when exiting Chora's Den
  21731  Return key has no effect in an input dialog on a win16 application
  21741  Sonic & Knuckles Collection Demo installer produces (non-fatal) WINNLS32 errors
  21744  msi.MsiGetMode( MSIRUNMODE_MAINTENANCE) case should return false on new installs (TecDoc CATALOG 1/2010 installer)

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

Changes since 1.1.38:

Alexander Nicolaysen Sørnes (2):
      dsound/tests: DirectSound3DListener_QueryInterface should accept IKsPropertySet.
      dsound/tests: Test querying for KsPropertySet on primary buffer.

Alexandre Julliard (69):
      winetest: Require an email address to submit a report.
      winetest: Report the correct source directory for program tests.
      winex11: Shape offset must be relative to the window position.
      user32: Store 32-bit and 16-bit cursors/icons in independent structures.
      user32: Do not load 16-bit user.exe by default.
      gdi32: Do not load 16-bit gdi.exe by default.
      kernel32: Do not load 16-bit krnl386.exe by default.
      makefiles: Build the libs subdirectories directly from the top-level makefile.
      makefiles: Build the tools subdirectories directly from the top-level makefile.
      makefiles: Generate dependencies to match each makefile to its subdirectory.
      makefiles: Move the CROSSOBJS dependency to the generated default dependencies.
      makefiles: Generate a general catch-all dependency on .tab.h files to replace the manually maintained ones.
      makefiles: Generate the winetest rules from the WINE_CONFIG_TEST macro.
      makefiles: Generate the list of test binaries from configure.
      msxml3: Fix building with older libxml versions.
      makefiles: Build the static libraries directly from the top-level makefile.
      makefiles: Build the import libraries directly from the top-level makefile.
      makefiles: Build the tests directly from the top-level makefile.
      makefiles: Disable winetest when tests are disabled.
      makefiles: Move Maketest.rules to the top level.
      makefiles: Add support for having tests under the programs directory.
      wine.inf: Don't create empty default key values where not necessary.
      itss: Don't create empty default key values where not necessary.
      jscript: Don't create empty default key values where not necessary.
      mshtml: Don't create empty default key values where not necessary.
      shdocvw: Don't create empty default key values where not necessary.
      urlmon: Don't create empty default key values where not necessary.
      makefiles: Build the dlls directly from the top-level makefile.
      makefiles: Build the programs directly from the top-level makefile.
      makefiles: Simplify the WINE_CONFIG_MAKEFILE macro by removing the no longer needed prefix arg.
      makefiles: Simplify the WINE_CONFIG_DLL macro by defining some local variables.
      makefiles: Auto-generate the list of all subdirectories too.
      makefiles: Move all the recursion rules to the top-level makefile.
      makefiles: Add a __tooldeps__ fake dependency to rebuild only the tools.
      makefiles: Fix the installation rules for programs bin directory.
      makefiles: Use AS_VAR_APPEND to build the list of warning messages.
      makefiles: Use AS_MKDIR_P to create the extra directories.
      makefiles: Add helper functions to build the various make lists more efficiently.
      user32: Don't forward WM_SETCURSOR to the desktop window.
      ntdll/tests: Fix a few function prototypes in the registry test.
      ntdll/tests: Test NtOpenKey with an existing key.
      ntdll/tests: Add tests for registry symlinks.
      ntdll/tests: Use correct access rights in the NtOpenKey test.
      runtest: Fix handling of test binaries in the programs directory.
      ntdll/tests: Add more tests for registry symlinks.
      server: Implement registry symlinks.
      advapi32: Add support for registry symlinks.
      advapi32/tests: Add tests for registry symlinks at the advapi32 level.
      server: Save and load the registry class names to/from disk files.
      server: Save and load registry symlinks to/from disk files.
      setupapi: Add support for creating registry symlinks from a .inf file.
      wine.inf: Add a symlink for the Win9x-style timezone data.
      winex11: Fix the DC rect offset for a released DC.
      ntdll: Fix the return status of NtQueryValueKey for a too small buffer.
      ntdll: Fix the return value of NtOpenKey for some invalid parameters.
      winmm/tests: Fix a couple of incorrect casts.
      msvcrt/tests: Avoid size_t in a trace.
      urlmon/tests: Avoid size_t in a trace.
      dbghelp: Fix a pointer cast.
      version: Improve detection of builtin libraries.
      user32: Don't overwrite the default button id when creating the dialog structure.
      kernel32/tests: Fix a test failure on xp64.
      user.exe: The default dialog button id is 0 on Win16.
      server: Fix tracing of invalid ACLs.
      ntdll: Properly handle empty but present ACLs in self-relative descriptors.
      advapi32: Implemented RegDeleteKeyExA/W.
      advapi32/tests: Avoid crashing if ReadEventLogA fails.
      advapi32/tests: Fix the ReadEventLog error checking.
      user32: Fix Z-order handling of windows that have a top-most owner.

Alistair Leslie-Hughes (3):
      dbghelp: Add basic support for PVOID64.
      dbghelp: Add stubs for SymGetLineFromName, SymGetLineFromName64, SymGetLineFromNameW64.
      msxml4: Added support for SAXXMLReader40.

Andrew Nguyen (3):
      mshtml: Accept NULL SAFEARRAY pointers in IHTMLDocument2::write(ln).
      gdi32: Check the region handle in GetClipRgn later.
      winnls32: Restore the correct export names.

André Hentschel (3):
      oleaut32: Fix formula.
      dbghelp: Merge dwarf code from ntdll/signal_x86_64.c.
      cmd: Improve German translation.

Aric Stewart (1):
      shlwapi: Account for trailing NULL in UrlFixupW.

Christian Costa (14):
      d3dxof: Fix typo in comment.
      d3dxof: Fix data buffer deallocation on error.
      d3drm: Beginning of Mesh info retrieval.
      quartz: Fix IAMDirectSound interface definition.
      quartz/tests: Add test for querying IAMDirectSound from DSoundRenderer.
      quartz: Add stubbed IAMDirectSound interface to DSoundRenderer.
      d3dx9: Add definition for ID3DXConstantTable.
      d3dx9_36: Add stub for D3DXCompileShader.
      d3drm: Remove wrong description.
      d3drm: Make IDirect3DRMMeshBuilderImpl_Load handle normals and texture coordinates.
      d3dx9_36: Implement D3DXCreateTexture.
      d3dx9_36: Improve some stubs.
      ddraw: Fix D3DTBLEND_MODULATE emulation.
      ddraw: Enable GetViewport to retreive data set by SetViewport2 and vice-versa + tests.

Dan Kegel (10):
      gdiplus/tests: Initialize buffer in test_GdipCreateBitmapFromHBITMAP.
      iphlpapi: _res is per-thread in glibc.
      ntdll: Fix leak in test_symlinks.
      advapi32: Fix leak in test_symlinks.
      cmd: Move all tests to test_builtins.cmd.
      cmd: Turn off echo, add visual separator between testcases.
      cmd: Add test to show set "FOO=bar" should not include the quotes in the variable value.
      cmd: Add test to show ~dp0 should be directory containing batch file.
      cmd: Rename reference file from .out to .exp to avoid clash with gnu make builtin rule.
      cmd: Fix 'else', with tests.

Detlef Riekenberg (5):
      shdocvw: Dump the commands in OleCommandTarget_QueryStatus.
      shlwapi/tests: Remove GetLastError tests for GetAcceptLanguages, which uses HRESULT.
      shlwapi: Return the correct results in GetAcceptLanguagesW.
      shlwapi: Return the correct length from GetAcceptLanguagesA.
      shlwapi/tests: Use defined settings when testing GetAcceptLanguages.

Dmitry Timoshkov (3):
      user32: In a DLGTEMPLATEEX resource dialog version goes before signature.
      winedbg: Print parameter values in backtraces in hex.
      comctl32: Listview should accept both unicode and ansi notifications.

Dylan Smith (5):
      richedit: Move function ME_GetParaLineSpace to make it static.
      wordpad: Fixed quick print so that it doesn't print blank pages.
      richedit: Prevent crash on word selection at end of paragraph.
      wordpad: Avoid making monochrome bitmaps for print preview.
      wordpad: Added text colour toolbar button.

Erich Hoover (6):
      hhctrl.ocx: Fix HTML Help Index tab with alternative 'keyword' style.
      hhctrl.ocx: Support HTML Help having indented Index tab items.
      hhctrl.ocx: Allow ListView navigation with the Return/Enter key.
      hhctrl.ocx: Add widgets for the Search tab.
      itss: Implement IStorageImpl_OpenStorage.
      hhctrl.ocx: Add Search capability.

Gabriele Moabiti (1):
      comdlg32: Open should try to browse directory first.

Hans Leidekker (31):
      wininet: Don't call libcrypto function after closing the library.
      mscoree: Add stub implementations of DllRegisterServer and DllUnregisterServer.
      msi: Add stub implementations of the DisableRollback and InstallAdminPackage standard actions.
      msi: Implement the UnregisterFonts standard action.
      msi: Add a partial implementation of the ValidateProductID standard action.
      msi: The File_Setup field in the ODBCDriver and ODBCTranslator tables is optional.
      msi: Make sure attrs variable is properly double nul-terminated in ITERATE_InstallODBCDataSource.
      msi: Implement the RemoveODBC standard action.
      msi: Add tests for installing and removing ODBC drivers.
      msi: Implement the UnregisterTypeLibraries standard action.
      msi: Return the right error from ITERATE_RegisterTypeLibraries.
      msi: Fix a memory leak in ITERATE_StartService.
      msi: Implement the RemoveShortcuts standard action.
      msi: Add tests for creating and removing shortcuts.
      msi: Implement and test MsiGetPatchInfoA/W.
      msi: Update the UI when registering or unregistering type libraries.
      msi: Get rid of ACTION_VerifyComponentForAction.
      msi: Get rid of ACTION_VerifyFeatureForAction.
      msi: Only run the CreateFolder and RemoveFolder actions when the component is set to be installed or removed, respectively.
      msi: PublishComponents must look at the requested install state of the feature, not the component.
      msi: Implement the UnpublishComponents standard action.
      msi: Add tests for publishing and unpublishing components.
      winhttp/tests: Wait for a handle closing notification.
      msi: Implement MsiSetMode.
      msi: Implement MSIRUNMODE_MAINTENANCE and MSIRUNMODE_REBOOTATEND for MsiGetMode.
      msi: Include run mode in fixmes.
      msi: Accept '\5' and '-' in SQL identifiers.
      msi: Destroy streams cache when applying a transform.
      msi: Encode stream name in the callers of db_get_raw_stream.
      msi: Fix a memory leak.
      msi: Add summary information stream to the streams table.

Henri Verbeet (3):
      wined3d: Remove some unused extensions.
      wined3d: Move the gl info structure to wined3d_private.h.
      wined3d: Drop buffer objects from the stream info as well when PreLoad drops them.

Huw Davies (6):
      msdaps: Add support for remoting IRowChange_SetColumns.
      msdaps: Implement IDBAsynchNotify_OnProgress and OnStop proxies and stubs.
      rpcrt4: Add tests for multi-dimensional conformant arrays.
      rpcrt4: Fix tests on win64.
      fonts: Add a 9 ppem bitmap strike to Tahoma Bold.
      fonts: Tidy up some of the extended Latin glyphs in the 9 ppem strike of Tahoma.

Hwang YunSong (1):
      jscript: Add Korean translation.

Jacek Caban (23):
      jscript: Don't try to create property in jsdisp_call_name.
      jscript: Moved property creation out of find_prop_name_prot.
      jscript: Get value as VARIANT in prop_put.
      jscript: Avoid unnecessary prototype lookup.
      jscript: Added support for constructor property.
      mshtml: Set image size in IHTMLImageElementFactory::create.
      mshtml: Added IHTMLImgElement::width property implementation.
      mshtml: Added IHTMLImgElement::height property implementation.
      mshtml: Use set_nsstyle_attr_var in IHTMLStyle::put_width implementation.
      mshtml: Don't free nsstr in HTMLFormElement_get_dispid twice.
      mshtml: Added IHTMLElement2::detachEvent implementation.
      mshtml: Correctly handle comment nodes in IHTMLElement::[get|put]_title implementation.
      cmd: Added cmd.exe tests.
      mshtml: Forward IHTMLCommentElement::get_text to IHTMLElement::get_outerHTML.
      mshtml: Added IHTMLStyle::get_borderRightColor implementation.
      mshtml: Added IHTMLStyle::get_border*Color implementation.
      mshtml: Added tests showing that we should return E_NOTIMPL in DeleteMemberByName.
      mshtml: Ensure that gecko event listener is attached in attach_event.
      urlmon: Added CreateUri stub implementation.
      mshtml: Added DOCHOST_DOCCANNAVIGATE tests.
      mshtml: Added IViewObject::SetAdvise implementation.
      mshtml: Added IViewObject::SetSink tests.
      urlmon.idl: Added some missing declarations.

Jason Edmeades (1):
      ws2_32: Support indefinite receive timeouts.

Jeremy White (1):
      wineps.drv: Prevent psdrv tracing from crashing on Solaris.

José Manuel Ferrer Ortiz (4):
      hhctrl.ocx: New Spanish translations.
      iccvid: New Spanish translations.
      localspl: New Spanish translations.
      mapi32: New Spanish translations.

Justin Chevrier (4):
      include: Add ITfLangBarMgr Interface.
      uuid: Add LangBarMgr CLSID.
      msctf: Add TF_LangBarMgr registration.
      msctf: Implement stubbed out TF_CreateLangBarMgr.

Jörg Höhle (14):
      midimap: Obey the size parameter in GetDevCaps.
      midimap: Implement callback/notification.
      winmm: Fix incorrect memory useage (Valgrind w/ MIDI tests).
      winmm: Improve initial MIDI player thread synchronisation.
      mciseq: Fix error code path in async command execution.
      mciqtz32: Complete MCI GetDevCaps/capability.
      mciavi: First check inputs, then (perhaps) stop and act.
      mciavi: Use MCIERR_UNSUPPORTED_FUNCTION, not 0 (NOERROR).
      mciavi: Support the MCI_TEST flag.
      mciavi: Step is like Seek.
      mciavi: Support more MCI_STATUS queries.
      winex11: Initialize KeyPressEvent for XmbLookupString.
      winex11: Add vkey codes for functions keys upto F24.
      winmm: dwBytesRecorded controls how much is played, not dwBufferLength.

Kusanagi Kouichi (7):
      notepad: Increase the text limit.
      winex11.drv: Private copy of a result string is unnecessary.
      winex11.drv: Simplify X11DRV_ImmSetInternalString.
      winex11.drv: Fold X11DRV_ImmSetOpenStatus into XIMPreEditDoneCallback.
      user32: Consolidate empty string.
      winex11.drv: Handle result string directly.
      winex11.drv: Show the default IME window only when necessary.

Marcus Meissner (3):
      gdiplus: Dereference texture after checking it for NULL (Coverity).
      winedbg: rex is not used for Grp15b (Coverity).
      winedbg: Segment registers are not affected by rex prefix (Coverity).

Michael Stefaniuc (8):
      itss: Reorder some code to avoid leaking memory on an error path.
      hhctrl.ocx: Use the SendMessage instead of ListView_GetItem.
      hhctrl.ocx: Remove a stray heap_alloc(0) (Smatch).
      ntdll: Avoid using HIWORD on types that are 64bit on Win64.
      oleaut32: Avoid using HIWORD on string pointers.
      kernel32: Don't use HIWORD to check for swapped args in GetCurrentDirectoryA.
      kernel32: Avoid using HIWORD on types that are 64bit on Win64.
      user32: Don't use HIWORD() on a HINSTANCE.

Nikolay Sivov (32):
      msxml3: Use libxml2 functionality to skip top XML declaration node while writing to file.
      comctl32/listview: Revert item width calculation to fix performance issues.
      msxml3: Create PI node properly.
      msxml3: Create entity reference node properly.
      msxml3: Support comment node type in IXMLDOMNode_get_baseName.
      msxml3: IXMLDOMAttribute shouldn't report its parent.
      msxml3/tests: Add a trivial test for IXMLDOMDocumentFragment_get_parentNode().
      msxml3: Accept PI node in on base name request.
      comctl32/rebar: Don't try to access band data before it's needed.
      msxml3: Check for Null out pointer in node creation (with tests).
      msxml3: Support more node types in IXMLDOMDocument_createNode().
      msxml3: Reimplement IXMLDOMDocument::createDocumentFragment() over ::createNode().
      msxml3/tests: Don't try to use wchar buffers as BSTR parameters.
      msxml3: Reimplement IXMLDOMDocument::createElement() over ::createNode().
      msxml3: Reimplement IXMLDOMDocument::createComment() on top of ::createNode().
      msxml3: Fix IXMLDOMDocument::createDocumentFragment(), can't use IXMLDOMNode*->IXMLDOMDocumentFragment* cast.
      msxml3: Reimplement IXMLDOMDocument::createTextNode() on top of ::createNode().
      msxml3: Fix IXMLDOMDocument::createElement(), cast from node to element isn't possible.
      msxml3: Reimplement IXMLDOMDocument::createCDATASection() on top ::createNode().
      msxml3: Reimplement IXMLDOMDocument::createAttribute() on top of ::createNode().
      msxml3: Reimplement IXMLDOMDocument::createProcessingInstruction() on top of ::createNode().
      msxml3: Accept NODE_ENTITY_REFERENCE in ::createNode() and use it for ::createEntityReference().
      msxml3: Fix return value for IXMLDOMNode_put_nodeValue() for unsupported types.
      msxml3: Use interface methods for ::get_length() calls.
      msxml3: Simplify ::insertData() for Text, Comment and CDATA nodes.
      msxml3: Implement ::replaceData() for Text, Comment and CDATA nodes.
      msxml3: Simplify ::appendData() for Text, Comment and CDATA nodes.
      msxml3: Get rid of libxml2 accessors in ::substringData() for Text, Comment and CDATA nodes.
      msxml3: Use common format for TRACE() in DOM objects.
      msxml3/tests: Fix leaks and wrong pointer use.
      msxml3: Accept IObjectSafety for query from IXMLDOMDocument, fix its implementation.
      msxml3: Avoid direct vtable members internal usage.

Ozkan Sezer (2):
      include: Another fix for IDirectSound3DBuffer_SetConeAngles.
      include: Make dmoreg.h C++ compatible.

Paul Chitescu (6):
      qedit: Add pins, IMemInputPin implementation and grabbing to SampleGrabber.
      qedit: Add current media type and media matching to SampleGrabber.
      qedit: Add pins enumerator implementation to SampleGrabber.
      qedit: Add media type enumerator to SampleGrabber.
      qedit: In output pin's IPin_Connect call ReceiveConnection on the receiver pin to properly negotiate media type.
      qedit: Always print a TRACE when a SampleGrabber pin gets connected.

Paul Vriens (16):
      winspool.drv: Fix some test failures on Win9x/WinMe.
      user32/tests: Don't try to detect Win9x/WinMe several times.
      user32/tests: Fix crash on Win9x/WinMe.
      ws2_32/tests: Fix test failures on Win9x/WinMe.
      shell32/tests: Fix a test failure on NT4.
      msi/tests: Run the 'in_use' tests again.
      rcprt4/tests: Don't crash on NT4 or lower.
      msi/tests: Fix a test failure on Win9x/WinMe.
      ddraw/tests: Fix a test failure on VMware and VirtualBox on W2K and below.
      winspool.drv/tests: Fix a test failure on Win9x/WinMe.
      winspool.drv/tests: Use FILE_SHARE_READ to fix some Win9x/WinMe failures.
      winspool.drv/tests: Fix some test failures on Win9x/WinMe.
      winspool.drv/tests: Skip non supported levels on Win9x/WinMe.
      winspool.drv/tests: Fix a test failure on Win9x/WinMe.
      cmd: Remove some unneeded extension checking.
      cmd/tests: Compare strings case-insensitive.

Piotr Caban (9):
      urlmon: Fix map_url_to_zone implementation.
      urlmon: Fixed CoInternetGetSecurityUrl implementation.
      urlmon/tests: Added more url parsing tests.
      oleaut32: Fix crash in LoadTypeLib if typelib name is not specified.
      oleaut32: Return TYPE_E_NAMECONFLICT in ICreateTypeLib2::CreateTypeInfo.
      oleaut32: Store CreateTypeInfo->typedata in list.
      oleaut32: Compute TypeInfo offsets while writing data.
      oleaut32: Store indices in list.
      oleaut32: Store names in list.

Reece Dunn (1):
      user32/tests: Make the MDI client take up the whole client area.

Rico Schüller (3):
      d3d10/tests: Use a wrapper function for D3D10CreateEffectFromMemory().
      d3d10/tests: Add effect shader test.
      d3d10: Fix a HeapFree() in d3d10_effect_Release().

Roderick Colenbrander (3):
      winex11: Fix palette conversion bug.
      winex11: Fix xrender mono->mono blit.
      winex11: Use PictOpOver instead of PictOpSrc in 1-bit -> color blits.

Stefan Dösinger (4):
      wined3d: Don't record dirty areas in a readonly lock.
      wined3d: Don't use GL_MAP_FLUSH_EXPLICIT_BIT without GL_MAP_WRITE_BIT.
      d3d: Make sure vertexbuffer lock doesn't return a NULL pointer.
      wined3d: Control SFLAG_CONVERTED in surface_prepare_texture.

Trey Hunner (1):
      cmd: Add test for 'if' case sensitivity.

Vincent Povirk (17):
      winemenubuilder: Use a custom error function.
      gdiplus: Don't use gdi32 to do pixel format conversion.
      gdiplus: Use linear gradient brush angles.
      shell32: Use the current directory when copying to an empty destination.
      ole32: Only warn about storage share mode once.
      gdiplus: Copy hatch brushes using the create function.
      gdiplus: Use GdipCloneBitmapArea to get bitmap areas for texture brushes.
      gdiplus: Store an image in texture brushes, and use it when cloning.
      gdiplus: Implement GdipGetTextureImage.
      gdiplus: Convert formats that can't be drawn by gdi32 when drawing bitmaps.
      ole32: Add error checking to StorageBaseImpl_CreateStream.
      ole32: Add error checking to StorageBaseImpl_CreateStorage.
      include: ChooseFont hook procedures return UINT_PTR.
      comdlg32: Add a minimal test for the font dialog.
      shlwapi: GetUrlPart can get the scheme of url's without a ://.
      comdlg32/tests: Rely on the Symbol font instead of Tahoma.
      comdlg32/tests: Font sizes are influenced by the display dpi.

Vitaly Perov (2):
      setupapi: Add stub for SetupLogFile{A,W}.
      mshtml: Silence IExternalConnection in htmldoc_qi FIXME.

Vladimir Pankratov (1):
      wordpad: Update Russian translation.

--
Alexandre Julliard
julliard@winehq.org
