This is release 0.9.60 of Wine, a free implementation of Windows on Unix.

What's new in this release (see below for details):
  - Better support for Windows IMEs.
  - Option for Windows-style window decorations.
  - Improved system tray behavior.
  - Window management fixes.
  - Improved quartz audio support.
  - Better support for launching apps from Unix file managers.
  - Lots of bug fixes.

Because of lags created by using mirrors, this message may reach you
before the release is available at the public sites. The sources will
be available from the following locations:

  http://ibiblio.org/pub/linux/system/emulators/wine/wine-0.9.60.tar.bz2
  http://prdownloads.sourceforge.net/wine/wine-0.9.60.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 or CVS
repositories. Check respectively http://www.winehq.org/site/git or
http://www.winehq.org/site/cvs for details.

If you fix something, please submit a patch; instructions on how to do
this can be found at http://www.winehq.org/site/sending_patches

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

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

Bugs fixed since 0.9.59:

   2989  Wine supports only one DISPLAY per session
   3185  Invalid working directory results in crashes file open/close dialog
   3534  Systray icons are not transparent...
   4056  winecfg is unusable with the default virtual desktop size
   5034  Wrong size of commdlg OpenFile dialog in radvideo.exe
   5346  Library initialisation crash with USER and X11DRV
   5396  Tabbed Text
   5804  iTunes detects incorrect version of QuickTime
   5887  Wine does not load dynamically generated fonts
   6257  Ankh Demo crashes in OpenGL mode
   6450  Deus Ex user input stops working intermittently
   6573  Errors while trying to run Ragnarok Online causing game to crash at startup
   6785  Continuum doesn't run in non-virtual desktop when windowed
   6786  Continuum windowed mode under virtual desktop puts pixels ~15 too low
   6871  Textures in GTAIII are rendered as grey and silver weirdness
   6907  Delphi applications printing bug
   6999  Prince of Persia Warrior Within plays videos with blank screen then closes
   7137  game Secret Files Tunguska dies randomly with "unknown error" poping up
   7140  segfault running rc.exe via make
   7174  Master of Orion 2 does not switch screen resolution correctly
   7193  Deus Ex fullscreen > 1024x768 cut off
   7231  TextPad4: Can't print
   7477  Uplink demo crashes
   7596  HomeSeer 2.2 will not install
   7622  Sony Vegas 7.0
   7631  Titan Quest hangs after 5 seconds in menu
   7647  The updater for Gekkeiju Online crashes with an error message.
   7679  IMVU 3D Avatar Chat client crashes
   7786  Grand Prix 3 dplay error
   7836  Prism fails to start
   7879  Mono (D3D Game) dies with an error about sound
   7945  3dmark 2000 demo immediately exits
   8049  Edit control text length is off by one
   8086  gdi32 font test fails in fonts with charset 130
   8116  MyScribe doesn't start (Suse 10.0)
   8143  Project IGI 2 : Covert Strike crashes at the end of intro movie
   8319  Autocad 2008 trial install fails very early
   8540  C&C3: Malfunctioning shaders (ATI)
   8547  Intel Image processing Library - ipla6 error preventing operation.
   8551  MoveFileWithProgressW unconditional fails for directories with flag MOVEFILE_REPLACE_EXISTING
   8641  Supreme Commander Patch crashes
   8809  When in "Wine desktop" mode, systray crashes
   9010  HebRech takes forever to load
   9011  incorrect dup() behavior
   9047  Civilization IV Expansion pack "Beyond the Sword" Install Crash
   9286  nice icon and menu
   9315  Running Corel Draw 7 causes crash
   9631  Window with specific classes/styles/ex_styles should bypass WM taskbar
   9647  iTunes 7 sound loopy, unstable
   9671  Derive 5 no longer draws graphs in color
   9731  GdiConvertToDevmodeW trying to copy -32 bytes on memcpy
   9740  Unimplemented function causes Phantasmagoria 2 to crash
   9765  iTunes 7.4.3 can't connect to the iTunes music store
   9793  Circuitmaker 2000 trouble with wire manual routing
   9809  Autodesk Revit Architecture 2008 install fails
   9969  OPAS shows error boxes when hovering over calendar item
  10446  Capslock key press not detected
  10750  shdocvw carshes after showing webpage
  10867  Trying to run Ztree under wine : "Could not get hWnd"
  10917  Checkpoint Smart Dashboard crashes
  11026  newly created tool window does not have keyboard focus
  11111  Picasa slideshow does not have focus on Gnome
  11252  Adobe Photoshop CS2 window motion cosmetic problem
  11347  Microsoft Word 2000 - some fonts are always bold
  11371  Not possible to open documents with Teach2000
  11463  conflicting types between Wine list.h and Solaris list.h in server/fd.c
  11474  winelauncher mixes up stdout & stderr
  11547  corrupted double-linked list - glasgow haskell compiler
  11593  winecfg does not correctly import colour theme profiles
  11679  BW Styler Plugin for Adobe Photoshop CS/CS2 ugly cosmetic problem
  11731  iTunes doesn't register mouse clicks properly
  11775  Oleview does not correctly generate idl files
  11784  3dsmax2008 installer crashes:err:cursor:DIB_GetBitmapInfo (1633746944): unknown/wrong size for header
  11870  Steam Crashes when trying to install any game with GLX Error
  11973  Chatstat crashes into wintrust
  12050  No mouse cursor after minimize-restore in Uru
  12073  Cyberboard: selection windows don't change selection
  12108  Regression in mshtml results in page causes page fault when visiting a web page
  12110  Regression in Starfleet Command game since 0.9.57
  12150  Photoshop7 -> open file -> select more than 36 files, Wine dies
  12156  closing multiple help windows crashes wine
  12162  Heroes of Might & Magic IV awful frame rate
  12203  Windows Live Messenger 8.1.0178 fails to install
  12249  Ultraedit v14.00a builtin MSI doesn't work.
  12250  Call of Cthulhu: Slow and jerky mouse movement
  12264  IDA disassembler (and other apps developed in Delphi) window isn't added to taskbar
  12266  EVE Online interface got several glitches between 0.9.58 and 0.9.59
  12296  Some games are crashing when they switch the resolution
  12325  winebrowser / mapi32.dll does not support accented characters in mailto:
  12331  windows driver doc kit won't install.
  12343  Anarchy Online: Shift Clicking anything with left shift does not work as intended
  12362  Systray support for all applications is broken
  12365  ntoskrnl: crash on unimplemented API: KeQueryActiveProcessors / KeQueryInterruptTime  (starforce)
  12397  Can't accept licence of Swat 4 demo
  12399  Oregon Trail 5th Edition: will not start
  12408  Swat 4 Demo Installer license text displayed incorrectly
  12409  EVE Premium Client Login Screen Black
  12410  f761b908013698ee4e015ea03f48ce5d170fb666 breaks ghostrecon
  12413  Pokerstars windows not refreshed
  12424  QIP: message window hangs often if minimized
  12439  Regression: Age of Mythology: Installer page faults
  12445  Arcgisexplorer crashes in dbghelp
  12461  SmartFTP Client requires an implementation of cryptui.dll
  12465  winetest compilation regression with 0.9.59 (Bourne shell problem)
  12469  Keyboard navigation regression in some controls
  12482  Wine 0.9.59 don't do linefeed when ENTER is pressed in any "MEMO" in applications  compiled by DELPHI7.
  12493  CreateCompatibleDC creates a compatible DC from everything
  12496  SSF: SendMessage Error MessageBox ends program
  12498  fixme:htmlhelp:HtmlHelpW Not all HH cases handled correctly
  12499  RnQ: chat input textbox became non-multiline in 0.9.59
  12512  Ctrl+Home and Ctrl+End don't match Windows behaviour for the edit control
  12543  Shift-click not working in World of Warcraft after upgrade to latest wine (0.9.59) (affects Photoshop, too)
  12579  regression : cohabitation between windows in "mdi" application

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

