tree 3cacdd308943d2828ef570bb249eddca8e441fb5
parent 5819953c2ac390b6b716b1c2744f3400448baf56
author Alexandre Julliard <julliard@winehq.org> 768078900 +0000
committer Alexandre Julliard <julliard@winehq.org> 768078900 +0000

Release 940505

May 1, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)

	* [loader/signal.c]
	Add XUngrabPointer() & XUngrabServer() in wine_fault().

Fri Apr 22 19:30:08 1994  Erik Bos (erik@trashcan.hacktic.nl)

	* [objects/bitblt.c]
	color_stretch() rewritten to use ints only. *fast!*
	BLACKONWHITE & WHITEONBLACK stretchmodes redirected to
	use color_stretch().

Mon May  2 21:39:43 1994  Erik Bos (erik@trashcan.hacktic.nl)

	* [controls/menu.c]
	SetSysMenu() added.

	* [misc/cursor.c]
	GetCursor() added.

	* [misc/main.c]
	SwapMouseButton() added, (NOP).

	* [windows/win.c]
	GetDesktopHwnd() added.

	* [if1632/*spec]
	Added not implemented functions defs as comment.

	* [misc/winsocket.c]
	Change WSAGetXbyY() functions to non-blocking ones,
	Added WSAAsyncSelect(). 
	(WSA functions can't be canceled yet).

Wed Apr 20 23:58:58 1994  Scott A. Laird  (scott@curly)

	* misc/profile.c: Fixed bug with GetIniFileName returning wrong
	path when given a simple file name.  Fixed GetSetProfile to allow
	enumerating all key names when KeyName is null.

Apr 25, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)

	* [objects/bitblt.c]
	Add protection to BitBlt() & StretchBlt() for width or height = 0.

	* [windows/nonclient.c]
	Avoid painting in NC_DoNCPaint() if IsWindowVisible().
	Simplify NC_TrackMouseMenuBar() because code moved to MenuFocusLoop().

	* [windows/win.c]
	CreateWindowEx() & DestroyWindow() now call respectively
		AddWindowToTask() & RemoveWindowFromTask().
	New empty stub for function AnyPopup().

	* [loader/library.c]
	Bug Fix : GetModuleFileName() now return full path filename.

	* [include/menu.h] [controls/menu.c]
	Add hText handle and remove obsolete MENUITEM struct members.
	Add a ReleaseCapture() in SetMenu() when menubar changed while captured.
	Add MenuMouseMove() MenuButtonUp() in function MenuFocusLoop().

	* [misc/file.c]
	GetTempFilename() now create a file.
	_lcreate() use unix open (name, mode, perm), with perm=O666.

	* [if1632/relay.c]
	Remove temporarly builtin SHELL.DLL, Add MMSYSTEM.DLL in builtin list.

	* New file [misc/mmsystem.c]
	* New file [include/mmsystem.h]
	* New file [if1632/mmsystem.spec]
	Many, many empty stubs ... :-)
