Release 951124
Tue Nov 21 18:49:10 1995 Alexandre Julliard <julliard@sunsite.unc.edu>
* [configure.in] [Makefile] [misc/dos_fs.c]
Got rid of autoconf.h file.
* [debugger/dbg.y]
More logical behavior upon syntax errors.
* [include/hook.h] [windows/hook.c]
Changed hook structure and rewrote most of the hook functions for
better compatibility, based on investigations by Alex Korobka.
* [include/message.h] [windows/message.c]
Added hooks to message queue structure and made the structure
layout Windows-compatible.
Added support for WH_MOUSE, WH_KEYBOARD, WH_HARDWARE and
WH_JOURNALRECORD hooks.
* [misc/main.c]
Added command-line option for changing the language at run-time
(not implemented yet), based on a suggestion from Michael Patra.
* [objects/cursoricon.c]
Fixed silly SEGPTR bug in DumpIcon().
Mon Nov 20 22:22:22 1995 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [controls/listbox.c] [controls/combo.c] [include/listbox.h]
Partial implementaion of LBS_EXTENDEDSEL style,
yet more updates for drag & drop support. Now works.
* [windows/defwnd.c]
More message handlers.
* [windows/win.c]
DragObject, DragDetect, AnyPopup functions.
* [controls/listbox.c]
More kludgy fixes (WM_...TOITEM, etc.).
* [objects/cursoricon.c] [objects/oembitmap.c]
IconToCursor skeleton, patch for OBM_LoadCursorIcon to handle new
cursor.
* [include/bitmaps/ocr*]
New OEM cursors.
Mon Nov 20 11:05:20 EST 1995 Jim Peterson <jspeter@birch.ee.vt.edu>
* [toolkit/heap.c]
Swapped flags and size arguments to LocalRealloc as per changes in
memory/local.c by William Magro in previous release.
* [include/wintypes.h]
Reinstated the #define's for 'min' and 'max', since they're part of
the Windows API. I really don't think it's a wise idea, so I put
a '#ifndef DONT_DEFINE_min_AND_max' around them. I think the actual
WINE code should never use these (it should use 'MIN' and 'MAX'
instead).
* [loader/*]
Put '#ifndef WINELIB' around many things that WINElib should not need.
* [controls/edit.c]
Took out many '#if defined(WINELIB)' sections with the associated
comment 'temporary fix, until Local memory is correctly implemented in
WINELIB', since the effective translations are now in
toolkit/miscstubs.c.
Took out the #ifndef's I put in EDIT_ClearText. Whoever modified this
file fixed (or at least postponed) the bug I had encountered.
* [loader/task.c]
Put an #ifdef in TASK_CreateTask() that hardwires the current drive to
C: This will probably cause a lot of trouble if this change is
forgotten in the future, but it will let things like the OpenFileName
dialog work for now.
* [toolkit/libres.c] [toolkit/Makefile.in] [toolkit/Makefile]
[include/libres.h]
Made new libres.c file, which will contain functions for supporting
accessing resources by name in WINElib. 'winerc' will need to be
changed.
* [toolkit/heap.c]
Refined memory routines to allow for differences between LocalAlloc
and GlobalAlloc and between LocalSize and GlobalSize.
* [windows/message.c] [include/windows.h]
Defined the GetCurrentTime routine in windows/message.c, and removed
the #define in windows.h.
Mon Nov 20 00:36:42 MET 1995 Sven Verdoolaege <skimo@dns.ufsia.ac.be>
* [*/*]
Added new debugging type DEBUG_WIN32 and DEBUG_ENV.
* [loader/module.c]
Added undocumented GetExpWinVer.
* [tools/build.c]
Previous code didn't pop possibly changed %esi, %edi and %edx
from the stack.
* [win32/advapi.c]
Added GetUserNameA.
* [win32/code_page.c]
Added stub for MultiByteToWideChar.
* [win32/console.c]
Added SetConsoleCtrlHandler stub.
* [win32/file.c]
Added ReadFile CreateFileA GetFileInformationByHandle stubs.
Added CloseHandle.
* [win32/memory.c]
Changed VirtualAlloc and VirtualFree.
* [win32/process.c]
Added ExitProcess.
Sun Nov 19 17:54:42 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [include/windows.h]
Fixed a few broken structure definitions.
* [loader/resource.c]
FindResource(): Need to check for '#xxx' strings here.
* [miscemu/int21.c]
FindNext(): Return MS-DOS filenames uppercase.
* [objects/cursoricon.c]
CreateIcon(), CreateCursor(): Added missing element to CURSORICONINFO
initializers.
* [misc/file.c]
_lopen(): Files opened in OF_WRITE mode are truncated.
OpenFile(): Ignore OF_READ/OF_WRITE/OF_READWRITE when files are
created; use read/write mode.
* [misc/profile.c]
load(): Rewritten.
* [misc/commdlg.c]
Fixed bad call to strncpy() that smashed the stack.
* [controls/combo.c] [windows/winpos.c] [memory/selector.c]
Operator precedence fixes. People who use gcc 2.7.1 don't need a
debugger :-)
* [if1632/gdi.spec] [objects/palette.c]
Add ResizePalette() and AnimatePalette() stubs. They don't do anything,
but sometimes that's good enough.
Fri Nov 17 09:10:35 GMT 1995 John Harvey <john@division.co.uk>
* [include/wine.h] [include/registers.h] [include/winsock.h]
Added definitions for Unixware.
* [loader/signal.c] [misc/comm.c] [misc/winsocket.c]
Misc. fixes for Unixware.
* [loader/task.c]
Made assignemts to context in InitTask for registers use the macros
from registers.h to make them more portable. (Needed for Unixware)
* [tools/build.c]
Fixed register acces routines to work on Unixware. Bit grubby but
it seems to work.
* [controls/edit.c]
EDIT_WM_NCCreate allocates local heap if hasn't been previously
allocated.
* [miscemu/int21.c]
mkdir now creates directory with permission to access it.
* [misc/dos_fs.c]
mkdir now creates directory with permission to access it.
DOS_opendir now uses linked list of dirents to avoid problems with
realloc changing address of malloced memory.
Thu Nov 16 12:47:13 1995 Michael Patra <patra@itp1.Physik.TU-Berlin.DE>
* [controls/menu.c]
MENU_CalcItemSize(): Fixed handling of empty menu items.
Sat Nov 11 21:46:54 1995 Hans de Graaff <graaff@twi72.twi.tudelft.nl>
* [misc/file.c]
In OpenFile, unlink should be done on the unix filename.
Sat Nov 11 16:43:29 1995 Cameron Heide (heide@ee.ualberta.ca)
* [include/handle32.h]
New header file containing internal Win32 kernel handle
information.
* [win32/file.c]
Added ReadFile, CreateFile, and CloseFileHandle, and did
some reorganizing to match the new handle allocation scheme.
* [win32/init.c]
Added CloseHandle and the creation of standard I/O handles.
* [win32/object_mgt.c]
New module for allocating and freeing Win32 kernel handles.
diff --git a/objects/bitmap.c b/objects/bitmap.c
index dde4d94..72e18ad 100644
--- a/objects/bitmap.c
+++ b/objects/bitmap.c
@@ -150,15 +150,20 @@
LONG height;
XImage * image;
+ /* KLUDGE! */
+ if (count < 0) {
+ fprintf(stderr, "Negative number of bytes (%ld) passed to GetBitmapBits???\n", count );
+ count = -count;
+ }
bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC );
if (!bmp) return 0;
- dprintf_bitmap(stddeb, "GetBitmapBits: %dx%d %d colors %p\n",
- bmp->bitmap.bmWidth, bmp->bitmap.bmHeight,
- 1 << bmp->bitmap.bmBitsPixel, buffer );
/* Only get entire lines */
height = count / bmp->bitmap.bmWidthBytes;
if (height > bmp->bitmap.bmHeight) height = bmp->bitmap.bmHeight;
+ dprintf_bitmap(stddeb, "GetBitmapBits: %dx%d %d colors %p fetched height: %ld\n",
+ bmp->bitmap.bmWidth, bmp->bitmap.bmHeight,
+ 1 << bmp->bitmap.bmBitsPixel, buffer, height );
if (!height) return 0;
if (!(image = BITMAP_BmpToImage( &bmp->bitmap, buffer ))) return 0;
@@ -180,6 +185,11 @@
LONG height;
XImage * image;
+ /* KLUDGE! */
+ if (count < 0) {
+ fprintf(stderr, "Negative number of bytes (%ld) passed to SetBitmapBits???\n", count );
+ count = -count;
+ }
bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC );
if (!bmp) return 0;
diff --git a/objects/color.c b/objects/color.c
index 41e222c..03cefa9 100644
--- a/objects/color.c
+++ b/objects/color.c
@@ -15,15 +15,15 @@
#include "xmalloc.h"
Colormap COLOR_WinColormap = 0;
-int COLOR_FixedMap = 0;
+static int COLOR_FixedMap = 0;
-int COLOR_Redshift = 0;
-int COLOR_Redmax = 0;
-int COLOR_Greenshift = 0;
-int COLOR_Greenmax = 0;
-int COLOR_Blueshift = 0;
-int COLOR_Bluemax = 0;
-int COLOR_Graymax = 0;
+static int COLOR_Redshift = 0;
+static int COLOR_Redmax = 0;
+static int COLOR_Greenshift = 0;
+static int COLOR_Greenmax = 0;
+static int COLOR_Blueshift = 0;
+static int COLOR_Bluemax = 0;
+static int COLOR_Graymax = 0;
/* System palette static colors */
diff --git a/objects/cursoricon.c b/objects/cursoricon.c
index fcb553e..4dc22b2 100644
--- a/objects/cursoricon.c
+++ b/objects/cursoricon.c
@@ -33,6 +33,7 @@
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"
+#include "task.h"
Cursor CURSORICON_XCursor = None; /* Current X cursor */
@@ -411,6 +412,40 @@
return hNew;
}
+/***********************************************************************
+ * CURSORICON_IconToCursor
+ *
+ * Should convert bitmap to mono and truncate if too large
+ * FIXME: if icon is passed returns a copy of OCR_DRAGOBJECT cursor
+ * but should actually convert icon to cursor.
+ */
+HCURSOR CURSORICON_IconToCursor(HICON hIcon)
+{
+ CURSORICONINFO *ptr = NULL;
+
+ if(hIcon)
+ if (!(ptr = (CURSORICONINFO*)GlobalLock( hIcon ))) return FALSE;
+ if (ptr->bPlanes * ptr->bBitsPerPixel == 1)
+ {
+ return hIcon; /* assuming it's a cursor */
+ }
+ else
+ {
+ /* kludge */
+
+ HTASK hTask = GetCurrentTask();
+ TDB* pTask = (TDB *)GlobalLock(hTask);
+
+ if(!pTask) return 0;
+
+ fprintf( stdnimp, "IconToCursor: Icons are not supported, returning default!\n");
+ return CURSORICON_Copy( pTask->hInstance ,
+ CURSORICON_Load(0,MAKEINTRESOURCE(OCR_DRAGOBJECT),
+ SYSMETRICS_CXCURSOR, SYSMETRICS_CYCURSOR, 1, TRUE) );
+ }
+
+ return 0;
+}
/***********************************************************************
* LoadCursor (USER.173)
@@ -453,7 +488,7 @@
HICON CreateCursor( HANDLE hInstance, INT xHotSpot, INT yHotSpot,
INT nWidth, INT nHeight, LPSTR lpANDbits, LPSTR lpXORbits)
{
- CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 1, 1 };
+ CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 };
dprintf_cursor( stddeb, "CreateCursor: %dx%d spot=%d,%d xor=%p and=%p\n",
nWidth, nHeight, xHotSpot, yHotSpot, lpXORbits, lpANDbits);
@@ -467,7 +502,7 @@
HICON CreateIcon( HANDLE hInstance, INT nWidth, INT nHeight, BYTE bPlanes,
BYTE bBitsPixel, LPSTR lpANDbits, LPSTR lpXORbits)
{
- CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, bPlanes, bBitsPixel };
+ CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel };
dprintf_icon( stddeb, "CreateIcon: %dx%dx%d, xor=%p, and=%p\n",
nWidth, nHeight, bPlanes * bBitsPixel, lpXORbits, lpANDbits);
@@ -584,16 +619,17 @@
/***********************************************************************
* DumpIcon (USER.459)
*/
-DWORD DumpIcon( CURSORICONINFO *info, WORD *lpLen,
- LPSTR *lpXorBits, LPSTR *lpAndBits )
+DWORD DumpIcon( SEGPTR pInfo, WORD *lpLen,
+ SEGPTR *lpXorBits, SEGPTR *lpAndBits )
{
+ CURSORICONINFO *info = PTR_SEG_TO_LIN( pInfo );
int sizeAnd, sizeXor;
if (!info) return 0;
sizeXor = info->nHeight * info->nWidthBytes;
sizeAnd = info->nHeight * ((info->nWidth + 15) / 16 * 2);
- if (lpAndBits) *lpAndBits = (LPSTR)(info + 1);
- if (lpXorBits) *lpXorBits = (LPSTR)(info + 1) + sizeAnd;
+ if (lpAndBits) *lpAndBits = pInfo + sizeof(CURSORICONINFO);
+ if (lpXorBits) *lpXorBits = pInfo + sizeof(CURSORICONINFO) + sizeAnd;
if (lpLen) *lpLen = sizeof(CURSORICONINFO) + sizeAnd + sizeXor;
return MAKELONG( sizeXor, sizeXor );
}
diff --git a/objects/metafile.c b/objects/metafile.c
index e1d176e..6cc68b6 100644
--- a/objects/metafile.c
+++ b/objects/metafile.c
@@ -7,6 +7,7 @@
*/
#include <string.h>
+#include <fcntl.h>
#include "gdi.h"
#include "bitmap.h"
#include "metafile.h"
@@ -407,7 +408,7 @@
break;
case META_RECTANGLE:
- Ellipse(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
+ Rectangle(hdc, *(mr->rdParam + 3), *(mr->rdParam + 2),
*(mr->rdParam + 1), *(mr->rdParam));
break;
@@ -575,7 +576,7 @@
HANDLE hMem = mf->hMetaHdr;
METAHEADER *mh = (METAHEADER *)GlobalLock(hMem);
- dprintf_metafile(stddeb,"GetMetaFileBits: hmf in: %x\n", hmf);
+ dprintf_metafile(stddeb,"GetMetaFileBits: hmf in: "NPFMT"\n", hmf);
/* can't get bits of disk based metafile */
/* FIXME: should the disk file be loaded in this case? */
@@ -591,7 +592,7 @@
GlobalUnlock(hMem);
GlobalFree(hmf);
- dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: %x\n", hMem);
+ dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: "NPFMT"\n", hMem);
return hMem;
}
@@ -607,7 +608,7 @@
METAFILE *mf;
METAHEADER *mh = (METAHEADER *)GlobalLock(hMem);
- dprintf_metafile(stddeb,"SetMetaFileBits: hMem in: %x\n", hMem);
+ dprintf_metafile(stddeb,"SetMetaFileBits: hMem in: "NPFMT"\n", hMem);
if (!mh) return FALSE;
@@ -626,12 +627,12 @@
mf->hMetaHdr = hMem;
mf->wMagic = METAFILE_MAGIC;
mf->MetaOffset = mh->mtHeaderSize * 2;
- mf->hFile = mf->hBuffer = (HANDLE) NULL;
+ mf->hFile = (int) (mf->hBuffer = (HANDLE) NULL);
GlobalUnlock(hMem);
GlobalUnlock(hmf);
- dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %x\n", hmf);
+ dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: "NPFMT"\n", hmf);
return hmf;
}
diff --git a/objects/oembitmap.c b/objects/oembitmap.c
index c850994..facd5b4 100644
--- a/objects/oembitmap.c
+++ b/objects/oembitmap.c
@@ -167,19 +167,31 @@
#include "bitmaps/ocr_sizenesw"
#include "bitmaps/ocr_sizewe"
#include "bitmaps/ocr_sizens"
+#include "bitmaps/ocr_bummer"
+#include "bitmaps/ocr_dragobject"
#if 0
#include "bitmaps/ocr_sizeall"
#include "bitmaps/ocr_icocur"
#endif
/* Cursor are not all contiguous (go figure...) */
+#define OCR_FIRST0 OCR_BUMMER
+#define OCR_LAST0 OCR_DRAGOBJECT
+#define OCR_BASE0 0
+
#define OCR_FIRST1 OCR_NORMAL
#define OCR_LAST1 OCR_UP
+#define OCR_BASE1 (OCR_BASE0 + OCR_LAST0 - OCR_FIRST0 + 1)
+
#define OCR_FIRST2 OCR_SIZE
-#define OCR_LAST2 OCR_SIZENS /* OCR_ICOCUR */
-#define NB_CURSORS (OCR_LAST2 - OCR_FIRST2 + 1 + OCR_LAST1 - OCR_FIRST1 + 1)
+#define OCR_LAST2 OCR_SIZENS
+#define OCR_BASE2 (OCR_BASE1 + OCR_LAST1 - OCR_FIRST1 + 1)
+
+#define NB_CURSORS (OCR_BASE2 + OCR_LAST2 - OCR_FIRST2 + 1)
static char **OBM_Cursors_Data[NB_CURSORS] =
{
+ ocr_bummer, /* OCR_BUMMER */
+ ocr_dragobject,/* OCR_DRAGOBJECT */
ocr_normal, /* OCR_NORMAL */
ocr_ibeam, /* OCR_IBEAM */
ocr_wait, /* OCR_WAIT */
@@ -389,9 +401,11 @@
if (fCursor)
{
if ((id >= OCR_FIRST1) && (id <= OCR_LAST1))
- id -= OCR_FIRST1;
+ id = OCR_BASE1 + id - OCR_FIRST1;
else if ((id >= OCR_FIRST2) && (id <= OCR_LAST2))
- id += (OCR_LAST1 - OCR_FIRST1 + 1) - OCR_FIRST2;
+ id = OCR_BASE2 + id - OCR_FIRST2;
+ else if ((id >= OCR_FIRST0) && (id <= OCR_LAST0))
+ id = OCR_BASE0 + id - OCR_FIRST0;
else return 0;
if (OBM_Cursors[id]) return OBM_Cursors[id];
}
diff --git a/objects/palette.c b/objects/palette.c
index ccd0b42..f49f066 100644
--- a/objects/palette.c
+++ b/objects/palette.c
@@ -135,8 +135,17 @@
*/
BOOL ResizePalette(HPALETTE hPal, UINT cEntries)
{
- fprintf(stdnimp,"ResizePalette: empty stub! \n");
- return FALSE;
+ fprintf(stdnimp,"ResizePalette: empty stub! \n");
+ return FALSE;
+}
+
+/***********************************************************************
+ * AnimatePalette (GDI.367)
+ */
+void AnimatePalette(HPALETTE hPal, UINT StartIndex, UINT NumEntries,
+ LPPALETTEENTRY PaletteColors)
+{
+ fprintf(stdnimp,"AnimatePalette: empty stub! \n");
}
/***********************************************************************