Changes since 0.9.59:

Alex Villacís Lasso (1):
      user32: LoadImage(IMAGE_BITMAP) should reject invalid BMP files (with tests).

Alexander Dorofeyev (21):
      wined3d: Don't copy the extra line.
      wined3d: Implement CONVERT_RGB32_888 conversion.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_Uninit3D.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_ColorFill.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DDeviceImpl_ResourceReleased.
      wined3d: LEAVE_GL when exiting with error in tesselate_rectpatch.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DQueryImpl_Release.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DOcclusionQueryImpl_GetData.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DEventQueryImpl_GetData.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DEventQueryImpl_Issue.
      wined3d: Add ENTER_GL/LEAVE_GL in IWineD3DOcclusionQueryImpl_Issue.
      wined3d: move ENTER_GL in IWineD3DDeviceImpl_Init3D.
      wined3d: Add device->isInDraw checks in LoadLocation.
      wined3d: Move PreLoad to avoid calling it with gl lock held.
      wined3d: Set isInDraw later in drawPrimitive.
      include/d3d.h: Fix method calling macros.
      ddraw: Add possibility to ignore lights in viewport_activate.
      ddraw: Set active_device in AddViewport.
      ddraw: Temporarily activate viewport when clearing.
      ddraw/tests: Add viewport clearing tests.
      ddraw/tests: Add colorkeyed blit to p8_primary_test.

Alexander Morozov (3):
      setupapi: Add a test for SetupDiGetDeviceRegistryProperty and SetupDiSetDeviceRegistryProperty.
      setupapi: SetupDiGetDeviceRegistryProperty should return ERROR_INSUFFICIENT_BUFFER when buffer size is insufficient.
      setupapi: SetupDiGetDeviceRegistryProperty should return ERROR_INVALID_DATA when buffer size is not 0 but buffer is NULL.

Alexander Nicolaysen Sørnes (6):
      comdlg32: Update Norwegian Bokmål resource.
      oledlg: Fix control class in Norwegian Bokmål resource.
      shell32: Update Norwegian Bokmål resource.
      winecfg: Update Norwegian Bokmål resource.
      regedit: Update Norwegian Bokmål resource.
      winhelp: Update Norwegian Bokmål resource.

Alexandre Julliard (63):
      winex11: Ignore ConfigureNotify events when a window is iconified.
      user32: Fix a few ShowWindow todo tests.
      winex11: Fix handling of property sizes for 64-bit platforms.
      winex11: Get rid of the SetWindowPos hack to unmap systray windows.
      winex11: Set the _NET_WM_STATE atom directly for unmapped windows.
      winex11: Don't set NET_WM_STATE on the desktop window.
      libwine: Only use the last line of the git version description.
      user32: Fix list_window_parents when run in the desktop process.
      wrc: Add support for Unicode accelerator strings.
      libwine: Added mappings for codepage 1361 (Korean Johab).
      user32: Get rid of the debug mark option in the system menu.
      winex11: Improved handling of broken 8-bit TARGETS selection.
      winex11: Move all the embedded systray window support to winex11.drv.
      winex11: Make the system tray window transparent.
      winex11: Add a timer to detect when a systray owner has been destroyed.
      explorer: Implement a global system tray window.
      programs: Remove obsolete winelauncher script.
      tools: Remove the obsolete bug_report.pl and genpatch scripts.
      winex11: Abstract window map/unmap to separate functions.
      winex11: Add some generic support for XEMBED client windows.
      winex11: Get rid of the useless systray hidden flag.
      winex11: Fix KeymapNotify handler to take left/right modifiers into account.
      winex11: Added an error handler to catch bad atoms in clipboard selections.
      winex11: Flush the display after creating X windows.
      user32/tests: Avoid testing uninitialized data.
      programs: Remove winelauncher from install rules.
      winex11: Separate the XIM process-wide setup from the IME creation.
      winex11: Make sure to flush painting operations before moving a window.
      comctl32: Get rid of the hack to remove size grips on managed windows.
      user32: Forward all WM_SYSCOMMAND messages to the driver, not only moves and resizes.
      user32: Moved the menu activation hack on managed windows to the X11 driver.
      winex11: Replace the keyboard flags bitfield by the official flag definitions.
      user32/tests: Replace the keyboard flags bitfield by the official flag definitions.
      wine.inf: Add a version number to make sure the file changes between versions.
      wordpad: Don't pass an invalid DC to CreateCompatibleDC.
      gdi32: Fix CreateCompatibleDC to reject invalid DCs.
      winex11: Don't set full screen style on minimized windows.
      winex11: Make WS_EX_APPWINDOW windows have normal type.
      winex11: Fix the type hint for the desktop window.
      shdocvw: Fixed typo in CLSID_InternetShortcut.
      preloader: Reserve low memory areas in separate chunks.
      kernel32: Reserve the low 64Kb area separately from the rest of the DOS memory.
      winedos: Handle memory reservation errors more gracefully.
      include: Add the SPSVCINST_* setupapi flags.
      setupapi: Move strdupW and strdupWtoA to the setupapi_private.h header.
      setupapi: Implemented SetupInstallServicesFromInfSectionW.
      setupapi: Install services in InstallHinfSection.
      wine.inf: Use a proper services section to install services.
      fusion: Fix a number of leaks in assembly_create.
      comdlg32: CDM_GETSPEC and CDM_GETFILEPATH should preserve double quotes in file lists.
      server: Keep a file descriptor open to the config directory to make sure we don't write the registry in the wrong place.
      winex11: Moved the ExposeEvent handler to event.c.
      winex11: Moved the MapNotify handler to event.c.
      winex11: Moved the WM_SYSCOMMAND handling to window.c.
      user32: Added support for WS_EX_RIGHT in the button control.
      user32: Added support for WS_EX_RIGHT in the edit control.
      user32: Added support for WS_EX_RIGHT in the static control.
      quartz: Avoid sizeof in traces.
      kernel32: Create the windows and system directories if necessary.
      setupapi: Add support for creating directories from the FakeDlls section.
      wineprefixcreate: Moved creation of directories to wine.inf.
      ntdll: Don't create a temporary dir, run wineprefixcreate directly in the final dir.
      gdi32: Fixed initialization of bit masks in GetDIBits for 16-bit bitmaps.

Alistair Leslie-Hughes (1):
      msxml3: Implement transformNode.

Anatoly Lyutin (2):
      user32/tests: Get rid of magic number.
      user32/tests: Add test for switching not maximized mdi children.

Andrew Talbot (23):
      port: Remove superfluous semicolon.
      wintrust: Avoid assigning to struct members from other structs.
      advapi32: Do not call MIDL_user_free() with pointer to stack memory.
      msdmo: Array parameter is passed to function as pointer so loses size information.
      advapi32: Array parameters are passed to function as pointers so lose size information.
      msdmo: Fix calculation of array size in bytes.
      dnsapi: Remove unused variables.
      comctl32: Remove unused variables.
      comctl32: Remove unused variables.
      crypt32: Remove unwanted shadow variable.
      comdlg32: Remove unused variables.
      crypt32: Remove unused variables.
      browseui: Fix handle leak.
      dinput: Fix handle leak.
      comctl32: Remove unused variables.
      dmime: Remove unused variables.
      comdlg32: Remove unused variable.
      dsound: Remove unused variable.
      dplayx: Remove unused variables.
      gdi32: Remove unused variable.
      gphoto2.ds: Remove unused variable.
      hhctrl.ocx: Remove unused variable.
      ddraw: Remove unused variables.

Apostolos Alexiadis (3):
      oleaut32: Added Greek translation.
      comctl32: Greek resources update.
      comdlg32: Greek resources update.

