Release 940607
Tue Jun 7 08:41:27 1994 Bob Amstadt (bob@pooh)
* loader/selector.c (FixupFunctionPrologs):
New function to fixup loaded DLL function prologs. It replaces the
do nothing code with code that loads DS with the appropriate data
segment for the DLL.
* misc/cursor.c (LoadCursor):
Disabled cursor loading from .EXE or .DLL. The code needs to handle
the possibility of multiple cursors in a single directory. Also,
it should check to see if the cursor is the right size.
* objects/font.c (EnumFonts):
Checked for lpLogFontList[i] == NULL
* objects/gdiobj.c (SetObjectOwner):
Removed stub. Replaced with simple return in gdi.spec. This
function is not defined for the retail version of Windows.
* memory/heap.c (WIN16_LocalHandleDelta):
New function. This is really a dummy that imitates the proper
return values.
* loader/library.c (GetProcAddress):
Fixed definition of IS_BUILTIN_DLL() macro.
Mon Jun 6 18:15:40 1994 Bob Amstadt (bob@pooh)
* miscemu/int21.c (SeekFile):
Needed to return current position in DX:AX.
* windows/utility.c (windows_wsprintf):
Added support for '#' in format, and fixed bug with "ptr" being
incremented too many times.
* miscemu/int21.c (OpenExistingFile):
Add code to handle opening files read-only and write-only.
* loader/wine.c:
Segment fixups now done in LoadImage instead of _WinMain. This
is necessary to support LoadLibrary().
Sun Jun 5 17:34:24 1994 Erik Bos (erik@hacktic.nl)
* [loader/*]
- fixed: GetModuleHandle() sometimes returned
a wrong handle.
- don't init dlls when cs == 0 (lzexpand, doesn't
seem to have a init function)
- LoadLibrary & LoadImage now return error instead
of stopping wine.
- moved most of NE-functions into one file.
- LoadLibrary() uses w_files list instead of its
own list.
- NE exectables are now fixed-up and initialised when
loaded instead of only once before calling InitTask.
* [miscemu/int15.c] [miscemu/int31.c]
Added.
* [loader/selector.c]
Stubs added for {Get|Set}SelectorLimit(), {Get|Set}SelectorBase().
* [misc/main.c]
Stub added for IsRomModule().
* [miscemu/int21.c]
Some cleanup, added heap for returning data.
Jun 6, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [tools/build.c]
Change MAX_ORDINALS define to higher value, 1299 entries.
(MMSYSTEM doesn't have succesive numbers, some are around 1200).
* [windows/utility.c]
Bug fix in windows_wsprintf(), (twice increments ...).
* [windows/winpos.c]
Bug fix in SetWindowPos(), redraw was done if flag
was set to SWP_NOREDRAW while SWP_SHOWWINDOW).
* [misc/message.c] [controls/combo.c]
Add an InvalidateRect() in WM_SHOWWINDOW to statisfy the new 'saveunder'.
* [windows/win.c]
In CreateWindowEx(), do SetMenu() calls after window creation,
just before sending to WM_NCCALCSIZE.
* [controls/menu.c]
In function SetMenu(), now use SetWindowPos() with
flags SWP_FRAMECHANGED to readjust menu area.
Function MenuBarCalcSize() redone.
Sun May 29 11:08:24 1994 David B. Thomas (dt@yenta.abq.nm.us)
* [objects/text.c]
Fixed problems associated with DT_WORDBREAK flag. String length
was not being properly decremented when lines were folded, and
wrapping was not performed when DT_NOCLIP and DT_NOPREFIX were
both on in addition to DT_WORDBREAK. Windows does wrapping in
this case, and now so does wine.
Sun Jun 5 19:17:49 1994 Olaf Flebbe (olaf@dragon)
* [edit.c]
cp1 was uninitialized iff lineno == 0
* FindFile tests for existance of file even if a full
filename was supplied. What about unix file names?
* [controls/listbox ]
wndPtr was uninitialized for LB_SETTOPINDEX
* [misc/property.c]
Do not free lpProp. Is it really allocated by malloc?
{edited by Bob Amstadt: changed free() to GlobalFree()}
diff --git a/objects/text.c b/objects/text.c
index e7d3cdb..d4448a9 100644
--- a/objects/text.c
+++ b/objects/text.c
@@ -62,14 +62,15 @@
return (&str[i]);
}
dest[j++] = str[i++];
- if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX))
+ if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX) ||
+ (format & DT_WORDBREAK))
{
if (!GetTextExtentPoint(hdc, &dest[j-1], 1, &size))
return NULL;
plen += size.cx;
}
break;
-
+
case PREFIX:
if (!(format & DT_NOPREFIX))
{
@@ -79,7 +80,7 @@
else
{
dest[j++] = str[i++];
- if (!(format & DT_NOCLIP))
+ if (!(format & DT_NOCLIP) || (format & DT_WORDBREAK))
{
if (!GetTextExtentPoint(hdc, &dest[j-1], 1, &size))
return NULL;
@@ -87,7 +88,7 @@
}
}
break;
-
+
case TAB:
if (format & DT_EXPANDTABS)
{
@@ -108,7 +109,8 @@
else
{
dest[j++] = str[i++];
- if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX))
+ if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX) ||
+ (format & DT_WORDBREAK))
{
if (!GetTextExtentPoint(hdc, &dest[j-1], 1, &size))
return NULL;
@@ -119,7 +121,8 @@
case SPACE:
dest[j++] = str[i++];
- if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX))
+ if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX) ||
+ (format & DT_WORDBREAK))
{
wb_i = i;
wb_j = j - 1;
@@ -132,7 +135,8 @@
default:
dest[j++] = str[i++];
- if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX))
+ if (!(format & DT_NOCLIP) || !(format & DT_NOPREFIX) ||
+ (format & DT_WORDBREAK))
{
if (!GetTextExtentPoint(hdc, &dest[j-1], 1, &size))
return NULL;
@@ -148,7 +152,7 @@
if (format & DT_WORDBREAK)
{
*len = wb_j;
- *count = wb_count;
+ *count = wb_count - 1;
return (&str[wb_i]);
}
else
@@ -178,6 +182,11 @@
int x = rect->left, y = rect->top;
int width = rect->right - rect->left;
+#ifdef DEBUG_TEXT
+ printf( "DrawText: '%s', %d , [(%d,%d),(%d,%d)]\n", str, count,
+ rect->left, rect->top, rect->right, rect->bottom);
+#endif
+
if (count == -1) count = strlen(str);
strPtr = str;
@@ -423,5 +432,3 @@
return FALSE;
}
-
-