Release 960516
Thu May 16 13:35:31 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [*/*.c]
Renamed RECT, POINT and SIZE structures to RECT16, POINT16 and
SIZE16. Implemented Win32 version of most functions that take
these types as parameters.
* [configure]
Patched autoconf to attempt to correctly detect -lnsl and
-lsocket. Please check this out.
* [controls/button.c]
Added support for Win32 BM_* messages.
* [controls/menu.c]
Avoid sending extra WM_MENUSELECT messages. This avoids crashes
with Excel.
* [memory.heap.c] [include/heap.h]
Added support for SEGPTRs in Win32 heaps. Added a few macros to
make using SEGPTRs easier. They are a bit slower than MAKE_SEGPTR,
but they work with Win32.
* [memory/atom.c]
Implemented Win32 atom functions.
* [memory/local.c]
Fixed LocalReAlloc() changes to avoid copying the whole block twice.
* [win32/memory.c]
Use /dev/zero instead of MAP_ANON for VirtualAlloc().
* [windows/class.c]
Properly implemented the Win32 class functions.
* [windows/winproc.c] (New file)
New file handling the message translation between Win16 and Win32.
Mon May 13 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/mdi.c] [windows/menu.c]
Improved WM_MDICREATE and WM_MDICASCADE handling.
* [windows/event.c] [objects/bitblt.c]
Handle GraphicsExpose event for BitBlt from screen to screen.
* [windows/event.c] [windows/win.c] [windows/nonclient.c]
Bunch of fixes for problems with -managed.
* [windows/win.c] [windows/winpos.c]
Changed conditions for WM_SIZE, WM_MOVE, and WM_GETMINMAXINFO
in CreateWindow.
* [windows/win.c] [windows/queue.c] [misc/user.c]
Do not send WM_PARENTNOTIFY when in AppExit and call WH_SHELL
on window creation/destruction.
* [objects/palette.c]
Crude RealizePalette(). At least something is visible in LviewPro.
Sun May 12 02:05:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
* [if1632/gdi32.spec]
Added Rectangle (use win16 version).
* [if1632/kernel32.spec]
Added GetWindowsDirectoryA (use win16 GetWindowsDirectory).
* [if1632/user32.spec]
Added GetSubMenu, MoveWindow, SetScrollPos, SetScrollRange (use win16
versions).
Added SetWindowsHookExA (empty stub for now).
* [include/handle32.h]
Changed #include <malloc.h> to #include <stdlib.h> to prevent
hate message from FreeBSD compiler.
* [win32/newfns.c]
Added new function SetWindowsHookEx32A (empty stub for now).
* [win32/user32.c]
Removed redundant debugging printf statement.
Sun May 12 01:24:57 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [memory/local.c]
Avoid creating adjacent free blocks.
Free the block in LocalReAlloc() before allocating a new one.
Fixed LocalReAlloc() for discarded blocks.
Fri May 10 23:05:12 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [resources/sysres_Fi.rc]
ChooseFont and ChooseColor dialogs updated.
Fri May 10 17:19:33 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/drive.c,if1632/kernel.spec]
GetCurrentDirectory(),SetCurrentDirectory() implemented.
* [if1632/advapi32.spec] [if1632/kernel.spec] [if1632/shell.spec]
[include/windows.h] [include/winreg.h] [loader/main.c]
[misc/main.c] [misc/shell.c] [misc/registry.c]
Registry fixes:
- loads win95 registry databases,
- save only updated keys on default,
- now adhers to the new function naming standard,
- minor cleanups.
Tue May 7 22:36:13 1996 Albrecht Kleine <kleine@ak.sax.de>
* [combo.c]
Added WM_COMMAND-handling for interaction between EDIT and COMBOLBOX
and synchronized mine with Greg Kreider's works.
* [commdlg.c]
Bugfix in ChooseFont: font size handling.
diff --git a/objects/gdiobj.c b/objects/gdiobj.c
index e957f7e..6af4d94 100644
--- a/objects/gdiobj.c
+++ b/objects/gdiobj.c
@@ -11,12 +11,12 @@
#include "bitmap.h"
#include "brush.h"
#include "font.h"
+#include "heap.h"
#include "palette.h"
#include "pen.h"
#include "region.h"
#include "callback.h"
#include "stddebug.h"
-/* #define DEBUG_GDI */
#include "debug.h"
#include "xmalloc.h"
@@ -160,7 +160,7 @@
*/
BOOL GDI_Init(void)
{
- HPALETTE hpalette;
+ HPALETTE16 hpalette;
/* Create default palette */
@@ -244,7 +244,7 @@
/***********************************************************************
* DeleteObject (GDI.69)
*/
-BOOL DeleteObject( HGDIOBJ obj )
+BOOL DeleteObject( HGDIOBJ16 obj )
{
/* Check if object is valid */
@@ -380,6 +380,8 @@
};
int i, retval = 0;
+ LOGPEN *pen;
+ LOGBRUSH *brush = NULL;
dprintf_gdi( stddeb, "EnumObjects: %04x %d %08lx %08lx\n",
hdc, nObjType, (DWORD)lpEnumFunc, lParam );
@@ -387,40 +389,50 @@
{
case OBJ_PEN:
/* Enumerate solid pens */
+ if (!(pen = SEGPTR_NEW(LOGPEN))) break;
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
{
- LOGPEN pen = { PS_SOLID, { 1, 0 }, solid_colors[i] };
- retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&pen),
+ pen->lopnStyle = PS_SOLID;
+ pen->lopnWidth.x = 1;
+ pen->lopnWidth.y = 0;
+ pen->lopnColor = solid_colors[i];
+ retval = CallEnumObjectsProc( lpEnumFunc, SEGPTR_GET(pen),
lParam );
dprintf_gdi( stddeb, "EnumObject: solid pen %08lx, ret=%d\n",
solid_colors[i], retval);
if (!retval) break;
}
+ SEGPTR_FREE(pen);
break;
case OBJ_BRUSH:
/* Enumerate solid brushes */
+ if (!(brush = SEGPTR_NEW(LOGBRUSH))) break;
for (i = 0; i < sizeof(solid_colors)/sizeof(solid_colors[0]); i++)
{
- LOGBRUSH brush = { BS_SOLID, solid_colors[i], 0 };
- retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&brush),
+ brush->lbStyle = BS_SOLID;
+ brush->lbColor = solid_colors[i];
+ brush->lbHatch = 0;
+ retval = CallEnumObjectsProc( lpEnumFunc, SEGPTR_GET(brush),
lParam );
dprintf_gdi( stddeb, "EnumObject: solid brush %08lx, ret=%d\n",
solid_colors[i], retval);
if (!retval) break;
}
- if (!retval) break;
/* Now enumerate hatched brushes */
- for (i = HS_HORIZONTAL; i <= HS_DIAGCROSS; i++)
+ if (retval) for (i = HS_HORIZONTAL; i <= HS_DIAGCROSS; i++)
{
- LOGBRUSH brush = { BS_HATCHED, RGB(0,0,0), i };
- retval = CallEnumObjectsProc( lpEnumFunc, MAKE_SEGPTR(&brush),
+ brush->lbStyle = BS_HATCHED;
+ brush->lbColor = RGB(0,0,0);
+ brush->lbHatch = i;
+ retval = CallEnumObjectsProc( lpEnumFunc, SEGPTR_GET(brush),
lParam );
dprintf_gdi( stddeb, "EnumObject: hatched brush %d, ret=%d\n",
i, retval);
if (!retval) break;
}
+ SEGPTR_FREE(brush);
break;
default: