#### Release 99

Released: 2003-09-14 1740 EDT
Committed to XFree86 CVS: not yet
Basis: Release 98
Cygwin setup.exe package: XFree86-xserv-4.3.0-9
Download source: no longer distributed
Changes:

- winmultiwindowwm.c - Add handling for WM_CHANGE_STATE IconicState messages; minimize the associated Windows window when these messages are received. (Harold L Hunt II)

#### Release 98

Released: 2003-09-11 1314 EDT
Committed to XFree86 CVS: not yet
Basis: Release 97
Cygwin setup.exe package: XFree86-xserv-4.3.0-7
Download source: no longer distributed
Changes:

- winconfig.c - Disable the check for the specific keyboardtype 4 (pc105) and always assume that a 105 key keyboard is present. This fixes undetected layouts because of keyboard drivers which return undocumented keyboardtypeids. (Alexander Gottwald)
- Xserver/xkb/ddxLoad.c - Read keymaps generated by xkbcomp as binary files. (Alexander Gottwald)

#### Release 97

Released: 2003-09-03 1955 EDT
Committed to XFree86 CVS: not yet
Basis: Release 96
Cygwin setup.exe package: XFree86-xserv-4.3.0-6
Download source: no longer distributed
Changes:

- winconfig.c - Print the name of the keyboard layout to help in adding new layouts. (Alexander Gottwald)
- winshadddnl.c - Stop printing the IDirectDrawSurface4_Blt() failure messages after 10 times. The message was clogging some people's log files. (Harold L Hunt II)

#### Release 96

Released: 2003-08-27 1505 EDT
Committed to XFree86 CVS: not yet
Basis: Release 95
Cygwin setup.exe package: XFree86-xserv-4.3.0-4
Download source: no longer distributed
Changes:

- winprefs* - Add a system to allow the user to specify arbitrary commands for the system tray menu (e.g. program launching shortcuts) as well as custom icons for certain window classes. This is a huge system and is really very amazing. Preferences are stored in ~/.XWinrc or in /usr/X11R6/lib/X11/system.XWinrc, which is formatted as in this example .XWinrc file. (Earle F. Philhower III)
- winmultiwindowclass.c - Fix a string copy bug in MultiWindow mode that was likely to have been causing crashes for some people. (Earle F. Philhower III)
- winconfig.c - Add new defaults for keyboardlayout: English (USA, Dvorak) and Norwegian. (Alexander Gottwald)

#### Release 95

Released: 2003-08-02 2115 EDT
Committed to XFree86 CVS: not yet
Basis: Release 94
Cygwin setup.exe package: XFree86-xserv-4.3.0-3
Download source: no longer distributed
Changes:

- Signal the clipboard and multiwindow window manager threads to stop trying to reconnect when the server is being shutdown. These reconnection attempts were causing intermittent GPFs (General Protection Faults) on shutdown. (Earle F. Philhower III)

#### Release 94

Released: 2003-08-01 2345 EDT
Committed to XFree86 CVS: not yet
Basis: Release 93
Cygwin setup.exe package: XFree86-xserv-4.3.0-2
Download source: no longer distributed
Changes:

- winmultiwindowwm.c, winmultiwindowclass.h, winmultiwindowwndproc.c - Automatically validate the sizes of windows while you're sizing them, just like you find in most X11 window managers. (Earle F. Philhower III)

#### Release 93

Released: 2003-07-30 1915 EDT
Committed to XFree86 CVS: not yet
Basis: Release 92
Cygwin setup.exe package: XFree86-xserv-4.2.0-44
Download source: no longer distributed
Changes:

- wintrayicon.c - Change code that shows/hides the seperator on the tray icon menu. This change was required to stay in synch with the change in the position of the tray icon menu items that was applied to XWin.rc in Release 92. (Earle F. Philhower III)

#### Release 92

Released: 2003-07-28 2010 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 91
Cygwin setup.exe package: XFree86-xserv-4.2.0-43
Download source: no longer distributed
Changes:

- winconfig.c - Add new defaults for keyboardlayout: German (Switzerland) and English (USA, International). (Alexander Gottwald)
- XWin.rc - Move Exit button to the bottom of the tray icon's menu. (List suggestion)
- winmultiwindowclass.c - Add checks for NULL pointers. Should help fix some crashes in MultiWindow mode. (Ralf Habacker)
- General - Add global variable that tracks whether XInitThreads () has been called so that it is only called once per process. Calling XInitThreads multiple times may have been contributing to crashes. (Harold L Hunt II)

#### Release 91

Released: 2003-06-02 1055 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 90
Cygwin setup.exe package: XFree86-xserv-4.2.0-42
Download source: no longer distributed
Changes:

- winconfig.c - Change nodeadkeys default to NULL for the German (Germany) keyboard layout. (Alexander Gottwald, Benjamin Riefenstahl)
- X.ico - Add 24 x 24 - 256 color and 24 x 24 - 16 color icons. (Harold L Hunt II, Benjamin Riefenstahl)
- wintrayicon.c - Change hard-coded 16 x 16 icon load to use GetSystemMetrics (SM_CXSMICON) and GetSystemMetrics (SM_CYSMICON) to retrieve size of small icon to be used. Hopefully this loads the 24 x 24 icon on systems that have been changed to use 24 x 24 icons for the notification tray. (Harold L Hunt II, Benjamin Riefenstahl)
- winmultiwindowwindow.c - Break some functions from this file into several new files: winmultiwindowicons.c, winmultiwindowshape.c, and winmultiwindowwndproc.c. Provide enough Tender Loving Care (TLC) to the various header files so that all files still build with no warnings. Note that this drops the size of winmultiwindowwindow.c from 55 KiB to 21 KiB and creates three new files, none of which is larger than 23 KiB. Of those three new files, winmultiwindowicons.c is 10 KiB, winmultiwindowshape.c is 6 KiB, and winmultiwindowwndproc.c is 23 KiB. Finally, it is interesting to note that winmultiwindowwndproc.c contains a single function, winTopLevelWindowProc(), so that file cannot be made any smaller by breaking other functions into separate files. (Harold L Hunt II)
- winclass.c, winclass.h - Rename these files to winmultiwindowclass.c and winmultiwindowclass.h, respectively, since they are only used in MultiWindow mode. Prefix the functions in these files with MultiWindow. (Harold L Hunt II)

#### Release 90

Released: 2003-06-01 1655 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 89
Cygwin setup.exe package: XFree86-xserv-4.2.0-41
Download source: no longer distributed
Changes:

- wintrayicon.c/winInitNotifyIcon() - Replace call to LoadIcon with a call to LoadImage that specifies the 16x16 icon as the size to be loaded. This makes the tray icon look much cleaner. (Colin Harrison)
- wintrayicon.c/winDeleteNotifyIcon() - Call DestroyIcon on the icon that was loaded in winInitNotifyIcon(). (Harold L Hunt II)
- Clean up all compiler warnings in xc/programs/Xserver/hw/xwin. The code now builds without a single warning when using the default compilation flags on a Cygwin host. (Harold L Hunt II)

#### Release 89

Released: 2003-05-31 2255 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 88
Cygwin setup.exe package: XFree86-xserv-4.2.0-40
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winTopLevelWindowProc() - Rework the mouse polling timer so that it is attached to the root-level window. This prevents multiple mouse polling timers from being created, which was happening in the old versions. Introduce a new way of determining that the timer should be created or deleted, which will hopefully fix some corner cases where the timer was not being created. (Harold L Hunt II)
- XWin.rc - Remove a couple of window style flags that were not compatible with Earle's patch for removing the minimize and maximize buttons from the dialog boxes. (Earle F. Philhower III)
- XWin.rc - Make ``x'' and ``C'' hotkeys for the Exit Confirmation dialog box. (Colin Harrison, Biju G C)

#### Release 88

Released: 2003-05-30 2355 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 87
Cygwin setup.exe package: XFree86-xserv-4.2.0-39
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winScaleXBitmapToWindows() - Clear the bits in the alpha channel of the converted 32 bpp bitmap because it was causing problems with window icons for certain display drivers. Most notably, display drivers from ATI were exhibiting these problems. (Earle F. Philhower III)
- wincursor.c/winPointerWarpCursor() - Discard the first cursor warp message, since this is just X putting the mouse cursor in the center of the screen, which is undesirable in Windows. (Earle F. Philhower III, Harold L Hunt II)
- windialogs.c/winDisplay[Exit|DepthChange]Dialog() - Add calls to drop the minimize and maximize buttons from the Exit Confirmation and Depth Change dialog boxes, while preserving the icon on the upper left hand corner of the dialog window. (Earle F. Philhower III)

#### Release 87

Released: 2003-05-29 0045 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 86
Cygwin setup.exe package: XFree86-xserv-4.2.0-38
Download source: no longer distributed
Changes:

- Convert X application icons set in WM_HINTS from XPMs to Windows BMPs using an internal algorithm. Earle, Ralf, and Colin worked together on this one with coding, suggesting ideas, and testing. The end result is, as they say, very nearly perfect. Each top-level X window is now given its own class that has an icon associated with it. The icon can be even changed while the application is running and this is properly handled. Icons are properly freed when a window and its associated class are destroyed. This entry encompasses a flurry of emails and patches that I cannot possibly recount here; hopefully no one feels slighted by this brief summary. (Earle F. Philhower III, Ralf Habacker, Colin Harrison)
- Set XIconSizes() to the Windows approved 16, 32, and 48. It doesn't seem to be looked at by anything, but it is in the XLib documents as something a WM should set. (Earle F. Philhower III)
- Removed several misc compile warnings. (Earle F. Philhower III)
- winmultiwindowwindow.c/winTopLevelWindowProc() - Add a call to winKeybdReleaseKeys () in WM_KILLFOCUS. This fix stops the phantom key presses that people were seeing. The example here would be to launch an xterm, then launch another xterm from that xterm. Type ``exit'' in the first xterm and press enter. The enter keydown message is processed by the second xterm, but the keyup is never processed so it got sent repeatedly to the root-level message loop (which performs all keyboard processing), causing phantom key presses to show up in any X app that currently had the focus. At least, I think that is that the problem was. An interim solution was to press and release the enter key, which would cause a keydown/keyup message combo to be sent, thus ending the crazy looping. This fix pops all keys that are pressed when the current X app looses the keyboard focus. Colin suggested this, Earle move the location of the call to the proper place. (Colin Harrison, Earle F. Philhower III)
- XWin.rc - Change the Exit Confirmation and Depth Change dialog boxes to be centered by adding the DS_CENTER flag to the STYLE attribute. (Biju G C, Harold L Hunt II)
- winmultiwindowwindow.c/winTopLevelWindowProc() - Let DefaultWindowProc() handle the Alt+F4 key combo in the WM_*KEYDOWN messages. This allows a user to close a top-level X window (which has an associated Windows window) by pressing Alt+F4. Note that this happens regardless of the -[no]winkill command-line parameter. This is the desired behavior since -[no]winkill should only affect the behavior of the root-level window, not the individual X Client windows. (Biju G C, Harold L Hunt II)
- winwndproc.c/winWindowProc() - Define a WM_GIVEUP message that calls GiveUp(); remove the GiveUp() call from WM_CLOSE and replace it with a call to winDisplayExitDialog(), which displays the Exit Confirmation dialog box. This only makes sense in conjunction with the next change log entry. (Biju G C, Harold L Hunt II)
- windialogs.c/winExitDlgProc()/WM_COMMAND/ID_OK - Pass WM_GIVEUP to PostMessage() instead of passing WM_CLOSE. This patch causes the end result that, in MultiWindow mode, selecting Close from the system menu for non-root-level Windows window causes that particular X Client to be killed. The previous result was that the XWin.exe process was exited without displaying the Exit Confirmation dialog box. This must have been a frustrating situation indeed and it makes this bug a marvelous catch on Biju's part. NOTE: The system menu can be opened by right clicking on the title bar, or by left clicking the icon in the upper left-hand corner of the app window, or by right clicking on the application entry in the task bar. (Biju G C, Harold L Hunt II)
- windialogs.c/winDisplay(Exit)|(ChangeDepth)Dialog() - Call SetForegroundWindow() if the dialog box has already been created. This pulls the dialog box to the foreground if it has been buried by other windows. It is legitimate to do this here because we are responding to user input of some sort when this function gets called. (Harold L Hunt II)
- XWin.rc - Add the extended style WS_EX_DLGMODALFRAME and the normal style WS_DLGFRAME to the Exit Confirmation dialog box in an attempt to stop the dialog box from being listed in the task bar, which was reported by one user. This task bar listing has been negatively confirmed in Windows 2000 and Windows XP, but it may be happening in other versions of Windows. Of course, this could have been a reference to the fact that the dialog is present in the Alt+Tab list. However, that is the desired behavior and will not be changed (how else could you get back to that dialog box?). (Biju G C, Harold L Hunt II)
- Try, in vain, to maintain a uniform coding style and variable/function naming convention. I am mostly winning the curly-brace (curly braces on separate lines please), indenting (emacs default please), parameter spacing (e.g. func (x, y) instead of func( x,y ), func( x, y ), or even func(x,y)), and binary operator spacing ((x + y) instead of (x+y)) wars, but I am pitiful excuse for a belligerent dictator when it comes to the variable naming (follow examples in winwndproc.c), variable prefixing (follow winwndproc.c, which is my own sick mix of Hungarian prefixes (int, dw, psz, f) and old-school C prefixes (i, n, l)), and function naming wars. I would like to ask all contributors to try to follow the code that they see in the files that I authored, but I don't feel that I have the right to reject patches that don't follow those conventions. I will, however, try my best to adapt all patches so that I can read them and more easily maintain them in the future. You may also have noticed that I am a profuse commentor... I do that because I have a very poor memory of why things were done they way that they were done, so I sprinkle tips throughout the code to help myself remember things. You know, I have been realizing the entire time that I was writing this change log that I have low blood sugar, I am very tired, and this is so not the place for such huge amounts of text. Time for bed. Change log over. (Anonymous... Like you have to guess)