Aric Stewart (22):
      winex11: Add IME functionality to winex11drv.
      imm32: Implement ImmConfigureIME using the loaded IME.
      imm32: Load a default IME if a specific one is not specified. This defaults to x11.
      imm32: Implement ImmGetImeMenuItems using loaded IME.
      winex11: Have all xim interaction pass through the new x11drv IME interface.
      imm32: Make use of of the loaded IME for all processing.
      imm: Default context and hwnd are per thread so store that data in a thread local storage.
      imm32: Properly handle unicode and non unicode IMEs with SetCompositionString.
      imm32: ImmDestroyContext cannot destroy the default context.
      imm32: Semi-stub implement ImmEnumRegisterWord using loaded IME.
      imm32: Semi-stub implement ImmEscape using loaded IME.
      imm32: Semi-stub implement ImmGetConversionList using loaded IME.
      imm32: Implement ImmGetRegisterWordStyle using loaded IME.
      imm32: Implement ImmRegisterWord using loaded IME.
      imm32: Implement ImmUnregisterWord using loaded IME.
      imm32: Remember to unset the hwnd for a context when that hwnd is associated with a different context.
      user32: Make sure there is space for at least 6 items in a combo dropdown without forcing it to be at most 6 items as well.
      imm32: All HIMCC in the InputContext should be initialized at creation.
      imm32: Implement ImmProcessKey and ImmTranslateMessage.
      user32: Call ImmProcessKey in TranslateMessage to allow IMEs to handle key processing if they choose to.
      imm32: Create the IME UI window with the IME instance so the registered class can be found.
      wininet: Correct the case where Content-Length is set as well as Transfer-Encoding == chunked.

Austin English (6):
      Spelling fixes.
      msi: Spelling fixes.
      Spelling fixes.
      ole32: Spelling fixes.
      oleaut32: Spelling fixes.
      Spelling fixes.

ByeongSik Jeon (2):
      winex11: Add VK_HANGUL, VK_HANJA for Korean Native IME.
      imm32: Implement ImmSetConversionStatus.

Chris Robinson (1):
      wined3d: Check for NULL vertex declarations.

Colin Finck (1):
      gdi32: Add a test to demonstrate a CreateCompatibleDC problem.

Dan Hipschman (15):
      qedit/tests: Don't forget CoUninitialize.
      qedit/tests: Add test framework and test for IMediaDet_put_Filename.
      qedit/tests: Add a test for IMediaDet_get_OutputStreams.
      qedit/tests: Add a test for IMediaDet_get_Filename.
      qedit/tests: Add a test for IMediaDet_(put|get)_CurrentStream.
      qedit/tests: Add a partial test for IMediaDet_get_StreamMediaType.
      qedit/tests: Fix an incorrect count given to GetTempPathW.
      qedit: Implement IMediaDet_put_Filename.
      qedit: Implement IMediaDet_get_Filename.
      qedit: Implement IMediaDet_get_OutputStreams.
      qedit: Implement IMediaDet_(put|get)_CurrentStream.
      qedit: Implement IMediaDet_get_StreamMediaType.
      qedit: Implement IMediaDet_get_FrameRate.
      qedit: Add a stub for IMediaDet_get_StreamLength.
      qmgr/tests: Fix minor potential memory leaks.

Detlef Riekenberg (2):
      ntoskrnl.exe: Implement KeQueryActiveProcessors.
      ntoskrnl.exe: Implement KeQueryInterruptTime.

Dmitry Timoshkov (19):
      gdi32: Fully initialize face->ntmFlags on font load.
      winex11: Change the priority of evaluated window styles to workaround a Metacity bug with handling of utility windows.
      gdi32: Fix lfWidth before caching the font to avoid duplicate entries in the cache.
      gdi32: Move negative lfWidth test into a separate body, skip the test if there is no 'x' in the font.
      winex11.drv: Do not set window type to utility to avoid a Metacity bug.
      regedit: Fix Win64 warnings.
      wineboot: Fix Win64 warnings.
      wineconsole: Fix Win64 warning.
      winefile: Fix Win64 warnings.
      wordpad: Fix Win64 warnings.
      winhelp: Fix Win64 warnings.
      tools: Fix font structure layout for 64-bit mode.
      user32: Fix Win64 warnings.
      user32: Use appropriate type for lresult.
      gdi32: Clarify which font doesn't contain 'x'.
      gdi32: Map glyph to Symbol range only if the font supports symbol encoding.
      winex11.drv: Map zero-sized windows but don't add WM decoration to them.
      winedump: Print names for all known EMF records.
      winedump: Decipher contents of a couple EMF records.

Eric Pouech (5):
      dbghelp: Be stricter when looping in symbol tables.
      dbghelp: Prevent debug overflow of internal buffer while tracing.
      dbghelp: Fix invalid pointer dereference.
      richedit: Force window update when the word wrap option has changed.
      winhelp: Fix regression introduced by Win64 warning fixes.

Erik de Castro Lopo (1):
      msvcrt: Clear end-of-file flag on fseek.

Francois Gouget (11):
      services: Add a trailing '\n' to a couple of Wine traces.
      wineboot: Make sure COBJMACROS is defined before objidl.h is included.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      fusion/tests: Fix compilation on systems that don't support nameless unions.
      Assorted spelling fixes.
      ole32: Fix spelling of GetComparisonData().
      Fix spelling of dwAssign.
      wldap32: Fix typo in the French resources.
      jscript/tests: Fix the '\n's in an ok() call.
      ddraw/tests: Fix compilation on systems that don't support nameless unions.
      Spelling fix in the ldt bitfields.

Hans Leidekker (1):
      winebrowser: Convert to Unicode.

