Release 970720
Sat Jul 19 13:03:01 1997 Alexandre Julliard <julliard@lrc.epfl.ch>
* [tools/build.c] [include/stackframe.h]
Save the complete %ebp register in CallFrom16; fixes a crash with
LabView reported by Andreas Mohr.
* [loader/main.c]
Avoid executing a built-in DLL.
* [controls/static.c]
Converted static window procedure to Win32.
* [windows/message.c] [windows/queue.c] [include/queue.h]
Hacked SendMessage functions to support inter-task messages with
SendMessage32A/W.
Sun Jul 13 16:55:35 1997 Bernhard Rosenkraenzer <bero@bero-online.ml.org>
* [ipc/bit_array.c]
Don't use bitops.h in Linux 2.1.x (these versions do not return
the previous state for clear_bit and set_bit)
* [ipc/shm_main_blk.c]
Adapt to GLIBC's ipc_perm structure.
* [memory/ldt.c]
Include <asm/unistd.h> on Linux/GLIBC systems (required for
_syscall3).
Wed Jul 9 23:53:19 1997 David A. Cuthbert <dacut@henry.ece.cmu.edu>
* [include/options.h] [files/profile.c]
Added PROFILE_GetWineIniBool and PROFILE_EnumerateWineIniSection.
* [include/sysmetrics.h] [include/windows.h] [windows/sysmetrics.c]
All sysmetrics moved to array (no more constant macros). Added
MOUSEWHEELPRESENT metric.
* [include/bitmap.h] [objects/oembitmap.c]
Added OBM_Init() (see also loader/main.c) and more support for Win95
bitmaps; added size info to OEM bitmaps.
* [include/graphics.h] [windows/graphics.h]
Added GRAPH_DrawGenericReliefRect.
* [loader/main.c]
Added TWEAK_Init() and TWEAK_CheckConfiguration() calls (the
latter checks for invalid entries in wine.conf).
* [include/debug.h] [include/stddebug.h] [include/nonclient.h]
[include/tweak.h] [controls/menu.c] [misc/tweak.c]
[objects/gdiobj.c] [windows/syscolor.c] [windows/nonclient.c]
[BUGS] [documentation/win95look]
Added tweaks for Windows 95 interface support. See
documentation/win95look for more information.
* [controls/edit.c]
Fixed EDIT_MoveHome bug.
* [misc/ver.c]
Changed name of dprintf_ver_string to ver_dstring to fix
problem with tools/make_debug utility.
Wed Jul 9 21:31:54 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [objects/dib.c]
Don't use palettes with dibs with biBitCount > 8.
* [misc/ole2nls.c][misc/ver.c]
IsValidLocale, EnumSystemLocales fixed (winhlp32.exe works)
Some VerLanguage coded moved to ole2nls.c, some cleanups.
* [multimedia/mcistring.c]
Fixed "capabilities <dev> device type" crash (cool.exe).
* [misc/main.c]
SystemParametersInfo*: added stub option 41
(GETNONCLIENTMETRICS), duplicated some stuff away from SPI16
that writes 32bit vars.(one COMCTL32.DLL crash, freecell.exe)
Tue Jul 8 22:40:53 1997 Morten Welinder <terra@diku.dk>
* [if1632/shell32.spec]
Use Windows 95's ordinals. Help wanted, inquire within.
Mon Jul 7 11:20:36 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
* [if1632/relay.c] [if1632/user.spec] [if1632/kernel.spec]
[tools/build-spec.txt] [tools/build.c]
Added type 'segstr' (segmented pointer to null-terminated string)
to .spec files.
* [windows/user.c] [if1632/user.spec]
ExitWindowsExec stub function added.
Mon Jul 7 01:18:25 1997 U. Bonnes <bon@elektron.ikp.physik.th-darmstadt.de>
* [files/file.c] [include/winbase.h] [if1632/kernel32.spec]
Implement MoveFileEx32, some enhancement for Movefile32.
Sat Jul 5 18:13:48 1997 Bruce Milner <Bruce.Milner@genetics.utah.edu.
* [files/file.c] [if1632/kernel32.spec] [include/winerror.h]
[msdos/int21.c] [win32/file.c]
Add LockFile/UnlockFile implementation.
Add back in int21 func(0x5c) Record locking functions.
* [files/file.c]
Fixed bug with OF_REOPEN in FILE_DoOpenFile.
Fri Jul 4 12:00:00 1997 Henrik Olsen <Henrik.Olsen@iaeste.dk>
* [misc/ole2nls.c] [programs/progman/Da.rc] [programs/winhelp/Da.rc]
[resources/sysres_Da.rc]
Added/updated Danish language support.
Thu Jul 3 13:04:20 1997 Claus Fischer <fischer@iue.tuwien.ac.at>
* [files/dos_fs.c]
Properly implemented DOSFS_UnixTimeToFileTime and
DOSFS_FileTimeToUnixTime.
* [documentation/wine.texinfo]
First version of texinfo documentation.
diff --git a/windows/sysmetrics.c b/windows/sysmetrics.c
index d63753d..525088e 100644
--- a/windows/sysmetrics.c
+++ b/windows/sysmetrics.c
@@ -7,6 +7,8 @@
#include <stdio.h>
#include "gdi.h"
+#include "options.h"
+#include "tweak.h"
#include "sysmetrics.h"
short sysMetrics[SM_CMETRICS+1];
@@ -20,89 +22,114 @@
{
sysMetrics[SM_CXSCREEN] = screenWidth;
sysMetrics[SM_CYSCREEN] = screenHeight;
- sysMetrics[SM_CXVSCROLL] = SYSMETRICS_CXVSCROLL;
- sysMetrics[SM_CYHSCROLL] = SYSMETRICS_CYHSCROLL;
- sysMetrics[SM_CYCAPTION] = SYSMETRICS_CYCAPTION;
- sysMetrics[SM_CXBORDER] = SYSMETRICS_CXBORDER;
- sysMetrics[SM_CYBORDER] = SYSMETRICS_CYBORDER;
- sysMetrics[SM_CXDLGFRAME] = SYSMETRICS_CXDLGFRAME;
- sysMetrics[SM_CYDLGFRAME] = SYSMETRICS_CYDLGFRAME;
- sysMetrics[SM_CYVTHUMB] = SYSMETRICS_CYVTHUMB;
- sysMetrics[SM_CXHTHUMB] = SYSMETRICS_CXHTHUMB;
- sysMetrics[SM_CXICON] = SYSMETRICS_CXICON;
- sysMetrics[SM_CYICON] = SYSMETRICS_CYICON;
- sysMetrics[SM_CXCURSOR] = SYSMETRICS_CXCURSOR;
- sysMetrics[SM_CYCURSOR] = SYSMETRICS_CYCURSOR;
- sysMetrics[SM_CYMENU] = SYSMETRICS_CYMENU;
+ sysMetrics[SM_CXVSCROLL] =
+ PROFILE_GetWineIniInt("Tweak.Layout", "ScrollBarWidth", 16) + 1;
+ sysMetrics[SM_CYHSCROLL] = sysMetrics[SM_CXVSCROLL];
+ sysMetrics[SM_CYCAPTION] = 2 +
+ PROFILE_GetWineIniInt("Tweak.Layout", "CaptionHeight", 18);
+ sysMetrics[SM_CXBORDER] = 1;
+ sysMetrics[SM_CYBORDER] = sysMetrics[SM_CXBORDER];
+ sysMetrics[SM_CXDLGFRAME] =
+ PROFILE_GetWineIniInt("Tweak.Layout", "DialogFrameWidth",
+ TWEAK_Win95Look ? 2 : 4);
+ sysMetrics[SM_CYDLGFRAME] = sysMetrics[SM_CXDLGFRAME];
+ sysMetrics[SM_CYVTHUMB] = sysMetrics[SM_CXVSCROLL] - 1;
+ sysMetrics[SM_CXHTHUMB] = sysMetrics[SM_CYVTHUMB];
+ sysMetrics[SM_CXICON] = 32;
+ sysMetrics[SM_CYICON] = 32;
+ sysMetrics[SM_CYMENU] =
+ PROFILE_GetWineIniInt("Tweak.Layout", "MenuHeight", 18);
sysMetrics[SM_CXFULLSCREEN] = sysMetrics[SM_CXSCREEN];
- sysMetrics[SM_CYFULLSCREEN] = sysMetrics[SM_CYSCREEN] - sysMetrics[SM_CYCAPTION];
+ sysMetrics[SM_CYFULLSCREEN] =
+ sysMetrics[SM_CYSCREEN] - sysMetrics[SM_CYCAPTION];
sysMetrics[SM_CYKANJIWINDOW] = 0;
sysMetrics[SM_MOUSEPRESENT] = 1;
- sysMetrics[SM_CYVSCROLL] = SYSMETRICS_CYVSCROLL;
- sysMetrics[SM_CXHSCROLL] = SYSMETRICS_CXHSCROLL;
+ sysMetrics[SM_CYVSCROLL] = sysMetrics[SM_CYVTHUMB];
+ sysMetrics[SM_CXHSCROLL] = sysMetrics[SM_CXHTHUMB];
sysMetrics[SM_DEBUG] = 0;
+
+ /* FIXME: The following should look for the registry key to see if the
+ buttons should be swapped. */
sysMetrics[SM_SWAPBUTTON] = 0;
+
sysMetrics[SM_RESERVED1] = 0;
sysMetrics[SM_RESERVED2] = 0;
sysMetrics[SM_RESERVED3] = 0;
sysMetrics[SM_RESERVED4] = 0;
- sysMetrics[SM_CXMIN] = SYSMETRICS_CXMIN;
- sysMetrics[SM_CYMIN] = SYSMETRICS_CYMIN;
- sysMetrics[SM_CXSIZE] = SYSMETRICS_CXSIZE;
- sysMetrics[SM_CYSIZE] = SYSMETRICS_CYSIZE;
- sysMetrics[SM_CXFRAME] = GetProfileInt32A( "windows", "BorderWidth", 4 );
+
+ /* FIXME: The following two are calculated, but how? */
+ sysMetrics[SM_CXMIN] = TWEAK_Win95Look ? 112 : 100;
+ sysMetrics[SM_CYMIN] = TWEAK_Win95Look ? 27 : 28;
+
+ sysMetrics[SM_CXSIZE] = sysMetrics[SM_CYCAPTION] - 2;
+ sysMetrics[SM_CYSIZE] = sysMetrics[SM_CXSIZE];
+ sysMetrics[SM_CXFRAME] = GetProfileInt32A("Windows", "BorderWidth", 4);
sysMetrics[SM_CYFRAME] = sysMetrics[SM_CXFRAME];
- sysMetrics[SM_CXMINTRACK] = SYSMETRICS_CXMINTRACK;
- sysMetrics[SM_CYMINTRACK] = SYSMETRICS_CYMINTRACK;
- sysMetrics[SM_CXDOUBLECLK] = (GetProfileInt32A( "windows","DoubleClickWidth", 4) + 1) & ~1;
- sysMetrics[SM_CYDOUBLECLK] = (GetProfileInt32A( "windows","DoubleClickHeight", 4) + 1) & ~1;
- sysMetrics[SM_CXICONSPACING] = GetProfileInt32A( "desktop","IconSpacing", 75);
- sysMetrics[SM_CYICONSPACING] = GetProfileInt32A( "desktop","IconVerticalSpacing", 72);
- sysMetrics[SM_MENUDROPALIGNMENT] = GetProfileInt32A( "windows","MenuDropAlignment", 0 );
+ sysMetrics[SM_CXMINTRACK] = sysMetrics[SM_CXMIN];
+ sysMetrics[SM_CYMINTRACK] = sysMetrics[SM_CYMIN];
+ sysMetrics[SM_CXDOUBLECLK] =
+ (GetProfileInt32A("Windows", "DoubleClickWidth", 4) + 1) & ~1;
+ sysMetrics[SM_CYDOUBLECLK] =
+ (GetProfileInt32A("Windows","DoubleClickHeight", 4) + 1) & ~1;
+ sysMetrics[SM_CXICONSPACING] =
+ GetProfileInt32A("Desktop","IconSpacing", 75);
+ sysMetrics[SM_CYICONSPACING] =
+ GetProfileInt32A("Desktop", "IconVerticalSpacing", 75);
+ sysMetrics[SM_MENUDROPALIGNMENT] =
+ GetProfileInt32A("Windows", "MenuDropAlignment", 0);
sysMetrics[SM_PENWINDOWS] = 0;
sysMetrics[SM_DBCSENABLED] = 0;
- /* Win32 additions */
- sysMetrics[SM_CMOUSEBUTTONS] = 3; /* FIXME: query X on that one */
+
+ /* FIXME: Need to query X for the following */
+ sysMetrics[SM_CMOUSEBUTTONS] = 3;
+
sysMetrics[SM_SECURE] = 0;
- sysMetrics[SM_CXEDGE] = SYSMETRICS_CXBORDER;
- sysMetrics[SM_CYEDGE] = SYSMETRICS_CYBORDER;
- sysMetrics[SM_CXMINSPACING] = SYSMETRICS_CYBORDER;
+ sysMetrics[SM_CXEDGE] = sysMetrics[SM_CXBORDER] + 1;
+ sysMetrics[SM_CYEDGE] = sysMetrics[SM_CXEDGE];
+ sysMetrics[SM_CXMINSPACING] = 160;
+ sysMetrics[SM_CYMINSPACING] = 24;
+ sysMetrics[SM_CXSMICON] =
+ sysMetrics[SM_CYSIZE] - (sysMetrics[SM_CYSIZE] % 2) - 2;
+ sysMetrics[SM_CYSMICON] = sysMetrics[SM_CXSMICON];
+ sysMetrics[SM_CYSMCAPTION] = 16;
+ sysMetrics[SM_CXSMSIZE] = 15;
+ sysMetrics[SM_CYSMSIZE] = sysMetrics[SM_CXSMSIZE];
+ sysMetrics[SM_CXMENUSIZE] = sysMetrics[SM_CYMENU];
+ sysMetrics[SM_CYMENUSIZE] = sysMetrics[SM_CXMENUSIZE];
-/*
-SM_CXEDGE 45
-SM_CYEDGE 46
-SM_CXMINSPACING 47
-SM_CYMINSPACING 48
-SM_CXSMICON 49
-SM_CYSMICON 50
-SM_CYSMCAPTION 51
-SM_CXSMSIZE 52
-SM_CYSMSIZE 53
-SM_CXMENUSIZE 54
-SM_CYMENUSIZE 55
-SM_ARRANGE 56
-SM_CXMINIMIZED 57
-SM_CYMINIMIZED 58
-SM_CXMAXTRACK 59
-SM_CYMAXTRACK 60
-SM_CXMAXIMIZED 61
-SM_CYMAXIMIZED 62
- */
- sysMetrics[SM_NETWORK] = 1;
- sysMetrics[SM_CLEANBOOT] = 0; /* 0 - ok, 1 - failsafe, 2 - failsafe & net */
- /*
-SM_CXDRAG 68
-SM_CYDRAG 69
- */
- sysMetrics[SM_SHOWSOUNDS] = 1;
- /*
-SM_CXMENUCHECK 71
-SM_CYMENUCHECK 72
- */
- sysMetrics[SM_SLOWMACHINE] = 0; /* FIXME: perhaps decide on type of proc */
- sysMetrics[SM_MIDEASTENABLED] = 0; /* FIXME: 1 if enabled */
+ /* FIXME: What do these mean? */
+ sysMetrics[SM_ARRANGE] = 8;
+ sysMetrics[SM_CXMINIMIZED] = 160;
+ sysMetrics[SM_CYMINIMIZED] = 24;
+
+ /* FIXME: How do I calculate these? */
+ sysMetrics[SM_CXMAXTRACK] =
+ sysMetrics[SM_CXSCREEN] + 4 + 2 * sysMetrics[SM_CXFRAME];
+ sysMetrics[SM_CYMAXTRACK] =
+ sysMetrics[SM_CYSCREEN] + 4 + 2 * sysMetrics[SM_CYFRAME];
+ sysMetrics[SM_CXMAXIMIZED] =
+ sysMetrics[SM_CXSCREEN] + 2 * sysMetrics[SM_CXFRAME];
+ sysMetrics[SM_CYMAXIMIZED] =
+ sysMetrics[SM_CYSCREEN] - 45;
+ sysMetrics[SM_NETWORK] = 3;
+
+ /* For the following: 0 = ok, 1 = failsafe, 2 = failsafe + network */
+ sysMetrics[SM_CLEANBOOT] = 0;
+
+ sysMetrics[SM_CXDRAG] = 0;
+ sysMetrics[SM_CYDRAG] = 0;
+ sysMetrics[SM_SHOWSOUNDS] = 0;
+ sysMetrics[SM_CXMENUCHECK] = 2;
+ sysMetrics[SM_CYMENUCHECK] = 2;
+
+ /* FIXME: Should check the type of processor for the following */
+ sysMetrics[SM_SLOWMACHINE] = 0;
+
+ /* FIXME: Should perform a check */
+ sysMetrics[SM_MIDEASTENABLED] = 0;
+
+ sysMetrics[SM_MOUSEWHEELPRESENT] = 0;
sysMetrics[SM_CMETRICS] = SM_CMETRICS;
-
}