#### Release 86

Released: 2003-05-18 1426 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 85
Cygwin setup.exe package: XFree86-xserv-4.2.0-37
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winTopLevelWindowProc() - Remove a dependency on GetWindowInfo(), which is only present in NT 4.0 SP6, Windows 98, and later. Thanks to Dr. Charles L. Werner for reporting this problem on Windows NT 4.0 SP3 and to Alexander Gottwald for confirming that GetWindowInfo() is not present in Windows 95. (Earle F. Philhower III)

#### Release 85

Released: 2003-05-17 1320 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 84
Cygwin setup.exe package: XFree86-xserv-4.2.0-36
Download source: no longer distributed
Changes:

- Implement window title changing in MultiWindow mode. (Earle F. Philhower III)
- Implement an Always On Top command in the right-click menu (System Menu) for each window in MultiWindow mode. (Earle F. Philhower, III)
- Move the XNextEvent loop into a separate thread for MultiWindow mode. (Earle F. Philhower III)
- Fix a race between the startup of the clipboard thread and MultiWindow window manager thread that caused window title changing to bork. (Harold L Hunt II)
- Stop calling pthread_exit () from winClipboardErrorHandler (). An error is an error, not a reason to dump core. This may fix problems people have been having with -clipboard, but I don't make any promises. (Harold L Hunt II)

#### Release 84

Released: 2003-05-13 0954 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 83
Cygwin setup.exe package: XFree86-xserv-4.2.0-35
Download source: no longer distributed
Changes:

- Fix/implement window maximizing and restoring in MultiWindow mode. (Earle F. Philhower III)
- Implement handling in MultiWindow mode for monitors to the left of the primary monitor on systems with multiple monitors. (Earle F. Philhower III)
- Destroy the Exit confirmation dialog box and NULL its pointer when the server is reset. This fixes a problem that occurred when the Exit confirmation dialog box was displayed and the server was reset; the Exit confirmation dialog box would never display again after that happened, preventing you from normally exiting Cygwin/X. (Harold L Hunt II)
- Make the Windows window title include the display number and screen number (e.g. Cygwin/X 0:0) for the main window in non-MultiWindow modes and the normally hidden root window in MultiWindow mode. (Harold L Hunt II)

#### Release 83

Released: 2003-05-01 1250 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 82
Cygwin setup.exe package: XFree86-xserv-4.2.0-34
Download source: no longer distributed
Changes:

- Fix the Exit confirmation dialog box so that the arrow keys, tab keys, and Enter/Escape keys all work. Additionally, make the Exit confirmation dialog box get the keyboard focus when it is opened. It was being set as the active window, but the keyboard focus was not being set properly. (Harold L Hunt II)
- Make the Cancel button the default button on the Exit confirmation dialog box. Thanks to Biju G C for giving me a heads-up on this one. (Harold L Hunt II)
- Fix the cursor hiding on the Exit confirmation dialog box that was occurring when no X Client windows were open in MultiWindow mode. (Harold L Hunt II)
- Fix the Exit confirmation dialog box so that it doesn't prevent the keyboard focus from returning to X Client windows in MultiWindow mode when you dismiss the dialog box by closing it or by pressing Cancel. (Harold L Hunt II)
- Change the root window title in MultiWindow mode to ``Cygwin/X'' from ``Cygwin/X rl''. (Harold L Hunt II)
- Change MultiWindow mode to use XWin.log again, instead of XWinrl.log. (Harold L Hunt II)
- Change the top-level window procedure for MultiWindow mode to share a global cursor hidden/shown flag with the root window procedure. (Harold L Hunt II)

#### Release 82

Released: 2003-04-30 2025 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 81
Cygwin setup.exe package: XFree86-xserv-4.2.0-33
Download source: no longer distributed
Changes:

- Add an exit confirmation dialog box for when the user selects Exit from the tray icon right-click menu and for when the user presses Alt-F4 or Ctrl-Alt-Backspace (if the -unixkill command-line parameter was specified). (Harold L Hunt II)
- Add ``Show Root Window'' and ``Hide Root Window'' commands to the tray icon right-click menu when using MultiWindow mode (-multiwindow command-line parameter). These commands should be self-explanatory. Thanks to Biju G C for the idea for this. (Harold L Hunt II)
- Add the X icon to the Depth Change dialog box. Has anyone ever seen this dialog box? I added it months ago and have never heard from anyone that it works or doesn't work. (Harold L Hunt II)

#### Release 81

Released: 2003-04-29 2347 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 80
Cygwin setup.exe package: XFree86-xserv-4.2.0-32
Download source: no longer distributed
Changes:

- Fix tray icon right-click menu to make sure that it disappears when you click outside of the menu. (Harold L Hunt II)
- Delete the tray icon in the per-screen close procedure, which ensures that every tray icon is deleted. This also causes the tray icons to be deleted when the server is reset, which is required since the tray icons are recreated when the server is reset. (Harold L Hunt II)

#### Release 80

Released: 2003-04-29 1932 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 79
Cygwin setup.exe package: XFree86-xserv-4.2.0-31
Download source: no longer distributed
Changes:

- Add automatic keyboard detection for ``Portuguese (Brazil)'', ``Portuguese (Portugal)'', and ``Italian''. (Alexander Gottwald)
- Add taskbar notification area (tray) icon. Exit on double-click of icon. (Early Ehlinger)
- Add popup menu for right-click on tray icon. Add menu item for ``Exit''. (Harold L Hunt II)
- Add -[no]trayicon command-line parameters. The default is for the tray icon to be created for each screen (as if -trayicon were passed). You can turn tray icons off by placing -notrayicon at the beginning of the parameter list to XWin.exe (must be before any -screen x parameters). You can then enable the tray icon on a screen-by-screen basis by placing -trayicon after any -screen x parameter that you wish to have tray icons enabled for. For example, ``XWin.exe -notrayicon -screen 0 -screen 1 -screen 2 -trayicon'', would create three screens, two of which (screens 0 and 1) would not have tray icons, while the third (screen 2) would.
- Hide root window in MultiWindow mode. (Early Ehlinger)
- Add some initial support files that might eventually hold code for the X Video Extension. These files do not currently affect the operation of the server and I have stopped working on them for the time, but I will leave them there as a place holder. (Harold L Hunt II)

#### Release 79

Released: 2003-03-12 0937 EST
Committed to XFree86 CVS: 2003-07-29
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-27
Download source: no longer distributed
Changes:

- MultiWindow Mode - Fix for the focus jumping rapidly and uncontrollably between windows in certain scenarios. (Kensuke Matsuzaki)

#### Release 78

Released: 2003-02-24 0828 EST
Committed to XFree86 CVS: 2003-07-29
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-26
Download source: no longer distributed
Changes:

- Automatically detect several non-U.S. keyboard configurations by querying Windows for the current locale. (Alexander Gottwald)
- Add a check for the height not being toggled to a positive integer when the Shadow GDI DIB is created. One user has reported it so far, so it may be due to a single video card or driver version. Also, this may not fix the problem. (Harold Hunt)

#### Release 77

Released: 2003-01-29 1415 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 76
Cygwin setup.exe package: XFree86-xserv-4.2.0-25
Download source: no longer distributed
Changes:

- Only call setlocale () once per process. This was causing crashes on startup when using both the -clipboard and -multiwindow command-line parameters. (Kensuke Matsuzaki, Harold Hunt)

#### Release 76

Released: 2003-01-28 1923 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 75
Cygwin setup.exe package: XFree86-xserv-4.2.0-24
Download source: no longer distributed
Changes:

- winshadgdi.c/winAllocateFBShadowGDI - Fix how dwStride was being calculated, which was causing a crash on startup with both the -engine 1 and -multiwindow command-line parameters. (Harold Hunt)

#### Release 75

Released: 2003-01-26 2245 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 74
Cygwin setup.exe package: XFree86-xserv-4.2.0-23
Download source: no longer distributed
Changes:

- winshaddd[nl].c/winReleasePrimarySurfaceShadowDD[NL] - Check that pddsPrimary is not NULL before calling IDirectDrawSurface[2|4]_SetClipper. This most likely showed up as a crash during video depth changes. (Alexander Gottwald)
- winshaddd.c - Change a few accidental IDirectDrawSurface4 references to IDirectDrawSurface2. (Harold Hunt)