Hin-Tak Leung (2):
      hhctrl.ocx: Return help window handle to caller.
      hhctrl.ocx: Look up in chm if url doesn't contain "://".

Huw Davies (2):
      gdi32: Don't overrun the current scanline while copying a glyph's bitmap.
      gdi32: LineDDA shouldn't include the end point.  Add some tests.

Hwang YunSong(황윤성 (8):
      winemine: Updated Korean resource.
      winecfg: Updated Korean resource.
      user32: Updated Korean resource.
      comdlg32: Updated Korean resource.
      shell32: Updated Korean resource.
      user32: Updated Korean resource.
      winecfg: Updated Korean resource.
      winefile: Updated Korean resource.

Hwang YunSong(황윤성) (10):
      progman: Updated Korean resource.
      notepad: Updated Korean resource.
      shell32: Updated Korean resource.
      uninstaller: Updated Korean resource.
      winecfg: Updated Korean resource.
      winemine: Update Korean resource.
      winhelp: Updated Korean resource.
      wordpad: Updated Korean resource.
      xcopy: Updated Korean resource.
      wineps.drv: Updated Korean resource.

Jacek Caban (17):
      mshtml: Added IHTMLWindow2::get_navigator implementation.
      mshtml: Don't crash if nsWebBrowser could not be created.
      mshtml: Remove unneeded includes.
      jscript: Added IObjectSafety implementation.
      jscript: Added IObjectSafety tests.
      include: Added ICanHandleException interface.
      mshtml.idl: Added DispHTMLWindow2 dispinterface.
      mshtml: Correctly handle NULL req in get_nscontainer_from_load_group.
      mshtmdid.h: Fixed IHTMLWindow2 dispids.
      mshtml.idl: Added IHTMLWindow3 declaration.
      mshtml: Make sure to null terminate buffer in parse_extern_script.
      mshtml: Added IActiveScriptDebug32 stub implementation.
      mshtml: Added generic IDispatchEx implementation and use it in OnNavigator.
      mshtml: Move get_typeinfo to dispex.c.
      mshtml: Added possibility to get node object from nsIDOMNode only if available.
      mshtml: Added IHTMLWindow3 stub implementation.
      mshtml: Store IActiveScriptParseProcedure in ScriptHost.

James Hawkins (21):
      msi: Reset the feature states if iInstallLevel is 0 or below.
      msi: Set the install context based on the ALLUSERS property.
      msi: Don't reorder the table when matching rows as the results are already ordered.
      msi: Test and reimplement MsiQueryProductState.
      msi: Open the install properties key based on the install context.
      msi: Don't execute the view again when modifying a WHERE query.
      advapi32: Fix a few tests that fail in win2k.
      crypt32: Fix a few tests that fail in win2k.
      ntdll: Fix a few tests that fail in win2k.
      kernel32: Add traces to see why the tests fail in win2k.
      shell32: Fix a few tests that fail in win2k.
      fusion: Implement IAssemblyCache::InstallAssembly.
      user32: Fix a test that fails in XP and win2k3.
      kernel32: Split the GetComputerName/Ex tests into their own test functions.
      kernel32: Fix a few failing tests in win2k.
      kernel32: Remove an invalid trace and comment.
      fusion: Explicitly check for -1 for a missing table.
      kernel32: Fix a test that fails in win2k.
      kernel32: Fix a test that fails in win2k and up.
      ole32: Fix a few tests that fail in win2k.
      oleaut32: Fix a few tests that fail in win2k.

Jeremy White (1):
      include: Add a resource type for scalable font resource (.fot) files.

John Klehm (1):
      wintab32: Implement WTSetA/W.

Jonathan Ernst (4):
      comdlg32: Updated French translation.
      winecfg: Updated French translation.
      winefile: Updated French translation.
      winhelp: Updated French translation.

Juan Lang (2):
      softpub: Forward softpub functions to wintrust.
      cryptui: Add stub DLL.

Jörg Höhle (1):
      wined3d: Fix missing break inside switch in SetAutoGenFilterType.

Kai Blin (1):
      dpnhpast: Implement a stub for DirectPlayNATHelpCreate.

Kusanagi Kouichi (4):
      winex11: Connect to XIM server dynamically.
      winex11.drv: Fix Solaris build error.
      user32: Handle IME messages more gracefully.
      winex11: Update caret position.

Lei Zhang (38):
      user32: Add more tests for ES_WANTRETURN.
      user32: Add more tests for single line edit control inside a dialog.
      user32: Add tests for edit controls and VK_RETURN.
      user32: Add tests for edit controls and VK_TAB.
      user32: Fix WM_CHAR return value for edit controls.
      user32: Handle ES_MULTILINE correctly for WM_KEYDOWN/VK_RETURN.
      user32: Handle VK_ESCAPE correctly in EDIT_WM_KeyDown.
      gdiplus: Add a stub for GdipSetClipRectI.
      user32: Add edit control check to see if its in a dialog on WM_CHAR/VK_RETURN.
      user32: Add edit control check to see if its in a dialog on WM_CHAR/VK_TAB.
      user32: Fix a typo.
      user32: Handle VK_TAB in EDIT_WM_KeyDown.
      gdiplus: Add a stub for GdipSetClipRegion.
      gdiplus: Add a stub for GdipSetCustomLineCapBaseCap.
      gdiplus: Add a stub for GdipGetCustomLineCapBaseInset.
      gdiplus: Add a stub for GdipSetCustomLineCapBaseInset.
      gdiplus: Add a stub for GdipSetCustomLineCapStrokeJoin.
      gdiplus: Add a stub for GdipSetCustomLineCapWidthScale.
      gdiplus: Add a stub for GdipSetEffectParameters.
      gdiplus: Add a stub for GdipSetEmpty.
      gdiplus: Add a stub for GdipSetImageAttributesCachedBackground.
      gdiplus: Add a stub for GdipSetImageAttributesGamma.
      gdiplus: Add a stub for GdipSetImageAttributesNoOp.
      gdiplus: Add a stub for GdipSetImageAttributesOutputChannel.
      gdiplus: Add a stub for GdipSetImageAttributesOutputChannelColorProfile.
      gdiplus: Add a stub for GdipSetImageAttributesRemapTable.
      gdiplus: Add a stub for GdipSetImageAttributesThreshold.
      gdiplus: Add a stub for GdipSetImageAttributesToIdentity.
      gdiplus: Add a stub for GdipSetInfinite.
      gdiplus: Add a stub for GdipSetLineColors.
      gdiplus: Add a stub for GdipSetLineLinearBlend.
      gdiplus: Add a stub for GdipSetLinePresetBlend.
      gdiplus: Add a stub for GdipSetLineTransform.
      gdiplus: Add a stub for GdipSetMetafileDownLevelRasterizationLimit.
      user32: Do checks in the right order in EDIT_BuildLineDefs_ML.
      user32: Handle ctrl + home in edit control.
      user32: Handle ctrl + end in edit control.
      msxml3: Check for xsltInit before calling it.

Louis Lenders (2):
      urlmon: Add stub for CoInternetSetFeatureEnabled.
      wininet: Improve stub for FindNextUrlCacheEntryW a tiny bit.

Luis C. Busquets Pérez (1):
      tools: Add Spanish translation to wine.desktop.

Maarten Lankhorst (47):
      dsound: Hold lock in GetStatus.
      quartz: Add more state transitions to the filtergraph.
      quartz: Get rid of code duplication and add a flush method.
      quartz: Make FileAsyncReader_WaitForNext return an empty sample in flushing state.
      quartz: Fix some memory leaks in the file source.
      quartz: Fix past mistake to release lock during seeking and changing state.
      quartz: Reset EcCompleteCount before starting filters.
      quartz: Handle flushing and end of stream notifications for input pins.
      quartz: Make wait timeout in directsound slightly larger.
      quartz: Fix deadlocks in pullpin.
      quartz: Make mpeg splitter keep track of play position and keep last sample if sending was not successful.
      quartz: Try creating the file reader from the filter source first before falling back to the generic async file reader.
      quartz: Drop packets in the transform filter if in the wrong state.
      quartz: Make the DirectSound renderer return S_FALSE packet if in the paused state.
      quartz: Don't free a null media type in the file source.
      quartz: Make the pullpin forward the BeginFlush before doing its own flushing.
      quartz: Remove while { } while construct.
      quartz: Generate a seek table for the mpeg splitter.
      quartz: Make the directsound renderer handle the Play->Pause->Play position without dropping data.
      quartz: Implement stop position in the filtergraph.
      quartz: Implement stop position in the mpeg splitter.
      include: Add ISeekingPassThru interface.
      quartz: Add a stub for SeekingPassThru.
      quartz: Add stubs for the IMediaSeeking interface in SeekingPassThru.
      quartz: Don't clean up in avi decoder if driver isn't opened.
      quartz: Set sane defaults for pin stream rate.
      quartz: Silence requests for IVideoWindow.
      quartz: Silence seeking fixmes on transform filter.
      quartz: Bring waveparser to the same level as the mpeg splitter.
      include: Add dvdmedia stub header.
      quartz: Add VIDEOINFOHEADER2 support to VideoRenderer.
      quartz: Update start_time if the current position is changed.
      include: Update aviriff header.
      quartz: Dump opendml indexes and header.
      quartz: Make the avi splitter skip index headers.
      quartz: Parse old style avi index.
      quartz: Add a Disconnect function to the parser and use it to clean up allocated memory in avisplitter.
      quartz: Fix discontinuities in wave parser.
      quartz: Fix IMediaSample2 SetPreroll and SetSyncPoint.
      quartz: Reject samples in video renderer when stopped.
      quartz: Reject samples in transform filter only when stopped.
      quartz: Make sure at least 1 sample is processed before returning.
      quartz: Check for discontinuities in the directsound renderer.
      quartz: Store the stream index in the avi stream for files that have them.
      quartz: Obtain the duration using the index in avisplitter.
      server: Make enum_winstations enumerate all the window stations with WINSTA_ENUMERATE right.
      server: Make enum_desktop enumerate all the desktops on the window station with the DESKTOP_ENUMERATE right.

Marcus Meissner (6):
      shell32: Correct casing for "Wine".
      d3d9: Initialized 2 variables with NULL.
      rpcrt4: Handle exit path where bind not allocated yet.
      wined3d: Handle out of array bounds state.
      winex11: Move code behind error return.
      advapi32: Initialize hLock.

Matthew D'Asaro (2):
      winex11: Add registry option to let wine decorate windows.
      winecfg: Add option to let wine decorate windows.

Michael Hoffman (3):
      powrprof: Implement IsPwrSuspendAllowed.
      powrprof: Implement IsPwrShutdownAllowed.
      powrprof: Implement IsPwrHibernateAllowed.

Michael Moss (1):
      wine.inf: Move winebrowser.exe to the system directory.

Michael Stefaniuc (8):
      localui: Add the Romanian translation.
      sane.ds: Add the Romanian translation.
      mpr: Add the Romanian translation.
      view: Add the Romanian translation.
      notepad: Add the Romanian translation.
      msacm32: Add the Romanian translation.
      quartz: Add missing lock releases on some code paths (Smatch).
      fonts: Add the Romanian glyphs SsTt with "comma below" to the tahoma font.

Mikołaj Zalewski (1):
      qedit/tests: Fix dependency.

Nikolay Sivov (7):
      gdiplus: Implement GdipCloneStringFormat.
      gdiplus: Implement GdipAddPathLine2I.
      gdiplus: Implement GdipAddPathArcI.
      gdiplus: Implement GdipCreateMatrix3I.
      gdiplus: Implement GdipCreatePath2I.
      gdiplus: Implemented GdipGetCustomLineCapBaseCap.
      gdiplus: Implemented GdipVectorTransformMatrixPoints.

Paul Vriens (1):
      rsaenh/tests: Fix a test on W2K and above.

Peter Urbanec (1):
      comctl32: Mousewheel support for updown control.

Petr Sumbera (2):
      winetest: Fix shell substitution syntax for Solaris.
      server: Workaround for conflict between Wine and Solaris list.h.

Piotr Caban (11):
      oleview: Added helpstring to functions.
      oleview: Fixed idl files generation with dual interfaces.
      oleview: Fixed idl files generation with oleautomation flag.
      oleview: Hide functions without id property in dual interfaces.
      oleview: Added returns as arguments in interfaces with oleautomation flag.
      oleview: Skip IDispatch functions in dual interfaces properly.
      oleview: Added coclass handling base.
      oleview: Removed memory leak in EnumImplTypes.
      oleview: CreateCoclassHeader partially implemented.
      oleview: Add dual interfaces support to coclasses.
      oleview: Fixed incorrect brackets bug.

Reece Dunn (3):
      tools/msvcmaker: Suppress deprecation warnings on VC8 and above.
      shlwapi: Fixed the todo blocks in the SHCreateStreamOnFile tests.
      shlwapi/tests: Enumerate the STGM sharing modes in the SHCreateStreamOnFile tests.

Rhys McGuckin (1):
      wintrust: Check for null CleanupPolicy function pointer.

Rico Schüller (5):
      d3d9: Make the shader test more precision tolerant.
      d3d9: fix two copy and paste mistakes.
      wined3d: Filter out invalid stuff in SetStreamSourceFreq().
      wined3d: Improve drawStridedInstanced().
      d3d9: Add stream_test with instancing.

Rob Shearman (34):
      shell32: Implement ParseDisplayName for EntireNetwork in the Network Places shell folder.
      mshtml: Support parsing the resource type in the res:// protocol.
      mshtml: Fix the buffer length being passed into MultiByteToWideChar in set_registry.
      winedos: The calling convention should come after the return type in the declaration of VGA_DoShowMouse for portability.
      rpcrt4: Implement I_RpcExceptionFilter.
      services: Split RPC_MainLoop into initialisation and the actual loop.
      services: Automatically start boot-start, system-start and auto-start services when services.exe is started, instead of in wineboot.exe.
      ole32: Use I_RpcExceptionFilter instead of custom exception filter for RPC calls.
      advapi32: Add exception handling around all service RPC calls.
      widl: Support non-default calling conventions for object methods.
      widl: Support non-default calling conventions for non-object functions.
      qmgr: Dynamically link to advpack.dll.
      rpcrt4: Add buffer size checks to base type unmarshalling.
      include: The unique attribute doesn't make any sense in the interface header, so remove it.
      include: Fix a typo in a level of indirection in tom.idl.
      include: Add local to interfaces or functions that take a void * parameter and so aren't designed to work remotely.
      pstorec: Fix incorrectly spelt PPST_PROMPTIFO type in pstorec.c and pstore.idl.
      widl: Check that attributes applied to interfaces, functions and arguments are applicable and issue an error if not.
      widl: Check that attributes applied to typedefs and fields are applicable and issue an error otherwise.
      widl: Make the attrs parameter passed to start_typelib const.
      widl: The odl attribute is valid for dispinterfaces.
      widl: Check that attributes are applicable for libraries,  modules, dispinterfaces and coclasses and otherwise issue an error.
      widl: Output a warning if duplicate attributes are specified.
      widl: Add support for the broadcast and idempotent operation attributes.
      widl: Write out TYPEFLAG, FUNCFLAG and VARFLAG flags for all attribute we currently parse.
      widl: Add functions to print an error or warning message using location information to enable these to be printed accurately when a check is done after an element is parsed.
      widl: Add checking to arguments of non-local functions.
      include: Make IContextMenu interface in shobjidl.idl local since some parameters are pointers to structures with fields that can't be marshalled.
      ole32: Add some tests for OleGetClipboard.
      ole32: Fix OLEClipbrd_IDataObject_QueryGetData to conform to the tests.
      ole32: Add tests for clipboard's implementation of IDataObject_GetData.
      rpcrt4: Test and fix I_RpcExceptionFilter.
      widl: Change alls calls to error in the parser to error_loc so that line number information is printed.
      msi: Fix the value parameter of IWineMsiRemotePackage::FormatRecord to have the right level of indirection for an [out] parameter.

Roderick Colenbrander (2):
      wined3d: Use the render target its palette when performing a texture copy as the texture doesn't hold one.
      wined3d: Remove a PBO when a converted surface is detected.

Rok Mandeljc (53):
      avifil32: Updated Slovenian translation.
      gphoto2.ds: Added Slovenian translation.
      iccvid: Added Slovenian translation.
      mscacm32: Added Slovenian translation.
      mshtml: Added Slovenian translation.
      sane.ds: Added Slovenian translation.
      winspool.drv: Added Slovenian translation.
      msi: Added Slovenian translation.
      comctl32: Updated Slovenian translation.
      msrle32: Updated Slovenian translation.
      user32: Updated Slovenian translation.
      winmm: Updated Slovenian translation.
      comdlg32: Updated Slovenian translation.
      localspl: Added Slovenian translation.
      wininet: Updated Slovenian translation.
      wineboot: Added Slovenian translation.
      winemine: Updated Slovenian translation.
      notepad: Updated Slovenian translation.
      clock: Updated Slovenian translation.
      winhelp: Updated Slovenian translation.
      winefile: Updated Slovenian translation.
      view: Updated Slovenian translation.
      progman: Updated Slovenian translation.
      browseui: Added Slovenian translation.
      oledlg: Added Slovenian translation.
      credui: Added Slovenian translation.
      wordpad: Added Slovenian translation.
      net: Added Slovenian Translation.
      mpr: Added Slovenian translation.
      hhctrl.ocx: Added Slovenian translation.
      uninstaller: Added Slovenian translation.
      winecfg: Added Slovenian translation.
      shdoclc: Added Slovenian translation.
      shlwapi: Added Slovenian translation.
      write: Added Slovenian translation.
      devenum: Added Slovenian translation.
      cmdlgtest: Updated Slovenian translation.
      wineconsole: Added Slovenian translation.
      shell32: Updated Slovenian translation.
      start: Updated Slovenian translation.
      reg: Added Slovenian translation.
      xcopy: Added Slovenian translation.
      taskmgr: Added Slovenian translation.
      localui: Added Slovenian translation.
      cmd: Updated Slovenian translation.
      msvidc32: Added Slovenian translation.
      msvfw32: Added Slovenian translation.
      regedit: Updated Slovenian translation.
      oleaut32: Added Slovenian translation.
      winmm: Slovenian translation: Add a string that got lost during last update.
      comdlg32: Fix a mistake in Slovenian translation.
      winecfg: Update Slovenian translation to reflect recently introduced changes.
      shell32: Updated Slovenian translation to reflect changes in About dialog.

Sergey Khodych (1):
      dinput/tests: Add test to show dinput does not use user defined data format for keyboard.

Stefan Dösinger (18):
      d3d9: Enforce ColorFill restrictions.
      d3d9: Remove some test trace lines.
      d3d9: Read from a slightly different spot in a test.
      d3d9: Accept nvidia hardware vp garbage.
      d3d9: Fix a few ok conditions in the visual tests.
      d3d9: Run the visual test with hardware vertex processing.
      wined3d: Put implicit surfaces into drawable on unload.
      wined3d: Mark the SYSMEM copy outdated after releasing memory.
      wined3d: Store the number of aux buffers in the context.
      wined3d: Report D3DUSAGE_QUERY_WRAPANDMIP support.
      wined3d: Make the min mip lookup type a texture property.
      wined3d: Disable texture filtering on textures that do not support it.
      wined3d: Make the mag filter lookup a separate array.
      wined3d: Disable MAG filters on formats that do not support them.
      wined3d: Disable blending when clearing.
      d3d9: Make the srgb reading test less strict.
      d3d9: Accept erros in the fvp->3.0 pixel shader varying test.
      d3d9: Some Windows drivers set undefined attributes to 0.0.

Steven Edwards (2):
      server: Remove unneeded semicolon.
      include/setupapi: Remove extra semicolons.

Tomasz Jezierski (2):
      hhctrl.ocx: Fix for writing outside allocated memory in HH_AddToolbar.
      hhctrl.ocx: Apparently it is possible to have chm file without #STRINGS in it, so we should not stop processing file at it.

Tony Wasserka (1):
      d3dx9: Add d3dx9tex.h.

Vincent Povirk (2):
      start.exe: Add /Unix switch for native file managers.
      tools: Modify wine.desktop to use start.exe /unix.

Vitaliy Margolen (16):
      iccvid: Add Russian translation.
      localui: Add Russian translation.
      mpr: Add Russian translation.
      msvfw32: Add Russian translation.
      msvidc32: Add Russian translation.
      sane.ds: Add Russian translation.
      msacm32: Add Russian translation.
      winex11: Get the ScrollLock mask.
      winex11: Properly report state of the caps-lock and num-lock and scroll-lock keys.
      wininet: Properly initialize struct.
      dinput: Assign button GUID to joystick buttons.
      dinput: Joysticks are not supported for DX v3.
      dinput: Don't use dead-zone from the device.
      winex11.drv: Send scan code when adjusting modifier key states.
      Update Russian translation.
      gphoto2.ds: Add Russian translation.

--
Alexandre Julliard
julliard@winehq.org
