commonuisupport/uikon/group/HISTORIC.TXT
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonuisupport/uikon/group/HISTORIC.TXT	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,12385 @@
+Version 0.01.047
+================
+(Made by DavidW, 1 September 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/104 FONTS/029
+        ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Last build of Nokie!
+
+This contains the state of the Nokie code prior to converting to
+
+    *) the new directory structure of E32/065
+
+    *) the new application architecture
+
+Sizes (Gcc build):	NOKIE.DLL	263,980 bytes
+			EIKSRV.EXE	 12,908
+			NOKIE.RSC	  4,115
+			CONE.MBM  	  2,868
+
+From MartinB:
+-------------
+1)  Rearranged aspects of the menu code in preparation for making it
+go faster and for improving some of the menu UI
+
+2)  Further improvements to header files of menu code
+
+3)  Menu code once again builds cleanly under Gcc
+
+4)  Moved some drawing utility functions out of menu code into
+EikDrawUtils code in EIKDUTIL.*
+
+From Vipul:
+-----------
+5)  Merged the code from CEikAutoDialog into CEikDialog itself, so
+that all dialogs now support "auto" items, not just "Opl dialogs"
+
+6)  Modified existing CEikDialog code accordingly, and started work
+on some test code for dialogs with auto items
+
+From SimonC:
+------------
+7)  Global and rich text editors now always use their own paragraph
+and character format layers, rather than sharing those in CEikonEnv;
+this avoids problems whereby bolding one global text editor caused
+all other editors to be bolded as well
+
+8)  Further fixes to the HandlePointerEventL code in CEikEdwin so
+that, for the first time, shift-clicking *and* picture stretching
+both work properly
+
+9)  Improvements in the code creating a new folder inside the file
+browser; eg the New Folder dialog now has a text label specifying the
+(default) location of the new folder
+
+10) If the New Folder button is used to create a folder on a
+different drive from the one the File Browser is currently logged to,
+the File Browser now switches to that drive on the termination of the
+New Folder dialog
+
+11) Workaround to an F32 bug, so that the Open File dialog can be be
+used to read z: on the rack
+
+12) Other internal improvements in file brower and directory
+listboxes
+
+From Bret:
+----------
+13) Fixed drawing bug in CEikWorldSelector in which not every pixel
+was being drawn in some cases
+
+14) Improvements in the display of world selectors in the case when
+the font has been changed, to one different from that used to
+calculate the size of the world selector
+
+15) Changed from using the three character ellipsis "..." to the
+single character "…" variant (Alt-133)
+
+16) Eliminated an unneeded dependency on EIKENV.H in EIKWSEL.H
+
+17) Other internal improvements to world selector code
+
+From Siamak:
+------------
+18) Fixed various scrollbar-related and size-related problems in
+listboxes (eg listbox min size was incorrectly calculated in the
+presence of scrollbars, and the current item for a listbox in a
+dialog wasn't always visible when the dialog first appeared)
+
+19) See the "Script1" case in TLBX for a working example of a listbox
+in a dialog having a scrollbar
+
+20) Changed listbox default behavior to assume that any scrollbar
+size should be included within the stated size of the listbox
+
+21) Started added support for dimming in listboxes
+
+22) Changed CListItemDrawer::DrawActualItem() to be pure virtual,
+rather than simply empty
+
+23) Test code TLBX now tests some panics in listbox code, but always
+puts up a query dialog first to allow the user/operator to bypass
+that test
+
+From Neil:
+----------
+24) Provided scrollbars with the ability to be dimmed, eg for when
+their parent listbox gets dimmed
+
+25) Added an option to each of the scrollbar menus in test code
+TScrlB0 to dim that scrollbar
+
+26) If an application connects to the alarm alert server when there
+is already a previous client, it is the application that now gets
+panicked, rather than the alarm alert server panicking itself
+
+From DavidW:
+------------
+27) Developed the logic of "auto-dialogs", with a new example in
+TDialg0, and by converting the "Set time and date" dialog in LShell
+to be an auto-dialog.  The code for this dialog is now just
+
+    void CSimpleAppUi::LaunchTimeAndDateDialog()
+	{
+	TTime timeAndDate;
+	timeAndDate.HomeTime();
+	CEikDialog* dialog=new(ELeave) CEikDialog;
+	dialog->PrepareLC(R_LSHELL_TIME_AND_DATE_DIALOG);
+	dialog->DeclareAutoTimeAndDateEditor(ETimeAndDate,&timeAndDate);
+	if (dialog->RunLD())
+	    User::SetHomeTime(timeAndDate);
+	}
+
+28) The ExecuteLD(TInt aResourceId) function of CEikDialog is now
+
+    EXPORT_C TBool CEikDialog::ExecuteLD(TInt aResourceId)
+        {
+	PrepareLC(aResourceId);
+	return(RunLD());
+        }
+
+so you can see that there now a new possibility for applications to
+insert code in between the "PrepareLC" and the "RunLD" parts of a
+dialog.  Before, all such code had to go in (eg) the
+PreLayoutDynInitL function, which meant that a custom subclass of
+CEikDialog had to be created.  However, from the above LSHELL code
+you can see that the dialog class being used is none other than
+CEikDialog itself - there is no need for a custom subclass here
+
+29) The effect of a function call DeclareAutoXxx(TInt,TAny*) is to
+add the specified control to the set of "auto" items for the dialog,
+ie those whose return values are automatically filled in, just after
+the call to OkToExitL() returns; the DeclareXxx function also seeds
+the initial value of the control from the initial value pointed to by
+the "return value" pointer
+
+30) More DeclareAutoXxx() utility functions will shortly appear in
+greater numbers in EIKDLGUT.*
+
+31) You can have as many auto-items for any dialog that you like,
+without incurring any additional storage overhead (a slot for a
+return value pointer is now stored in CEikCaptionedControl property,
+along with a record of the control type, to allow a check at run-time
+that the control type is what any subsequent call to DeclareXxx might
+assume it is
+
+32) There's a lot of scope for simplifying existing Nokie code by
+converting more dialogs to the auto form; this will be tackled in
+stages over the next few days
+
+33) Another thing that can be done with auto-item technology is to
+build up a dialog entirely in memory, without going near a resource
+file.  Eg an example from the latest TDialg0:
+
+    void CSimpleAppUi::CmdAutoDialogL()
+	{
+	CEikDialog* dialog=new(ELeave) CEikDialog;
+	dialog->ConstructAutoDialogLC(EEikDialogFlagWait,
+						R_EIK_BUTTONS_CANCEL_OK);
+	dialog->SetTitleL(_L("Auto dialog"));
+	dialog->AddAutoNumberEditorL(_L("Number editor"),
+						101,0,300,&iAutoNumber);
+	dialog->AddAutoFloatEditorL(_L("Float editor"),
+				102,TReal(0),TReal(300),&iAutoReal);
+	dialog->AddAutoTextEditorL(_L("Text editor"),103,&iAutoText);
+	dialog->RunLD();
+	}
+
+(the 101, 102, 103 are generated ID numbers, which have to be
+distinct)
+
+34) More AddAutoXxx() utility functions will shortly appear in
+greater numbers in EIKDLGUT.*; apart from this, the essentials of
+Eikon support for Opl dialogs are now firmly in place
+
+35) Changed various ConstructL() functions of various controls not to
+have their container window as a parameter; this simplifies the
+corresponding AddAutoXxx() functions considerably
+
+36) Started splitting up EIKPANIC.* into various self-contained *.PAN
+files, thus EIKEDWIN.PAN, EIKMFNE.PAN, EIKDIALG.PAN and EIKLBX.PAN
+all exist, and are now #included within the obvious source modules
+instead of EIKPANIC.H
+
+37) Reverted to the "dark gray when pressed" scheme for movers
+(retaining the constants for the "white when pressed" scheme in a
+commented section at the top of the source module)
+
+38) Fixed the problems which were preventing TCombo1 from running
+
+39) Trailers of invisible controls in dialogs now go invisible,
+rather than just gray
+
+40) Rationalized the hotkeys in TDialg0.
+
+
+Version 0.01.046
+================
+(Made by DavidW, 30 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/104 FONTS/029
+        ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	260,352 bytes
+			EIKSRV.EXE	 12,904
+			NOKIE.RSC	  4,094
+			CONE.MBM  	  2,868
+
+(Build 045 was never formally released)
+
+As a side-effect of some of the changes described below, the
+following test apps have got broken, and are temporarily withdrawn:
+TPDraw and TCombo1.
+
+The code in TRTxtEd that causes a dependency on PRINT.DLL has been
+temporarily commented out, to allow (the rest of) it to run under
+WINS again.
+
+From MartinB:
+-------------
+1)  Yet another stage in the improvement of command buttons: the
+button face now always scrolls as a whole, instead of its constituent
+parts scrolling separately
+
+2)  As a result of the above, the Scroll() functions in CEikImage and
+CEikLabel could be withdrawn; the change also means that other types
+of "drawing controls" could be incorporated more easily on the button
+face in the future
+
+3)  As an experiment, changed the colors used by the Mover control
+when pressed to match those used by buttons, ie the background goes
+white; on reflection this does not seem to be well liked and so this
+is likely to revert to what it used to do
+
+4)  Minor changes to TEikGrip code
+
+5)  Some work on the menu code in preparation for it becoming beta:
+applied more consts as appropriate, scoped more of the enums, moved
+the definitions of some private implementation classes out of the *.H
+files into the relevant source modules, and generally tidied things
+up
+
+From SimonC:
+------------
+6)  Added support in CEikCaptionedControl for any control in a dialog
+to have some trailing text ("trailer")
+
+7)  There's a new LTEXT field "trailer" in the DLG_LINE resource
+struct that causes a trailer to be created for that line
+
+8)  See the "Floats" dialog in TDialg0 for an example of trailers in
+dialogs
+
+9)  Fixed a bug in CEikEdwin in which shift-clicking in a rich-text
+editor failed to extend the select region
+
+10) Several changes to the way CEikEdwin gets initialized; made
+corresponding changes to FPNE and Edit Combo code
+
+11) Removed all hard-coded text from EIKEDWIN.CPP, using resource
+strings as required
+
+12) Added an optional "New folder" button to the file browser dialog,
+allowing the user to create a new folder if the desire arises
+
+13) File browser displays ought to be updated automatically whenever
+a new folder is created from within them
+
+14) Other internal improvements to various code, such as listboxes
+and directory tree listboxes
+
+From Neil:
+----------
+15) Reviewed and tidied up the scroll bar, scroll frame, and
+scrollbar button code
+
+16) Fixed bug in scroll button whereby holding down the pointer until
+the thumb reached its extreme and the button dimmed, failed to
+"release" the button (ie the background stayed dark) until the mouse
+button was released
+
+17) Commented out the functions in the "approximate scrollbars" API
+(intended for use with partially formatted edwins) since this doesn't
+work at all well (some more bright ideas are required on how to solve
+this problem!)
+
+18) Auto repeat settings for scrollbar buttons are now different for
+the initial delay and subsequent repeats, in a similar way to
+keyboard repeats
+
+19) Similar change to auto-repeat timing for ears in captioned
+controls
+
+20) Improved the "access count" mechanism in the Eikon Server
+visibility: ComeToForeground() and GoToBackground() now both take a
+CEikServAppUi::TForegroundReason parameter to determine who is
+calling it; this is to prevent the Eikon Server being inadvertently
+stranded in either foreground or background
+
+21) The Eikon Alarm Alert server now panics if a second client tries
+to connect to it
+
+22) Fixed problems in the Eikon Server if a key like Ctrl+E was
+pressed when an alarm was showing
+
+23) Improved test code TEar1
+
+From Vipul:
+-----------
+24) Started work on a project currently called "auto dialogs", which
+is a new class CEikAutoDialog in a new module EIKAUTOD.*
+
+25) "Auto dialogs" are so-called because the variables they edit are
+handled automatically by CEikAutoDialog code, once they are set up in
+a suitable initialization struct; there's no need for the application
+to supply custom PreLayoutDynInitL() and OkToExitL() functions
+
+26) Auto dialogs are being created to serve the need of Opl dialogs,
+but it is hoped that they can ease the way of other applications
+programming "straightforward" dialogs; it is also likely that the
+code in CEikAutoDialog will migrate into CEikDialog itself
+
+From Julian:
+------------
+27) Replaced the CEikEdCmp class with CEikGlobalTextEditor, and
+renamed the module EIKEDCMP.* to EIKGTED.* (matching the module name
+EIKRTED.* which holds CEikRichTextEditor)
+
+28) A "global text editor" responds to keys such as Ctrl+B by bolding
+its entire contents
+
+29) Added a "global text editor" dialog to TDialg0
+
+30) With Simon, many internal changes in CEikGlobalTextEditor code
+
+31) Fixed some redraw problems with the gray palette selector
+
+32) Changed the mechanism used in the gray palette selector to show
+the "current" color: instead of a black outline, there's now a
+pointer arrow
+
+From Siamak:
+------------
+33) Further improvements to TLBX listbox test code
+
+34) Fixed some bugs in listboxes that came to light while testing
+
+35) On Bill's suggestion, redefined a couple of protected functions
+in CEikMultiColumnListBox so that any excess space in the viewrect is
+at the bottom of the listbox rather than being spread evenly between
+the top and the bottom (as happens for "normal" listboxes)
+
+From Bret:
+----------
+36) Improved test code TWldSl by adding a toolbar plus some
+additional hot-keys
+
+37) Made EIKWSEL.* indepedent of EIKDIALG.H, by overriding the
+CCoeControl function SetNeighbor() in CEikWorldSelector.  This stores
+the pointer of the previous dialog control in case a link needs to be
+made to it in ConstructFromResourceL()
+
+38) As a result of the above, the pair_id field in the world selector
+resource struct is removed.  Instead, when a selector wants to pair
+up with the previous selector, it sets the new flag
+EEikWorldSelSecondSelector
+
+39) In a dialog selector pair scenario, the second selector will
+automatically take the opposite type from the first selector (eg
+country as opposed to city).  Also the first selector in any pair now
+defaults to being a city selector
+
+40) Removed the flag EEikWorldSelDarkBackground; the background will
+now always be white, except that it is black when the control is
+focused
+
+41) Removed the flag EEikWorldSelFlashingCursor, since the cursor
+should always flash
+
+42) Added a "chars_wide" field to the world selector resource struct
+
+43) Many other internal changes in world selector code
+
+From DavidW:
+------------
+44) A couple of minor changes to CEikProgressInfo code arising out of
+a mini-review when its design was added to \design\eon.
+
+
+Version 0.01.044
+================
+(Made by DavidW, 28 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/104 FONTS/029
+        ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	258,220 bytes
+			EIKSRV.EXE	 12,904
+			NOKIE.RSC	  3,914
+			CONE.MBM  	  2,868
+
+Released in synch with CONE 104 and with TBOX 069
+
+(PRINT/020 uses a previous version of TBOX, and for this reason, test
+apps that rely on PRINT fail to run under WINS.  In practice, this
+only means TRTxtEd.  Somewhat to my surprise, TRTxtEd seems to run
+fine under Gcc!)
+
+From Neil:
+----------
+1)  The Eikon Server now checks on start-up that the machine date and
+time are sensible and, if they are less than 1980, sets them to 1997
+
+2)  Test code TEar1 now supports setting an alarm - either 10 seconds
+in the past, or 65 seconds in the future, with the test alarm screen
+appearing as a result, and beeps at regular intervals.  (On WINS, the
+"lights" in the middle of the Protea fascia.BMP flash, but I haven't
+noticed anything like that on a real Protea)
+
+3)  The buttons on the alarm control are now active when an alarm is
+in progress: you can Snooze, Silence, or Clear an alarm
+
+4)  Internal to the alarm supervisor, changed from using Universal
+Time to using Home Time
+
+5)  Other internal changes inside the Eikon Server
+
+6)  Improved TEar1 to have a menu bar publicising all the features of
+the app
+
+From Siamak:
+------------
+7)  Fixed various problems with pointer event handling in standard
+and multi-column listboxes
+
+8)  Developed the test code TLBX further
+
+From DavidW:
+------------
+9)  The functions CEikDialog::MakeLineVisible() and
+SetLineDimmedNow() both now work, supporting dynamic
+dimming/undimming and hiding/showing of items in dialogs - for
+examples, see the Sizes dialog in TPrgi, or the Choices or Floats
+dialogs in TDialg0
+
+10) The caption of a dialog line now goes dark gray if the control
+for that line has been made either dimmed or invisible; note that not
+all controls respect the dimmed state yet, by drawing themselves more
+grayly (choice lists do; most others don't)
+
+11) Clicking on a non-focused focusable window-owning-control in a
+dialog now correctly gives the focus to that control
+
+12) Fixed a typo in the anti-nesting declarations in EIKMVOBS.H
+(picked up by running CCS EMPTY)
+
+13) Further developed the test code TPrgi for CEikProgressControl
+
+14) Made use of the new CCoeControl function SetNeighbor() to pass
+each control in a dialog the handle of the *previous* control; this
+function is called after the ConstructFromResourceL() for the control
+
+15) Took advantage of the new CCoeControl function
+PositionRelativeToScreen() to simplify the positioning of pop-outs in
+choice list and gray selector code
+
+16) Did a minimal conversion of edwin code for TBOX 069, so that the
+test code at least runs without falling over in a heap (but there's
+plenty scope for choosing more carefully which TBOX function to call
+in many places)
+
+17) Took advantage of the new TParaBorderArray class to simplify the
+code in the Paragraph Borders Preview class.
+
+
+Version 0.01.043
+================
+(Made by DavidW, 27 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/103 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	255,252 bytes
+			EIKSRV.EXE	 12,368
+			NOKIE.RSC	  3,914
+			SYSTEM.MBM  	  2,868
+
+Released in synch with CONE 103
+
+From MartinB:
+-------------
+1)  Changed command buttons to the latest plan of their backgrounds
+going white when pressed (without there needing to be any changes in
+the text color)
+
+2)  New test code TBORDER specifically for the TEikBorder class
+
+3)  Some fixes and internal changes to the TEikBorder class
+
+4)  Modified EIKLBM.H with the effect that EIKLBM.CPP is now empty
+and has been removed from the project
+
+5)  Added FixedPointEditorValue() and SetFixedPointEditorValue() to
+the dialog utility functions in EIKDLGUT.CPP
+
+From Bret:
+----------
+6)  World selectors are now implemented, in the new module EIKWSEL.*
+
+7)  World selector controls can be used inside or outside of dialogs,
+as demonstrated by the test code TWldSl
+
+8)  World selectors can either be run individually, just to select
+cities or countries, or in pairs, to select a city/country
+combination
+
+9)  Declaring a single WORLD_SELECTOR in a dialog resource structure
+will create a single world selector; the pair_id field should in this
+case be left at its default value of 0 or else the control will go
+hunting for a partner with the specified ID and will either die or
+cause havoc.  If the flags field includes EEikWorldSelCountrySelector
+the selector will show countries, otherwise it will show cities
+
+10) Two selectors in a dialog, one showing cities and the other
+countries, can be connected so that one updates the other.  This is
+done by setting the pair_id in the second control to the dialog line
+ID of the first control.  The pair_id for the *first* control should
+*not* be set to anything, otherwise it will go looking for the second
+selector before that has been created
+
+11) To create a single selector outside a dialog, call the
+ConstructL() function; to create a second selector outside a dialog
+that links to the first one, call ConstructSelectorPairL() passing a
+pointer to the first selector
+
+12) The search extent (whole world, or restricted to one country) can
+be toggled by a CTRL+letter combination, for which the default key is
+'L' but this can be overridden either in the resource structure, or
+by calling SetSearchExtentToggleChar().  In the test code, it has
+been set to 'C'
+
+From Julian:
+------------
+13) Converted CEikGraySelector, the gray selector control, to the new
+Eikon design, along with the associated pop-out control,
+CEikGrayPalette
+
+14) The gray selector control operates either in 4-gray mode or
+16-gray mode, depending on a flag
+
+15) Modified TDialg0 to contain a dialog with two gray selector
+controls, one in each of the two modes
+
+From SimonC:
+------------
+16) Made a number of changes to the hierarchical and directory
+listbox classes after a review by Bill and MartinB
+
+17) The largest changes are that CHierarchicalListBoxModel now
+inherits from MListBoxModel rather than MTextListBoxModel,
+THierListItem has been renamed CHierListItem and now inherits from
+CBase, and a number of functions that used to take a TDes& now return
+a TFileName instead.  A number of convenience functions have been
+removed from the controls, just to make applications work harder
+
+18) Altered the listbox code so that it handles the case of not all
+items having text for incremental matching
+
+19) Updated file browser code in line with the above changes, and to
+make other internal improvements
+
+From Neil:
+----------
+20) New module EIKALSUP.* for the "alarm control supervisor",
+containing code derived from Brendan's code in CEikAlarmControl in
+the old Eikon design
+
+21) Changed the Eikon Server start-up code to create an alarm control
+supervisor which in turn creates an alarm control
+
+22) Modified the test code in TEar1 to match the above changes
+
+From DavidB:
+------------
+23) Added a dialog to LShell to allow the user to set the time and
+the date (this dialog also acts as a further test of the combined
+date-time editor)
+
+From Vipul:
+-----------
+24) More improvements to the visuals of multi-page dialogs
+
+From Siamak:
+------------
+25) Started work on a new listbox test app (still called TLBX) that
+aims to exercise listboxes much more fully than before
+
+(this is presently in a intermediate state)
+
+26) Internal change in listbox code to avoid updating scrollbar
+thumbs in cases when no scrolling actually took place
+
+From DavidW:
+------------
+27) On advice from Duncan, changed the code in the CEikonEnv function
+NewDefaultCharFormatLayerL() so that subsequent EText calls to sense
+the effective character format will have less work to do
+
+28) Changed the toolbar code in TDialg and TMfne to remove any
+app-specific code, just leaving it to the latest CCoeControlGroup and
+CEikToolBar code to sort things out themselves as good as they could
+(though this has exposed some more bugs therein)
+
+29) Made the function EikDrawUtils::DrawTextWithMnemonic() work for
+non-zero margins with ECenter alignment; note that if some text has
+to respect a left margin iLeftMargin and a right margin iRightMargin,
+the "margin" value to pass in the case of center alignment is the
+*difference* iLeftMargin-iRightMargin (so, code in CEikLabel had to
+change too); in turn this leads to a different interpretation of the
+margin value in the center aligned case from in the current BITGDI
+code, so a workaround was introduced for that; all in all, the
+scrolling behaviour of button faces is now correct in *almost* all
+cases (the single exception I know of being the top-left button in
+TBut3 in the center aligned case, when the face still fails to scroll
+"as a whole")
+
+30) Added a pair of InfoWinL() functions to CEikonEnv, with API very
+similar to the QueryWinL() pair of functions, resulting in a stock
+dialog with one or two lines of text in it, together with a
+"Continue" button (this is different from calling AlertWin() in that
+an app can have several QueryWinL or InfoWinL calls in play at any
+one time, but only one AlertWin())
+
+31) Sh-Ctrl-Alt-M, at any stage in any application, now brings up a
+"Move me!" info dialog, which can be dragged around the screen at
+will to test redraws (this complements the complete screen redraw
+from Sh-Ctrl-Alt-R; both of these are provided by the CEikDebugKeys
+class)
+
+32) Added a TBool-return function ConfirmLossOfAllChangesL() to
+CEikonEnv, which layers over QueryWinL() with a pair of well-chosen
+text strings to make it clear to the user that changes will be lost
+if (on an English machine) the 'Y' key is pressed
+
+33) Adjusted the pointer repeat rate for ears in captioned controls
+to once per 3/10 of a second, with the intention of making it easier
+for users to fine-tune controls by their ears
+
+34) Overhauled test code TPRGI for CEikProgressInfo, adding many new
+features, to exercise the control more thoroughly
+
+35) Added a function SetAndDraw(aValue) to CEikProgressInfo, and
+simplified various test applications (TSound, TDialg0) by using this
+rather than fighting with the IncrementAndDraw() function
+
+36) Removed the concept of "initialValue" from CEikProgressInfo, so
+that all progress bars now start at an API value 0
+
+37) The flags in EIKPROGI.HRH are now EEikProgessTextPercentage and
+EEikProgressTextFraction; the CEikProgressInfo class itself supports
+futher derivation such that subclasses can provide their own text
+format strings
+
+38) Added support for changing various "layout" and "border" features
+of a progress info control (see the spec in the "Eikon" database for
+more details); fine-tuned the standard choices of these to match
+Bill's visuals as closely as possible
+
+39) Many other changes in the internals of CEikProgressInfo
+
+40) Standardized the GetXxx() dialog utility functions so that the
+control ID is always the final parameter
+
+41) Removed the trailing ...L in CEikDialog::SetInitialCurrentLineL()
+since the default implementation of this function does not Leave, and
+there is no reason for any replacement for it to Leave either
+
+42) Fixed the calculation of the position of pop-out listboxes to
+work if the choice list is a child window of other than a top-level
+window (as occurs in the present implementation of multi-page
+dialogs); made a similar fix in GraySelector code.
+
+
+Version 0.01.042
+================
+(Made by DavidW, 23 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/102 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	243,696 bytes
+			EIKSRV.EXE	 12,380
+			NOKIE.RSC	  3,793
+			SYSTEM.MBM  	  2,868
+
+From DavidB:
+------------
+1)  Gave MFNEs a gap two pixels at the front and at the end, and a
+*deep* sunken border, to give them the same look as choice lists
+
+(a choice list has been temporarily added to the test dialog in TMfne
+- press Space to access this dialog - to show this)
+
+2)  Times with single-digit hours are no longer padded with leading
+zeros in date editors, thus six o'clock in the morning is "6:00 am"
+in 12-hour format and "06:00" in 24-hour format
+
+3)  The test dialog in TMfne now runs on the rack, as a result of
+reducing the lower date limits to 1970 (because, currently, nothing
+on the rack causes the date to be initialized more meaningfully)
+
+4)  Fixed a bug pointed out by Kevin Dixon (defect report HA-200)
+when date editors were set to the first day in the month (or the
+first month in the year)
+
+From Neil:
+----------
+5)  New module EIKALMCT.* for what will become the alarm alert; for
+now, this sets itself to the full screen, has a textured background,
+an inactive mover as the title, and three command buttons (snooze,
+silence, and clear)
+
+6)  This control looks like a dialog and behaves like a sleeping
+dialog via functions ShowAlarm() and HideAlarm()
+
+7)  The Eikon Server now links to EALWL and the alarm server is
+started up within the Eikon Server system startup code
+
+8)  Added a sleeping alarm control to test code TEar1, which is
+toggled between its sleeping/awake states by pressing Ctrl+D
+
+From Siamak:
+------------
+9)  On Dan's request, made the CEikListBox function
+AdjustRectHeightToWholeNumberOfItems() virtual
+
+10) Fixed a header file dependency problem in EIKLBV.H
+
+From Vipul:
+-----------
+11) Borrowed some ideas from menu bar drawing code to cut down on the
+amount of work required to draw the page selector region of dialogs
+
+12) Dialog pages now have proper borders drawn round them
+
+13) Added the function Text() to CEikLabel returning a TPtrC of the
+text inside the label
+
+From DavidW:
+------------
+14) Changed CEikDialog::PrepareForFocusTransition() from private to
+protected so that classes which replace this function can supersend
+
+15) Added the protected function IdOfFocusControl() to CEikDialog (if
+there is no line with the focus, the function returns 0).
+
+
+Version 0.01.041
+================
+(Made by DavidW, 22 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/102 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	241,536 bytes
+			EIKSRV.EXE	 12,376
+			NOKIE.RSC	  3,762
+			SYSTEM.MBM  	  2,180
+
+From MartinB:
+-------------
+1)  Reinstated four visually distinct states for command buttons -
+the outcome is still experimental, because pressing on a button no
+longer inverts its background, and this is at variance with most of
+the rest of the UI
+
+2)  The command button scroll offset is now recorded internally,
+rather than being infered, so that buttons should no longer have
+their faces "walking" indefinitely
+
+3)  Renamed the field CEikCommandButton::iFlags to iCmdFlags
+
+From Neil:
+----------
+4)  Improved the code in CEikEdwin to find the first character on the
+first fully visible line (required for some scrollbar purposes), by
+using a recently created CTextLayout API
+
+5)  Ears for captioned controls now have auto-pointer repeat at a
+rate of 10 per second
+
+6)  Changed the pointer repeat rate for nudge buttons and page
+buttons in scrollbars (some more experimentation may still be
+required here)
+
+From SimonC:
+------------
+7)  Converted the file browser dialog from eikon, and added test code
+for it to TLBox1
+
+8)  Tidied up the browser code (including switching to using a button
+coordinator for the sort order buttons)
+
+9)  Added an EEventItemDoubleClicked event to the listbox observer. 
+The hierarchical and directory contents listboxes report this event
+whenever they have been expanded/collapsed regardless of whether a
+double click has occurred or tab been pressed
+
+10) Fixed an edwin panic reported by Gillian that occurred if anyone
+called SetTextL for an edwin in a dialog before it was sized
+
+From Vipul:
+-----------
+11) Modified the visuals of multi-page dialogs, to make them less
+flickery, and to draw a border around the "page" part of the dialog
+(note: currently this sometimes fails to be correctly redrawn)
+
+From Siamak:
+------------
+12) Improved the implementation of the HandlePointerEventL() function
+in listboxes, acting on suggestions from Neil and Steve
+
+13) Fixed some bugs that had arisen in the recent reorganization of
+listbox code
+
+14) Removed all calls from EIKLBX to the model's ItemExist()
+function, since this function is slated to disappear
+
+15) On a suggestion from Simon, added a new function to CEikListBox
+that returns the index of the bottomost visible item in the listbox.
+
+
+Version 0.01.040
+================
+(Made by DavidW, 21 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/102 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	238,440 bytes
+			EIKSRV.EXE	 12,376
+			NOKIE.RSC	  3,762
+			SYSTEM.MBM  	  2,180
+
+From DavidB:
+------------
+1)  Mfnes now support dynamic setting of their maximum and minimum
+values, via SetMaximumAndMinimum() functions
+
+2)  New utility functions in EIKDLGUT.CPP to set the max/min of Mfnes
+specified by control ID
+
+3)  Changed the drawing functions of Mfnes to leave one blank pixel
+in between the top of the ascenders and the border, for improved
+aesthetics
+
+4)  The Mfne dtor now calls HideCursor() if it is flashing a cursor
+at the point of destruction, to avoid leaving the cursor behind in
+some rare cases
+
+5)  Changed some IMPORT_C's to EXPORT_C's in EIKMFNE.CPP, allowing
+MFNEs to be created and subclassed across a DLL boundary (so that
+TMfne once again links and runs under Gcc)
+
+From Vipul:
+-----------
+6)  Further work on page selector controls - developed their visuals
+(though this is not complete yet) so that it is clear which page is
+the "current" page at any one time
+
+7)  Added HandlePointerEventL() and OfferKeyEventL() functions to
+CEikPageSelector, both of which can change which page is current
+
+8)  By default, the user can press Alt+1 to move to the first page,
+Alt+2 for the second page, and so on, as well as clicking with the
+pen on a page selector
+
+From Neil:
+----------
+9)  Killing a task used to hang the rack due to a problem in E32 with
+opening threads by passing the full name.  Fixed by using a
+TFindThread to find the thread and using the other variant of
+RThread::Open()
+
+10) Fixed a problem with an asynchronous object (the kill thread
+timer) being passed a pointer to a buffer on the stack, which had
+unwound by the time of the completion of the timer
+
+11) Added a call to close the thread handle after the thread had been
+killed, since otherwise trying to launch another app after killing
+one hangs the rack.  Unfortunately the call to Close() *itself* hangs
+the rack, so this code remains commented out until resolved by the
+Base team
+
+From Siamak:
+------------
+12) Changed CEikListBox::SetCurrentItemIndex() so that it no longer
+does any drawing as a result of changing the current item; if you
+want to tell a listbox to change its current item and redraw the
+affected items, call the new function SetCurrentItemIndexAndDraw()
+
+13) Various internal changes to the listbox view code (fixing some
+problems but with several known defects remaining - some old and some
+new)
+
+14) Updated TDialg0 so that the list dialog now remembers its state
+when the dialog is exited via Ok/Enter
+
+From SimonC:
+------------
+15) Started converting the full-screen file browser to the new
+Cone/Eikon design, in the new module EIKFBROW.*
+
+16) New test application TLBox1 to exercise the file browser
+
+17) Added mask bitmaps for the browser's sort-order buttons (however,
+these get lost against the dark background applying when the buttons
+are latched down; some kind of rethink is required here)
+
+18) Added MArray<TDesC> derived class to EIKDCLBM so that the
+Directory Contents listbox model doesn't need to keep two copies of
+its text
+
+19) Fixed a bug in the Directory Contents item drawer class, which
+sometimes lead to text being drawn in the same color as the
+background
+
+From DavidW:
+------------
+20) First Nokie with working multi-page dialogs, see the Lists
+dialog in TDialg0, which has three pages each containing (as it
+happens) a single list box
+
+21) There are known issues about visuals and flicker (and eg about
+the lack of initial keyboard focus in pages other than the first),
+which are being worked on; also more examples will shortly be
+available
+
+22) New class CEikDialogPage, in EIKDPAGE.*, which is the window for
+a page in a multi-page dialog; the basic design is that each page has
+its own window, of which only one is visible at a time; another basic
+part of the design is that the iLine pointer in CEikDialog property
+is *not* owned by the dialog in the case of a multi-page dialog, but
+rather is just a copy of the iLines pointer in the current page; note
+finally that there is *no* new class CEikMultiPageDialog (or
+whatever); isntead, you just subclass from CEikDialog as normal, and
+what makes it a multi-page dialog is the contents of the resource
+definition
+
+23) Converted to CONE 102, by removing various empty Draw() functions
+that are no longer required (because CCoeControl::Draw() is now
+itself empty)
+
+24) Adjusted the drawing code of choice lists to move one line of
+empty pixels from the ascender area to the descender area, to prevent
+the tops of letters colliding with the top border; this change
+automatically benefits subclasses like CEikFileNameSelector too
+
+25) Reduced the inter-item spacing between dialog controls (more
+strictly, the extra vertical margins around a CEikCaptionedControl)
+by two pixels top and bottom
+
+26) Partly to compensate for the above, added back two pixels spacing
+at the very top of a CEikCaptionedControlArray; the net result of
+these changes is that a dialog with a title and eight "normal" lines
+fits snugly within the screen height (eg, the dialog you get by
+pressing Space in TMfne)
+
+27) Moved down the prompts of captioned controls by three pixels, so
+that they align more often with the controls on the right hand sides;
+also set the margins of the prompts to 1 all-round, to improve their
+appearance when highlighted.
+
+
+Version 0.01.039
+================
+(Made by DavidW, 20 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/101 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	226,960 bytes
+			EIKSRV.EXE	 11,860
+			NOKIE.RSC	  3,718
+			SYSTEM.MBM  	  2,180
+
+From DavidB:
+------------
+1)  MFNEs now support a duration editor, and a combined time-date
+editor
+
+2)  Several of the STRUCTs used to declare MFNEs in resource files
+have been simplified (in part as suggested by MartinB), including
+shortening the sizes of some of the field names (eg just "max"
+instead of "maximumvalue"); also the initial value declarations have
+been removed from these STRUCTs, since these values will need to be
+supplied at run-time by the application (typically in a DynInitL
+function)
+
+3)  Added utility Get and Set functions for all MFNE controls to
+EIKDIALG.H and EIKDLGUT.CPP
+
+4)  Extended and developed the test code in TMfne, eg by supplying it
+with a toolbar
+
+(Note that TMfne doesn't link in Gcc, however, and is omitted from
+the build ROM images)
+
+From Vipul:
+-----------
+5)  First steps of the work to support multi-page dialogs: there's a
+new module EIKPGSEL, defining a page selector control, that can
+optionally appear as the top line of a dialog (underneath the title);
+for now the visuals of this are rudimentary
+
+6)  The DIALOG struct defined in EIKDIALG.RH now has a "pages" LLINK
+field in it, that defaults to 0, but which can be filled in to
+identify an array of page titles and matching page resource
+definitions (not operational yet)
+
+7)  Updated the sizing and control-counting functions in CEikDialog
+to take account of the possible existence of a page selector
+
+8)  Updated TDialg0 to show a dialog with a page selector (the "List"
+dialog)
+
+From MartinB:
+-------------
+9)  Made some experimental changes to CEikCommandButton, with the
+effect that when a button contains some text and a bitmap, the bitmap
+never gets scrolled; this turns out to be more visually satisfying
+
+(however, the code has collapsed the four previously visually
+distinct button states into only two, resulting in much less feedback
+to the user for latching command buttons)
+
+From Siamak:
+------------
+10) Added explicit default ctors and dtors for all the file selection
+controls, so that they can be subclassed or created from other DLLs
+
+11) Changed the default size of the folder selector in EIKFSEL.RH to
+be a fixed value (20), so that the control does not attempt to work
+out its width dynamically
+
+12) Other internal changes to file selection controls
+
+13) Changed the signature for CEikListBox::UpdateScrollBarsL() so
+that it no longer takes any arguments
+
+14) *** IMPORTANT *** removed the HandleListUpdateL() function from
+CEikListBox, since it was trying to do too much.  The two most common
+situations in which this function was being used are as follows:
+
+    a) after one or more items have been added to the listbox model;
+in this case, you can now use the new function HandleItemAdditionL(),
+which updates the listbox's bottom item index and its scrollbars (if
+any), and then redraws the listbox by calling DrawNow()
+
+    b) after the set of items in the listbox model has been
+completely deleted or replaced; in this case, you can typically use
+the following code fragment:
+
+    myListBox->Reset();
+    myListBox->UpdateScrollBarsL();
+    myListBox->DrawNow();
+
+where the first of these functions sets the top and current item
+indexes to 0, recalculates the bottom item index, and gets rid of any
+selection
+
+15) Updated various modules (eg EIKSRV, EIKHLBX, various test apps)
+that were using listboxes, to take into account the above change
+
+From Neil:
+----------
+16) Pressing on the top-most button of the left off-screen window (ie
+the "Menu" button) now results (courtesy of new Eikon Server code) in
+an F9 keypress being sent to the foreground app - causing it to
+display the menu bar
+
+17) The Task list can now be used to kill tasks.  Initially the app
+is sent a Ctrl+E key event to exit normally.  If it doesn't respond
+within two seconds (eg if a dialog is active) a query window will be
+displayed asking the user if the task should be killed.  Note that
+later a more specific keypress, rather than Ctrl+E, will be used,
+which will have the effect of exiting out of any straightforward
+dialogs before switching to the Ctrl+E processing.
+
+
+Version 0.01.038
+================
+(Made by DavidW, 19 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/101 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	223,812 bytes
+			EIKSRV.EXE	 11,316
+			NOKIE.RSC	  3,630
+			SYSTEM.MBM  	  2,180
+
+From DavidW:
+------------
+1)  Dialogs can now have buttons, declared in resource files in a
+manner very similar to in the "old" Eikon design
+
+(Various aspects of the spacing of button layout will be beautified 
+in the run-up to B1 day)
+
+2)  Dialogs *without* buttons will no longer exit in response to any
+keypress (such as Enter), with the single exception of Escape; so, be
+sure to add button definitions to all of your dialogs; this usually
+just means putting
+
+    #include <nokie.rsg>
+
+near the top of your *.RSS files, and adding lines like
+
+    buttons=R_EIK_BUTTONS_CANCEL_OK;
+
+near the top of each DIALOG definition
+
+3)  The definition of the OkToExitL() function for CEikDialog has
+changed the name of the (single) TInt parameter back to aButtonId
+from aKeyCode, ie the same as it was in the "old" Eikon design
+
+4)  In principle (though this hasn't been tested), command buttons in
+dialogs can contain a mixture of an image and a label, ie not just
+text; this is controlled in the same way as for buttons in toolbars
+
+5)  Converted dialogs to use a TEikBorder for their border drawing
+and size calculation routines (something they had slipped through the
+net before)
+
+6)  The TryChangeFocusToL() function of CEikDialog now takes a
+control id for its parameter, as opposed to a line "index"
+
+7)  Likewise the HandleInteractionRefused(TInt) callback from
+CEikDialog now passes the control id of the dimmed line, rather than
+its line "index"
+
+8)  Reinstated "query" utility functions in CEikonEnv:
+
+    TBool QueryWinL(const TDesC& aFirstLine,const TDesC& aSecondLine);
+    TBool QueryWinL(TInt aFirstLineId,TInt aSecondLineId=0);
+
+9)  As an example, converted the "Repro" menu command in LShell to
+call QueryWinL() instead of using a home-grown dialog
+
+10) Added a function MnemonicKeycode() to CEikCommandButton, which
+returns the value of the corresponding function of its label
+component, if that exists, or zero otherwise.
+
+
+Version 0.01.037
+================
+(Made by DavidW, 17 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037
+	C32/022 EALWL/025
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/101 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	221,136 bytes
+			EIKSRV.EXE	 11,316
+			NOKIE.RSC	  3,390
+			SYSTEM.MBM  	  2,180
+
+Nokie depends on EALWL for the first time
+
+From SimonC:
+------------
+1)  With Siamak, numerous improvments to the file selection controls,
+to solve various panics and unhandled exceptions, and to minimize the
+amount of work that dialogs are required to do to coordinate their
+file selection controls
+
+2)  Fixed TRTxtEd so that files can be loaded and saved once again
+(thereby providing a meaningful test of the common file dialogs and
+the controls they contain) - note that if you give your saved files
+an extension other than *.RTX, a subsequent Open dialog will fail to
+find them again
+
+From Neil:
+----------
+3)  New module EIKALSRV.* for the alarm/alert server, running inside
+the Eikon Server process; for the time being, all (legal) requests
+are simply completed with KErrNone
+
+From Vipul:
+-----------
+4)  Created a new module EIKBTPAN.* for the "button panel" class
+CEikButtonPanel to implement panels of buttons in dialogs
+
+5)  Currently this class only reports its size, as read in from a
+resource file; this is done to allow dialog geometry calculations to
+be refined:
+
+6)  Modified the MinimumSize() and SizeChangedL() functions of
+CEikDialog to take account of the presence of a possible button array
+
+7)  Defined the flag EEikDialogFlagButtonsBelow which, if set, will
+position the panel of buttons along the bottom of the dialog;
+otherwise (the default) they will be positioned down the right hand
+side
+
+8)  Modified the dialogs defined in TDialg0.RSS to specify dummy
+button panels (some at the bottom of their dialogs, and some down the
+right hand side), which are drawn as dark gray rectangles for now
+
+From DavidW:
+------------
+9)  Introduced the virtual function CurrentItemChangedL() in
+CEikChoiceListBase, to simplify the design of those of the file
+selection controls that are derived from CEikChoiceList
+
+10) Removed EDISP.DLL from NOKIE.OBY, since it is the display driver
+used by the Text Window Server and isn't needed for graphics ROMs
+
+11) Got fed up with test applications not having toolbars, and beefed
+up the CEikToolBar class accordingly, together with support for
+toolbars inside CEikAppUi
+
+12) Added single toolbars to TDialg0 and LShell, and a pair of
+toolbars (one down the side and one along the screen top) to TRTxtEd,
+one of the latter replacing the toolbar which TRTxtEd used to
+hand-craft
+
+13) New function CEikAppUi::ClientRect() which applications using
+built-in toolbar support should call, to find the TRect area that is
+left behind once the toolbars are taken into account; client windows
+should be created with that extent, rather than the extent of the
+whole screen (otherwise the toolbars will be covered up)
+
+14) Fixed a bug in test code whereby a descriptor was being passed by
+value as a ... parameter to Format(), whereas its address needs to be
+taken, to match a %S (thanks to the Gcc compiler for spotting this).
+
+
+Version 0.01.036
+================
+(Made by DavidW, 16 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/037 C32/022
+        GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
+        WSERV/042 CONE/101 FONTS/029
+        ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	219,016 bytes
+			EIKSRV.EXE	 10,256
+			NOKIE.RSC	  3,390
+			SYSTEM.MBM  	  2,180
+
+First release in synch with GDI/029 WSERV/042 ETEXT/046 TBOX/068 etc
+
+Nokie depends on C32 for the first time (because PDRSTORE does)
+
+Among other changes that come automatically (because of upstream
+components) are the fact that cut and paste of rich text now
+preserves embedded formatting
+
+Note that Ears and ScrollBar buttons etc (anything using DrawPolygon)
+fail to display themselves properly, pending a re-release of Wserv
+
+From Neil:
+----------
+1)  In the Eikon Server, the treatment of "special" keys (ie switch
+off, and LCD contrast change) is now done in a keyboard filter
+control, so that it still works even when the Eikon Server is
+displaying a dialog
+
+2)  Changed the listbox in the task list dialog to have an
+auto-visible scrollbar (but a known defect in listbox code prevents
+this from displaying properly)
+
+3)  Altered the Draw() function of the CEikMover control to draw the
+text inverted when the mover is being pressed, eg when a dialog is
+being moved
+
+4)  Added an Auto swith off menu command to LShell, producing a
+dialog for controlling the auto switch off properties (however the
+corresponding UserHal functions in E32 haven't been implemented yet)
+
+5)  Added Set and Get utility functions for number editors in dialogs
+to EIKDLGUT.CPP
+
+6)  Added a forward declaration of class CEikonEnv to EIKMFNE.H
+
+From SimonC:
+------------
+7)  Implemented CEikFolderNameSelector, which presents (in a choice
+list, and then in a listbox, if tabbed out) a flat list of all the
+directories in an expanded directory tree listing
+
+Note that a dialog with a CEikFolderNameSelector takes a *very* long
+time to initialize itself under WINS, since it will scan the entire
+directory structure of your C:\ drive; this will change in the wake
+of E32/065 when C: under WINS is mapped to a specified subset of your
+hard disk
+
+From Siamak:
+------------
+8)  New classes CEikFolderNameEditor and CEikDriveNameSelector, and
+developed the code for CEikFileNameEditor
+
+9)  Upgraded the common file dialogs to present coordinated sets of
+the file selection controls - see eg TDialg0 for these dialogs
+
+From Vipul:
+-----------
+10) Fixed typo bug that was causing the border of command buttons to
+occasionally get drawn in the wrong state
+
+11) Improved test code TPDraw1 to include a class of buttons in which
+two different bitmaps are displayed on each face; this tests out
+ideas and code for scrolling button faces
+
+12) Improved test code TBtGrp1 to test the SetDisplayContent()
+functionality of command buttons, via a new menu; this required the
+function CEikCommandButton::SizeChangedL() to be made public; note
+that only the display content of the "Word" button is altered
+
+From DavidB:
+------------
+13)  Simplified some of the structs used for declaring MFNEs in
+dialogs - see TMfne for examples
+
+14) EIKMFNE now supports range editors and lat/long editors
+
+15) Extra test code in TMfne, available on Ctrl-F through Ctrl-H, to
+show the new kinds of MFNEs
+
+16) Single-field number editors now increment/decrement their ears
+are nudged
+
+17) New system-wide feature on Sh-Ctrl-Alt-P to display a dialog with
+a number editor allowing the heap failure rate to be set; this can be
+cancelled using Sh-Ctrl-Alt-Q; doubtless it will show up all kinds of
+bugs where code has not been written in a Leave-safe manner
+
+From Julian:
+------------
+18) Improved test code TSound to incorporate a progress bar to give
+better visual feedback to the user during playback
+
+19) Fixed a crash with stray signal death if the record button was
+pressed while recording was already in progress
+
+20) TSound now detects the "already exists" error when loading the
+sound device driver, and now treats this as harmless, rather than
+failing to complete application initialization
+
+From DanH:
+----------
+21) Minor improvement to TGrid test code
+
+From MartinB:
+-------------
+22) Fixed CEikToolBar code so that buttons are pushed on the cleanup
+stack during their initialization (needed because of the removal of
+the "reserved space" feature from CCoeControlGroup)
+
+23) Renamed Button() to ButtonById() in the toolbar
+
+24) Fixed CEikHorOptionButtonList to use TCharUC rather than
+home-grown upper-casing
+
+25) Renamed GEikGridWin to CEikGrid, and changed test code TGrid
+accordingly
+
+From DavidW:
+------------
+26) Converted all code to compile and link, in the wake of API
+changes upstream; note that some further work remains to be done
+within Nokie code to take better advantage of these API changes
+(especially those within Form)
+
+27) Changed the name of CEikDialog::ValidateFocusControlL() to
+PrepareForFocusTransitionL(), in line with the related change of
+CCoeControl::CheckStateIsValidL() to PrepareForFocusLossL()
+
+28) Added a utility verb PUTYELLOW to MNT.CMD:
+
+    :putyellow
+    call prj tsrc
+    echo Copying eik%_ver%P1.img to r:\%_vgroup%\yellow ...
+    copy eik%_ver%P1.img r:\%_vgroup%\yellow >nul
+    goto end
+
+
+Version 0.01.035
+================
+(Made by DavidW, 14 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/036
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/099 FONTS/029
+        ETEXT/044 TBOX/066 GRID/067 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	210,624 bytes
+			EIKSRV.EXE	  9,764
+			NOKIE.RSC	  3,273
+			SYSTEM.MBM  	  2,180
+
+Uses CONE 099 for the first time
+
+Note that EIKBTGRP.* should be deleted, since it has been superseded
+by COECTGRP.* in CONE
+
+Before you can do a MNT BLDIMG to make your own P1 ROM image, you'll
+need to have DASNP1.PDD on your PC, in \work\emarm.  Doing MNT GETE32
+will fetch it now (it wasn't originally released), or you can copy it
+from Julian's U:\
+
+From Julian:
+------------
+1)  New test code TSOUND.* demonstrating the record and playback
+features of the machine, working off an array of five buttons; this
+is the first public outing for code that will eventually become the
+VoiceNotes app
+
+(this works best on a real Protea or on a rack-C)
+
+From Siamak:
+------------
+2)  Renamed EIKFNSEL.* has to EIKFSEL.*, since this module will
+contain other file selector controls, in addition to the filename
+selector class CEikFileNameSelector (derived from CEikChoiceList)
+
+3)  Created CEikFileNameEditor, derived from CEikEdwin
+
+4)  Modified the SaveAs dialog in EIKCFDLG to use the filename editor
+(there's an example of this dialog in TDialg0)
+
+5)  New header file EIKFSO.H defining MEikFileSelectionObserver
+
+6)  Various internal changes to the choicelist and listbox code
+
+From Neil:
+----------
+7)  The Eikon Server now uses a listbox for its task list dialog
+(presented when Ctrl-System is pressed) rather than a choice list
+
+8)  Clicking on System will task switch to LShell if it is running,
+or if it is not running, it will start LShell (this feature is handy
+if you unintentionally exit your last running LShell)
+
+9)  Improvements to the Notifier Server code, eg to panic the client
+instead of self on receipt of bad parameters
+
+10) New private header file EIKSVPAN.H for panics from the Eikon
+Server
+
+11) Added a "Machine info" menu command to LShell, but this always
+just says V1.00(1), regardless of the OBY file saying eg 0.01(035)
+
+12) Added Set/Get utility functions in EIKDLGUT for the current item
+of a listbox in a dialog
+
+13) Fixed a problem in text listbox model code
+
+From Vipul:
+-----------
+14) Added the function SetDisplayContent() to CEikCommandButton,
+which takes a TDisplayContent parameter to specify whether both the
+text and bitmap of the button should be displayed, or just one
+
+15) Changes to the StateChangedL() function of CEikCommandButton, to
+prevent the button face from scrolling indefinitely in cases such as
+the Bold Italic and Underline buttons on the TRTxtEd toolbar
+
+16) Updates to TEikBt1 test code
+
+From SimonC:
+------------
+17) Improved the BLD.CMD system in the ..\srcdata directory, so that
+each constituent *.PBM file now gets listed in its own line in a
+BLD.TXT text file
+
+18) Minor improvements to the Repro Confirmation dialog in LSHELL
+
+From DavidW:
+------------
+19) Added an "Eikon version" menu command to LShell, to display the
+version number of Eikon/Nokie that is included; this also gets
+displayed when LShell starts
+
+20) In line with changes in CONE, renamed the bitmap store file
+EIKON.MBM to SYSTEM.MBM (though the generated header file EIKON.MBG
+retains its name, and likewise the enums in it)
+
+21) Converted all MinimumSizeL const functions to be MinimumSize (non
+const)
+
+22) New (overloaded) TEikBorder constructor, specifying just the
+TBorderType, and not bothering to pass any "adjacent" flags (which
+the constructors effectively sets to ECoeAdjNone)
+
+23) Managed to fix the Notifier Server so that it now works under Gcc
+as well as under WINS.
+
+
+Version 0.01.034
+================
+(Made by DavidW, 13 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/036
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/098 FONTS/029
+        ETEXT/044 TBOX/066 GRID/067 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Sizes (Gcc build):	NOKIE.DLL	212,472 bytes
+			EIKSRV.EXE	  9,756
+			NOKIE.RSC	  3,281
+			EIKON.MBM	  2,180
+
+Uses GRID/067 for the first time, with the result that *all* Nokie
+test apps now run under Gcc
+
+(Build 033 was released under-the-counter, without release notes.)
+
+From Neil:
+----------
+1)  The Eikon Server now implements the Notifier Server defined in
+E32, ie if an app calls User::Notify() the Eikon Server will display
+an alert dialog on its behalf
+
+2)  Added some explicit tests of the Notifier to TMenu3, in its Alert
+menu
+
+Note: for reasons unknown, calling User::Notifier under Gcc results
+in the Eikon Server exiting
+
+3)  Reorganized some of the code in the Eikon Server, moving its
+header files into ..\inc
+
+4)  Converted the task list dialog to be a "sleeping dialog", to help
+ensure that it can always be displayed, even in low memory
+circumstances
+
+Note: another example of use of the Notifier is when an application
+calls CEikonEnv::AlertWin (directly or indirectly) at such a time
+before the Alert dialog for that application hasn't been constructed
+yet; in this case, system code defaults to calling User::Notify();
+note however that all application start-up code of the form
+
+    #if defined(__WINS__)
+    EXPORT_C TInt EntryPoint(TAny*)
+    #else
+    GLDEF_C TInt E32Main()
+    #endif
+        {
+        CEikonEnv* coe=new CEikonEnv;
+        TRAPD(err,ConstructAppL(coe));
+        if (!err)
+            coe->ExecuteD();
+        return(err);
+        }
+
+needs to change to
+    
+    #if defined(__WINS__)
+    EXPORT_C TInt EntryPoint(TAny*)
+    #else
+    GLDEF_C TInt E32Main()
+    #endif
+        {
+        CEikonEnv* coe=new CEikonEnv;
+        TRAPD(err,ConstructAppL(coe));
+        if (err)
+	    coe->HandleError(err);
+	else
+            coe->ExecuteD();
+        return(0);
+        }
+
+in order for these errors during program startup to be properly
+notified to the user; with this done, errors such as resource files
+being missing get notified
+
+From SimonC:
+------------
+5)  Converted the hierarchical, directory tree, and directory
+contents listboxes from \eikon, along with their bitmaps
+
+(as a result, the module count in \nokie\src hits 72)
+
+6)  Added test code for all these kinds of lists in TLBox2.  On
+startup this contains a directory tree listbox.  The type of listbox
+displayed can be changed by using the menu.  Try double clicking, to
+expand or collapse branches, in all cases
+
+7)  TLBox2 contains its own example of a hierarchical listbox
+subclass, which shows a hierarchy of continents, countries, and
+cities, read in from a plain text file
+
+From MartinB:
+-------------
+8)  CEikToolBar now has a ConstructFromResourceL and a NewL function,
+so that toolbars can be loaded from resource files (this is a bare
+bones implementation at the moment)
+
+9)  The ConstructFromResourceL function supports buttons with
+bitmaps and/or text
+
+10) New file EIKTBAR.RH with definitions of TOOLBAR and
+TOOLBAR_BUTTON
+
+11) Change to CEikButtonGroup so that some layout is handled when
+buttons are added
+
+12) Updated TRTxtEd test code to reflect the above
+
+From Vipul:
+-----------
+13) Fixed various bugs to do with the borders drawn for buttons at
+the edges of button groups
+
+14) Introduced a couple of panics in command button code to catch
+problems earlier
+
+15) Upgraded TBtGrp1 to allow the setting of button spacing in a
+button group
+
+16) Other improvements to TBtGrp1 such as "radio button" displays in
+menus
+
+From Dan:
+---------
+17) Removed the  call to ReportEventL(EEventRequestFocus)
+from CEikGridWin::HandlePointerEventL (this is no longer needed,
+under the new CONE design)
+
+From DavidW:
+------------
+18) Controls and their prompts are once again properly aligned within
+dialogs, courtesy of the new class CEikCapCArray, the array of
+captioned controls, defined in the new module EIKCAPCA.*
+
+19) Converted test code TCAPC1.* to use CEikCapCArray
+
+20) Key Up/Down in dialogs now bypass lines which are non-focusing
+
+21) Changed the settings for a few controls in EIKFCTRY.CPP to say
+they are non-focusing
+
+22) Took back the earlier idea that any line in a dialog without a
+prompt is non-focusing (easy counter-example: the character map
+control)
+
+23) Fixed a bug in the character map in which it could try to draw a
+flashing cursor even when it wasn't focused
+
+24) Label controls in dialogs are now given center alignment
+(intended for use in the likes of alerts and notifiers)
+
+25) Changed TMenu3 to print up the keycode and modifiers of keys
+received, as an aid to figuring out which keys do what on a real
+Protea
+
+26) Changed the background in LSHELL from dark gray to textured
+(philosophically much sounder, and much better looking on real
+Proteas)
+
+27) Converted the startup code of all live Nokie test apps to the
+form indicated above, so that errors during program startup get
+notified (in due course, when the application architecture is running
+again, that code will be taken over into Eikon.DLL itself, out of the
+hands of individual test applications).
+
+
+Version 0.01.032
+================
+(Made by DavidW, 13 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/036
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/098 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 192,512 bytes
+
+*** A few source files re-put, 11:30 13/08 -
+
+    ..\group\release.txt, ..\group\mnt.cmd, ..\tsrc\nokie.oby
+
+allowing all but one of the test apps to run on the rack.  Basically
+more files needed to be added into nokie.oby.  TGrid still won't run,
+due to a version mismatch between Bafl and Grid (I had forgotten that
+Grid depends on Bafl; adding in the sound services to Bafl had the
+effect of breaking TGrid!)
+
+I've also added the verb "MNT REPRO" to mnt.cmd
+
+    :repro
+    call prj tsrc
+    prepro eik%_ver%P1.img
+    goto end
+
+The file r:\nokie\yellow\nok032p1.img has been updated to match ***
+
+This is the first Nokie to release "over-the-counter" a ROM image
+that can be reproed onto any of the (working) yellow Proteas.  These
+ROM images will henceforth be placed in the directory
+
+    r:\nokie\yellow
+
+a./ First you need to get hold of a repro cable.  That's the *really*
+hard bit!  They're rarer than, err, hen's teeth
+
+b./ Then you have to prepare your Protea for reproing.  If it's
+already got Nokie software running on it, there's nothing to be done
+- just go to LShell and find the Repro command on the menu bar.  If
+it's still running the original (text shell) software, you have to
+type (into the text shell on the Protea)
+
+    cd ram
+    copy repro.exe c:
+    c:
+
+c./ Then you need to be sure you've got PREPRO.EXE in your path. 
+Best here is to type, on your PC
+
+    set s=s:
+    cd \tools
+    getrel ptool peiger 104
+    set s=r:
+
+d./ Then you start PREPRO.EXE on your PC.  Type
+
+    prepro r:\nokie\yellow\nok032p1.img
+
+e./ Then you start REPRO.EXE on your Protea.  Either complete the
+Repro confirmation dialog under LShell, or type "repro" into the text
+shell (depending on what software's already on the Protea)
+
+f./ Wait (around six minutes) and watch the numbers tick by on the
+PC.  Make sure power is maintained to the Protea at all times
+
+g./ When the PC beeps and tells you, you reboot the Protea (eg remove
+all power for a few moments, or else jab its reset hole with an
+unfolded paper clip), and you can press Esc to exit PREPRO on your PC
+
+NB The Nokie software is in a highly transitional (and frequently
+broken!) state; repro at your own risk
+
+For the time being, you can switch off a Protea by Ctrl-Fn-Del
+
+From Vipul:
+-----------
+1)  A new implementation of button face scrolling for command buttons
+(the way the face scrolls when the button state changes): there are
+now Scroll() functions in each of CEikLabel and CEikImage
+
+2)  Made CEikButtonGroup::AddButtonL() virtual as requested by
+MartinB
+
+3)  The AddButtonL() function of CEikButtonGroup now always allocates
+an extra space in the array, to simplify the calling code (also as
+suggested by MartinB)
+
+4)  Extended the functionality of CEikButtonGroup, as can be seen by
+the latest version of the TBtGrp1 test code
+
+5)  Various improvements to TBtGrp1 to make its functionality more
+apparent
+
+From Vamsi:
+-----------
+6)  New class CEikToolBar in the module EIKTBAR.* containing a
+subclass of CEikButtonGroup suitable for applications to use as their
+toolbars
+
+7)  Added example of CEikToolBar to test code TRTxtEd
+
+(Note: more work remains to be done to make button groups/ toolbars
+friendlier for applications to create, eg from resource files.  Also
+the visuals need further refinement.)
+
+From SimonC:
+------------
+8)  Added a Repro menu command to LShell, which (after an "Are you
+sure" query) runs the program z:\ram\repro.exe
+
+Note: until we convert to the forthcoming E32/065, the repro.exe that
+ends up in the Protea ROM has to be the "repro.RAM" file which is
+*different* from the repro.EXE file released by E32/064.  The new MNT
+verb FIXREPRO will create repro.RAM from repro.EXE for you.  If you
+try to invoke "mnt bldimg" (or equivalently, just "bldimg") without
+repro.RAM existing on your PC, the MNT will fail, telling you that
+you need to do "mnt fixrepro" first.
+
+Also note: "mnt bldimg" now defaults to creating a P1 variant of the
+ROM, that can be reproed onto a Yellow Protea (as well as onto a
+mini-rack).  Before, it used to default to a rack-B ("PB") variant. 
+To create a rack-B variant of the ROM, type "MNT BLDIMG PB" (or "MNT
+BLDIMG RB") (you can use either upper-case or lower-case letters)
+
+Again note: there is a new naming convention for the *.IMG files;
+what would formerly have been called EIK032B.IMG is now EIK032PB.IMG,
+ie with an extra 'P' inserted; this allows for EIK032P1.IMG for the
+Protea hardware v1 variant, instead of all the numbers running
+together as EIK0321.IMG, as would formerly have been the case
+
+Final point: if you're preparing your *own* ROM for reproing - make
+double sure you include REPRO.RAM in your *.OBY file, renaming it to
+REPRO.EXE; PEIGER a PB or PC version onto a rack first, to check that
+it boots okay, before you PREPRO it onto a Protea.
+
+
+Version 0.01.031
+================
+(Made by DavidW, 12 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/036
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/098 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 190,932 bytes
+
+Once again, a couple of test apps seem not to run on the rack, for no
+obvious reason
+
+From DavidW:
+------------
+1)  Developed the technology for "sleeping dialogs", ie dialogs which
+are pre-allocated and which remain invisible ("asleep") until such
+time as the application needs them
+
+2)  Implemented CEikon::AlertWin() to use a sleeping dialog (which is
+guaranteed not to fail with OOM when required)
+
+3)  Changed the CEikDialog::SetXxx utility functions in EIKDLGUT.CPP
+not to be const.
+
+
+Version 0.01.030
+================
+(Made by DavidW, 10 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/036
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/098 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 189,316 bytes
+
+Once again, a couple of test apps seem not to run on the rack, for no
+obvious reason
+
+First Nokie release using Bafl/036 and Cone/098
+
+From Neil:
+----------
+1)  The Eikon server now displays a list of running tasks on receipt
+of Ctrl-System; go to an entry in this list and press Enter to bring
+that to foreground
+
+2)  This list is constructed using Window Server enquiry functions,
+and the names displayed are (for now) concocted by Wserv from the
+corresponding thread names; this will be sanitized shortly
+
+3)  New module EIKDLL.* containing a static function to encapsulate
+launching an application (with the correct code in either WINS or
+GCC); changed EIKSRV and LSHELL code to call this rather than their
+own versions of this function
+
+4)  New private function SetEnvSystemModalApp() in CEikonEnv, that
+can be called (as a friend) by the Eikon Server, with the effect that
+all pointer-capturing windows in the Eikon Server actually capture
+the pointer relative to all window groups (whereas usually pointer
+capture doesn't prevent the user from clicking on the windows of
+another window group); thus modal dialogs in the Eikon Server are
+automatically system modal
+
+From SimonC:
+------------
+5)  Started a rich text editor control that can be used in dialogs -
+source code in EIKRTED.*; this supports Ctrl-BIUF to toggle Bold
+Italic and/or Underline, and to display the Font dialog; also
+Ctrl-XCV for clipboard operations (courtesy of functionality from the
+CEikEdwin level)
+
+6)  Added example of rich text editor in dialog in TDialg0 (run the
+dialog twice to see how the rich text can be preserved across
+invocations)
+
+7)  Fixed an edwin panic that could occur when constructing from a
+resource
+
+8)  Changed the name EEdwinFontUnderlineOn to EEdwinFontUnderline in
+EIKEDCMP.H as the old name was misleading
+
+9)  Fixed a bug in the font dialog which meant that changing the bold
+or italic settings was not having any effect
+
+From Vamsi:
+-----------
+10) New function ButtonId(CEikButtonBase*) in CEikButtonGroup that
+returns the Id of the specified button (required for application
+toolbar purposes)
+
+11) Fix to CEikHorOptionButtonList to report state-changed events
+when changed by Left or Right keys
+
+From Siamak:
+------------
+12) Made alterations to CEikListBox and CEikTextListBox as required
+to support listboxes in dialogs
+
+13) Added an example in TDialg0 of a listbox in a dialog
+
+14) Changed CEikScrollBar::EStandardWidth to be public, to aid
+various size calculations
+
+From DavidW:
+------------
+15) Increased the size of check boxes; unfortunately this has the
+side-effect that some dialogs are now too large for the screen;
+pending extra control over dialog geometry, I've commented out the
+"print position" line in the Font dialog
+
+16) Moved the OfferKeyEventL() function from CEikCheckBox to
+CEikButtonBase, as it applies equally well to all kinds of button
+
+17) Changed the default animation period of buttons to 0, so that
+clicking on the ears of check boxes (or pressing Left or Right) no
+longer suffers noticeable delays; the animation period for command
+buttons remains at 2/10 of a second
+
+18) Fixed the drawing problems with the Font dialog (and the font
+preview control)
+
+19) Starting changing all the CEikDialog::SetXxx() utility functions
+to call DrawNow() on their controls, as an undoubted code-saving
+and sanity-preserving measure
+
+20) The AlertWin() functions in CEikonEnv are now functional again
+(both the single and the double TDesC& variant); well they display
+either one or two info messages (suitably paced) but a
+dialog-oriented implementation is just around the corner; changed the
+Edit menu in TMenu3 to an Alert menu to allow these functions to be
+tested
+
+21) Fixed various coding infelicities so that (temporarily, no doubt)
+Nokie compiles without a single warning under Gcc
+
+22) To avoid confusion, I deleted ..\inc\eikctrls.rh and removed it
+from the li.prj and incc.prj files.
+
+
+Version 0.01.029
+================
+(Made by DavidW, 9 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/097 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 189,288 bytes
+
+For reasons unknown to me, TScrlB0 and TRTxtEd fail to run on the
+rack.  All other test apps run fine.
+
+The test app TDialg1 has been removed as no longer required.
+
+Nokie officially depends on PDRSTORE(011) and PRINT(019) for the
+first time, as they are now required by some test code (and will
+shortly be required by Nokie.DLL itself)
+
+From DavidB:
+------------
+1)  Further developments in EIKMFNE.*
+
+2)  Further developments in test code TMfne.*; in particular, there's
+now a dialog there, containing a number editor, a time editor, and a
+date editor (the number editor displays ears, but these are currently
+ineffective)
+
+From Siamak:
+------------
+3)  Fixed problem in listbox code when the user clicked on an item
+when the previously selected item had been scrolled offscreen (the
+display scrolled to expose the previously selected item, rather than
+the new one)
+
+From MartinB:
+-------------
+4)  Changed the implementation of CEikDialog::ConstructFromResourceL
+so that the array of lines is pre-allocated, once the number of lines
+is known - this saves pushing and popping each line on the cleanup
+stack as they are individually created
+
+From Vamsi:
+-----------
+5)  Converted part of EIKPRTDG.* - the page spec and page margins -
+from Eikon to Nokie
+
+6)  Added options in TRTxtEd to test the above dialogs
+
+7)  TRTxtEd now also has features to test the text find/replace
+dialogs
+
+8)  Changed the implementation and design of CEikHorOpButList to be
+able to pass on control events from the individual buttons to the
+observer of the list as a whole
+
+9)  Minor bug fix in EIKFINDD.CPP
+
+From SimonC:
+------------
+10) Converted the border preview control CEikBorderPreview from Eikon
+
+11) Converted the paragraph format dialogs from Eikon and added
+options to access them from TRTxtEd
+
+12) Defined a new control CEikFontPreviewLabel in EIKFPREV.*, which
+leaves the CEikLabel class less encumbered for general usage
+
+13) Added two more constructors to CEikEdwin which take a global text
+pointer - for use by Data (and no doubt by others)
+
+14) Fixed the progress bars example dialog in TDialg0 so that the
+bars reset once they have reached their limits
+
+15) Provided Set/Get methods for twips editors in DLGUT.CPP
+
+16) Fixed a minor bug in CEikComboBox::SetArray
+
+From Vipul:
+-----------
+17) Some changes to CEikButtonGroup, to support the notion of
+"direction", eg from top to bottom or bottom to top (used when
+wrapping buttons)
+
+18) Fixed some bugs in TBtGrp1
+
+From DavidW:
+------------
+19) Changed the maximum heap allowed for applications from 0x10000 to
+0x200000 (the same as it used to be in the old Eikon)
+
+20) Removed the iFlags field from the resource file definition of
+DLG_LINE, since this is now handled by the control factory
+
+21) Moved the definition of KEikDefaultCursorWidth from EIKEDWIN.H to
+EIKENV.H.
+
+
+Version 0.01.028
+================
+(Made by DavidW, 8 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/097 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 169,756 bytes
+
+From Neil:
+----------
+1)  Started the Nokie implementation of the Eikon Server, in the
+module ..\eiksrv\eiksrv.cpp; this builds to create EIKSRV*.EXE (.DLL
+under WINS) which now (courtesy of a change in WSINI.INI) gets
+started by the Window Server instead of LSHELL
+
+2)  In turn the Eikon Server starts LSHELL; quite a lot of the
+functionality from LSHELL has been relocated in EIKSRV
+
+(One side-effect of the change has been that you get a blank screen
+on exiting LSHELL - more correctly, on exiting the last "normal"
+Nokie app.  This is the silent face of the Eikon server.  Just press
+Ctrl+E again to exit the whole thing.)
+
+3)  On advice from Bill, changed the Draw() function of CEikMover not
+to change the control's appearance depending on whether it is active
+
+From Vipul:
+-----------
+4)  Fixed a bug in TEikBorder for the case when a button had adjacent
+neighbors both to its right and below it
+
+5)  Changed the scrolling effects in command buttons again
+
+6)  Introduced support for "button wrapping" in CEikButtonGroup
+
+From DavidW:
+------------
+7)  Fixed a bug that had crept back into Nokie in the previous build,
+whereby clicking on dialog items could panic (the point is that
+auto-focusing of dialog items is handled at the *line* level and not
+by individual controls, so *all* controls in a dialog end up with the
+no-auto-focusing flag set for them)
+
+8)  Made a quick attempt to fix some of the broken merge (in the last
+build) of the MFNE code and test code, but gave this up (with a few
+of my additional merges in place) as a lengthy job best delegated!
+(so, TMfne is left in its instantly panicking state)
+
+9)  Changed some of the case statements in the control factory code
+to set some "has ears" and/or "do not focus" flags as required.
+
+
+Version 0.01.027
+================
+(Made by MartinB, 7 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/097 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+
+From Neil
+=========
+
+EIKDLGUT.CPP & EIKDIALG.H
+-------------------------
+Added "utility functions" eg SetCharMap(TInt aControlId, TInt aChar)
+to avoid every application having to look up the control id, cast and
+call the appropriate function themselves.  Get/Set functions provided
+for all controls currently in the control factory.
+
+EIKCHMAP.*
+----------
+Added a SetChar() function for use in eg a dialogs
+PreLayoutDynInitL() function to seed the character map with a value
+other than 32 (space)
+
+TSCRLB0.*
+---------
+Added menus, dialogs and hotkeys to change the proportion of the
+bitmap and scrollbar button appearance/dimming.
+
+
+From Vipul
+==========
+
+1. Renamed TEikPlinth to TEikBorder as preferred by Bill. Also made
+significant changes to the API as discussed with Bill and MartinB.
+This has made TEikBorder much easier to use than the previous
+TEikPlinth.
+
+2. Updated ALL Eikon source code that had any reference to
+TEikPlinth.
+
+3. Added the virtual function SetAdjacent() to CEikButtonBase which,
+by default does nothing. It is meant to be over-ridded by sub-classes
+that have a border. CEikCommandButton, for example uses it to set
+whether a button is adjacent to other buttons.
+
+4. From 3. above, removed SetPacking() and SetBorderDepth() functions
+from CEikCommandButton and replaced them with SetAdjacent(). Note
+that all command buttons now have a plinth with a border depth of 1
+pixel and this cannot be changed.
+
+5. Re-introduced the scrolling effect in buttons. It seems to work
+quite nicely now.
+
+6. Introduced a new struct called SEikButton to EIKBTGRP.H. This
+holds a CEikButtonBase* and a button id. So the button group now
+holds an array of SEikButton's rather than CEikCommandButton*'s.
+
+7. Added iHSpacing and iVSpacing to CEikButtonGroup to hold the
+horizontal and vertical spacing between buttons respectively. The
+function SetButtonSpacing() can be called to set the values for
+iHSpacing and iVSpacing
+
+8. Removed the enum TButtonLayout from CEikButtonGroup as it was no
+longer needed. Also removed any functions that dealt with
+TButtonLayout.
+
+9. Updated the test codes TBUT3,TBUT4, and TBTGRP. (Note that TBUT1
+and TBUT2 can be evaporated since they are no longer needed!)
+
+Also note that due to the changes in TEikBorder, the button group
+drawing has broken down and does not work properly. I'm looking into
+this. Also CEikButtonGroup is not complete yet and there are some
+function whose names will change. When you run TBTGRP, you will
+initially have only a blank screen since the initial values of iRows
+and iColumns have been set to 1. By pressing 'v', 'h' or 'm' the
+groups will be drawn.
+
+
+From Vamsi
+==========
+
+1) removed iPlinth in EIkopbut.* since it was no longer required.
+
+2) Provided two new functions in EikHopbt.*
+-  Label() in CEikLabelledOptionButton class which returns 
+ CEikLabel*
+  MatchMnemonicKey() in CEikHorOptionButton class.
+
+3) Few changes to the OfferKeyEventL() function of
+CEikHorOptionButton class.  If the user presses tab key the focus is
+set to the next button (same as rightarrow)
+
+4) Provided EIKHOPBT.RH file.  HorOptionBt can be created from
+resource files.  Changes to the ConstructFromResourceL() of
+CEikHorOptionButton class.
+
+5) converted find dialog code (EikFindd.*) from eikon to nokie.
+
+6) added find,repalce dialog to Nokie.rss .
+
+7) The SetContainerWindowL() of ComboBox,Edwin,edwin::constructL()
+take "const" CCoeControl* instead of CCoecontrol*
+
+8) Provided EIKCMBOX.RH for the above dialog.
+
+9) made changes to EIkedwin and eikedcmp.* files to support the above
+dialog
+
+10) supplied new test code called tdialg1 for option buttons.  I
+guess you don't have to add this because the find dialog supports the
+optionbuttons.
+
+The find/replace dialogs do not work properly!!
+
+11) Changes to TRTxted.* files to support the find/replace dlgs. 
+
+
+From DavidB
+===========
+
+1) Lots of MFNE changes.
+
+From Simon
+
+1) added iMinSize member to CEikLabel so that labels in dialogs could
+specify a minimum size greater than their current minimum.
+
+2) added preview label to font dialog.
+
+3) fixed some edwin/combobox bugs that prevented combos being used on
+dialogs.  These bugs were spotted by Vamsi.
+
+4) added progress bar and floating point editors to eikctrls.hrh and
+eikfctry.cpp
+
+5) added OfferKeyEvent to CEikCheckBox.  Tab and left and right arrow
+can be used to change the state.
+
+6) converted trtxted to use the file open and save dialogs.
+
+7) added dialogs testing progress editors, check boxes, fpnes and
+option button lists to tdialg0.  All dialogs can now be launched from
+a menu as well as hotkeys.  Some of these dialogs don't work properly
+yet because of problems with the controls they contain.
+
+8) added eiklabel.rh so labels could be used in dialogs.
+
+9) fixed a bug in eikprogi that sometimes stopped a block with splits
+being drawn.
+
+
+From Siamak
+===========
+
+1. Following Colly's suggestion, modified the static function
+CreateByTypeL() in TEikControlFactory such that it now returns a
+SEikControlInfo structure (this contains a pointer to the control
+created by the afctory as well as boolean flags that specify (1)
+whether ot the control has ears and (2) whether or not it is
+non-focusing) rather than a pointer to a CCoeControl. A similar
+change was made to the CreateCustomControlL() fucntion of CEikDialog.
+This means that for standard Eikon controls, these two flags no
+longer need to be specified in resource files; they are automatically
+set if it is appropriate to do so.
+
+2 Modified TDIALG0's resource file such that the aforementioned flags
+are no longer specified.
+
+
+From MartinB
+============
+
+Mainly tidying up operations
+
+1) Made some things const
+
+2) Moved inlines out of class definitions.
+
+3) Fixed a function that did not have the same signature of the
+function it was overriding (can't remember what it was).
+
+4) Replaced spaces with tabs in header files.
+
+5) Moved some assignments in constructors into the initialisation
+list.
+
+6) Made CEikDialog::ControlId protected.
+
+7) Made CEikDialog::ValidateFocusControlL virtual.
+
+8) Fixed TDialg0 and TGrid test code (problem was that they did not
+have the dummy static data).
+
+
+
+Version 0.01.026
+================
+(Made by DavidW, 3 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/095 FONTS/029
+        ETEXT/044 TBOX/066 GRID/066
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+This is the A1-day release
+
+Size of NOKIE.DLL (Gcc build): 163,840 bytes
+
+Includes GRID for the first time in Nokie
+
+From DavidB:
+------------
+1)  Replaced EIKNUMED.* with a new implementation of numeric editors
+in EIKMFNE.* (MFNE stands for Multi-Field Numeric Editors) - note
+that the design is significantly different from before
+
+2)  So far, various integer editor variants have been implemented,
+along with a date editor and a time editor
+
+3)  See new test code TMfne.* for examples (replaces TNumed.*)
+
+From DanH:
+----------
+4)  Converted test code TGrid to the new design, showing an example
+of access to the GRID DLL
+
+From Neil:
+----------
+5)  Reinstated support in the console classes for a using backed up
+window via new public flag CEikConsoleScreen::EUseBackedUpWindow
+passed at construction time
+
+6)  Added a new item "Window type" in the "Special" menu pane in
+TCons0; selecting this has the effect of destroying the console and
+restarting it with a different window type (ie normal or backed up)
+
+7)  Added a FocusChanged() function to the console window to
+show/hide the cursor as appropriate
+
+8)  The console window now uses CEikonEnv to show/hide its cursor, to
+help prevent/track down "cursor theft" bugs
+
+9)  Fixed bug in scrollbar buttons where events were still being
+reported when the cursor had been dragged off them
+
+10) Added a SetFont() function in CEikCharMap, and fixed a cursor bug
+when resizing
+
+11) Pressing Ctrl+F in test code TChMap0 now changes the font, thus
+providing simple zoom functionality
+
+12) Converted the character editor class, CEikCharEditor, to the new
+design, in the module EIKCHRED.*
+
+From SimonC:
+------------
+13) Rearranged edwin code so that floating point editors can be
+constructed again
+
+14) Rearranged some of the floating point editor code, providing
+ConstructL and ConstructFromResourceL functions for all variants
+
+15) Moved the resource structs for floating point editors into their
+own new file, EIKFPNE.RH
+
+16) Changed test code TFpne in line with the above changes: added a
+resource file containing the definition of one of each type of editor
+in order to test the construction of these editors from resources
+
+17) Tidied up combo box code CEikComboBox
+
+18) Fixed the HandlePointerEventL function in CEikEdwin so that it is
+(finally!) possible to resize a selected picture by dragging on any
+of the blobs (or sides) of its rubber band
+
+19) Fixed some other bugs in CEikEdwin::HandlePointerEventL, eg ctrl
+clicking now correctly selects whole words
+
+20) Converted the character map dialog and the font dialog to the new
+dialog scheme, and added menu commands in test code TRTxtEd to access
+them
+
+From Vipul:
+-----------
+21) Added support in CEikButtonGroup for multi-column/row button
+groups; for this to happen, the button layout flag has to be set to
+EBlock
+
+22) The block mode of button group layout supports partially filled
+rows or columns, eg with 8 buttons in a 4x2 grid
+
+23) New features in test code TBtGrp1: press 'v' to get vertical
+layout, 'h' for horizontal, and 'm' for block ("mixed"); with an
+appropriate layout chosen, press 'l' or 'r' to position the group at
+the left or right of the screen, and 't' or 'b' for top or bottom
+
+24) Improved the code in CEikImage for handling a bitmap larger than
+the control extent
+
+From Vamsi:
+-----------
+25) On Bill's recommendations, made some changes to the appearance of
+the progress indicator control, eg using a sunken plinth instead of a
+raised one, having a plinth border of 1 instead of 2, and changing
+the appearance of the blocks
+
+26) Changed the color of the top-left border of sunken plinths from
+dark gray to light gray (this improves matters for progress
+indicators, but it remains to be agreed whether it is a forwards or a
+backwards step from the point of view of other users of plinths)
+
+27) Fixed a bug in TEikButtonCoordinator in the case when it was
+asked to re-select the same button as was already selected
+
+From Siamak:
+------------
+28) Provided a starting point for standard FileOpen and FileSaveAs
+dialogs, in the module EIKCFDLG.*
+
+29) For an idea on how to use these dialogs, see the new examples
+added to TDialg0, available on Ctrl-O for OpenFile, and Ctrl-S for
+SaveFile
+
+From DavidW:
+------------
+30) On MartinT's recommendation, changed all instances of "Labelled"
+in the API to the American form "Labeled"
+
+31) Changed the MnemonicKeycode() function of CEikLabel to always
+return the TCharF (ie folded, case-insensitive) version of the
+mnemonic
+
+32) Fixed mnemonic matching in dialogs, to work case-insensitively
+
+33) Matching the mnemonic of the current line now has the effect of
+sending a Tab character to the control in that line (typically this
+should animate any button-like object on that line) - this is
+intended to meet a specification requirement spelt out long ago but
+never implemented until now
+
+34) Fixed a bug in CEikDialog::HandleControlEventL() which could try
+to set the focus to the wrong item in a dialog - spotted and
+diagnosed by Vamsi and Siamak
+
+35) Fixed another bug in CEikDialog causing a crash when some items
+were clicked on (noticed by Simon) - the fix here is to ensure that
+all raw controls in the dialog are set to NonFocusing(), leaving it
+to the lines as wholes to take the focus when clicked on
+
+36) Put in place a temporary workaround to allow controls in dialogs
+to receive Up and Down keys when they are the only control in the
+dialog (such as the Character Map dialog)
+
+37) Added a "character" line to the "Choice list" dialog in TDialg0,
+containing an example of a character editor
+
+38) Removed a #include of <eikctrls.hrh> from various modules that
+didn't need it
+
+39) Added FocusChanged() messages to some of the "root controls" of
+test programs, delegating to the focus control within that container,
+as required to prevent cursors keeping on flashing in the root
+controls when emphasis should have transfered to eg a dialog or menu
+
+40) On a suggestion from Simon, moved the call to
+SetInitialCurrentLineL() during CEikDialog::ExecuteLD() until after
+the call to ActivateL(), since otherwise the control that ends up
+receiving the focus-changed message may not be ready for it
+
+41) On a suggestion from SteveT, removed the call to DrawNow() at the
+end of the initialization of a menu pane, to speed up the response
+when the user eg presses Right rapidly three times in a row to move
+from the first to the fourth menu in a menu bar.
+
+
+Version 0.01.025
+================
+(Made by DavidW, 2 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/094 FONTS/029
+        ETEXT/044 TBOX/065
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+An interim release, with only WINS Ascii built
+
+Basically I have ignored all the other work (and there's lots of it!)
+submitted to me in the past 24 hours, to focus on producing a working
+CEikDialog class
+
+This now exists, in EIKDIALG.*, and there is working example code,
+TDialg0:
+
+    *) on starting TDialg0, you'll just see a blank screen
+
+    *) Press Ctrl-C to get a dialog with choice lists in it
+
+    *) Press Ctrl-P to get a dialog with passwords in it
+
+    *) Press Ctrl-E to exit
+
+Some limitations of the existing implementation:
+
+    *) Dialog layout isn't yet aligned neatly into two columns
+
+    *) For each control in your dialog that should have ears, you
+have to set a flag for this
+
+    *) Dialogs don't have buttons, but respond to Esc and Enter keys
+
+    *) Setting controls dim or invisible probably won't work
+
+    *) App dialogs have to duplicate lots of Set/Sense utility
+functions, that will shortly get gathered up into CEikDialog
+
+Some other changes:
+-------------------
+1)  I'm killing off EIKCTRLS.RH, by stages moving its contents to
+specific *.RH files like EIKCHLST.RH and EIKNUMED.RH
+
+2)  For convenience, I'm putting a line like #include <eikchlst.hrh>
+at the foot of each corresponding *.rh file, to minimize the number
+of separate #include's needed by app writers in their *.RSS files
+
+3)  Various improvements to the APIs of specific controls, triggered
+by trying to use them in dialogs
+
+4)  Started the static class EikControlFactory, with its single
+function CreateByTypeL(), in EIKFCTRY.CPP.
+
+
+Version 0.01.024
+================
+(Made by DavidW, 1 August 1996)
+
+Uses:   E32/064 F32/028 STORE/019 BAFL/035
+        GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
+        WSERV/041 CONE/094 FONTS/029
+        ETEXT/044 TBOX/065
+        E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
+
+First release using E32/064 et al
+
+Size of NOKIE.DLL (Gcc build): 145,572 bytes
+
+*** Re-put at 12:45pm Aug 1st, now with a Gcc build
+
+No change to source code, except that NOKIE.OBY now includes EON9.GDR
+instead of EON8.GDR.  What makes the Gcc build possible is a
+re-release of Bafl.  Type "MNT GETBAFL" to fetch that by itself, if
+you've already got all the other bits ***
+
+From Neil:
+----------
+1)  Converted the console classes in EIKCONSO.* and EIKCONSW.CPP to
+the new design
+
+2)  New test code TCONS0.* for the console classes
+
+3)  Converted the character map control CEikCharMap to the new
+design; also added the ability for this class to report state changes
+
+4)  New test code TChMap0.* for the character map control
+
+5)  Added a SetFont(CFbsFont* aFont) function to CEikMover to allow
+different fonts; the default on construction is the TitleFont, and
+this is also used whenever a NULL pointer is passed in SetFont()
+
+6)  Fixed a bug in Mover whereby calling SetActive(EFalse) while the
+mover was in a pressed state left the text invisible (the pressed
+state is now cancelled in this situation)
+
+7)  Developed test code TEar1 so that pressing Ctrl+F now toggles
+the mover's font between the title and annotation fonts
+
+From Siamak:
+------------
+8)  Converted CEikFileNameSelector to NOKIE and modified the TCHLST
+test app so that it creates a filename selector control and adds it
+to its container control
+
+9)  Modified the code in the choicelist that creates the tab button
+such that it now specifies the tab button mask as well
+
+10) Fixed a memory leak problem caused by the destructor of CEikImage
+not destroying the mask bitmap
+
+From SimonC:
+------------
+11) Converted the edit combo box CEikComboBox to the new design, in
+the module EIKCMBOX.*; for now, this is derived from CCoeControl
+rather than from CEikChoiceList (since although there are *some*
+elements in common with choice list, equally there are many
+dissimilar elements)
+
+12) CEikComboBox works similarly to the old one in Eikon, except that
+selecting an item from the history list will now move it to the top
+of this list; if the control is given a size larger than its minimum
+it will stretch horizontally and center itself vertically (if it is
+given a size that is too small, it will panic, for now)
+
+13) New test code TCombo1.* for the edit combo box
+
+14) The combo box showed up a few problems with CEikEdwin which have
+now been fixed
+
+(In consequence, floating point number editors have stopped working)
+
+15) James pointed out why clicking on many of the blobs around a
+picture was being ignored; now, only the bottom corners seem to get
+ignored when clicked on
+
+16) Menu tiles are now spaced slightly further apart than before
+
+From Vipul:
+-----------
+17) Renamed CEikButtonArray to CEikButtonGroup, and renamed the
+source module EIKBUTAR.* to EIKBTGRP.*
+
+18) New test code TBtGrp1.* showing something that looks rather
+similar to a toolbar
+
+19) Changed the implementation of CEikCommandButton to hold a
+TEikPlinth in its property, rather than constructing one on the fly
+whenever required; selective access to the functions of the plinth
+are available through the functions SetPlinthDepth() and
+SetPlinthPacking() in CEikCommandButton
+
+20) Changed code in CEikButtonBase so that a new callback,
+StateChanged(), gets called whenever the state of the button is
+altered in a way that affects how it will be drawn; StateChanged()
+can be compared to the SizeChangedL() and FocusChanged() functions;
+as in these other cases, the default implementation is to do nothing
+
+21) CEikCommandButton overrides the StateChanged() function to alter
+the plinth in its property, as required
+
+From Vamsi:
+-----------
+22) New implementation of the horizontal option button list, in which
+it now consists of a series of CEikLabelledOptionButton instances. 
+This latter class is derived from CEikButtonBase, and has two
+components: a CEikLabel, and a CEikOptionButton.  These two
+components are identical from the point of view of pen clicks
+
+23) Modified test code THopBut in line with these changes
+
+From Brendan:
+-------------
+24) Fixed some minor problems with test code TColLB (this now runs on
+the rack)
+
+From DavidW:
+------------
+25) Made changes to Nokie code and source code as required by E32/064
+and all associated downstream software components - mainly, changed
+various array functions from the pointer form (no longer supported)
+to the reference form
+
+26) Fixed the captioned control class so that it knows the difference
+between being de-focussed yet current (as when a listbox has been
+popped out from that line) and being de-focussed *and* non-current;
+in the former case, the label is drawn in partial emphasis (dark-gray
+background), whereas in the latter, the label is drawn with nill
+emphasis
+
+27) Implemented the above by introducing the function SetCurrent in
+CEikCaptionedControl, taking a TBool parameter
+
+28) Modified LSHELL so that it switches the machine off whenever
+Ctrl-Alt-Backspace is pressed (only effective under Gcc)
+
+29) Created static utility function CreateStandardTabButtonL() to
+CEikonEnv, which is now called by code in CEikChoiceListBase and in
+CEikComboBox
+
+30) Provided a function CEikButtonBase::CopyDrawStateTo(), which
+takes another CEikButtonBase* pointer as a parameter, for use in the
+simple implementation of a class such as CEikLabelledOptionButton
+which is a button containing another button inside itself
+
+31) Added a GETGDITOOLS verb to MNT, which is automatically invoked
+as part of any MNT TOOLS
+
+32) Wrote a first cut of the header file EIKDIALG.H, for a dialog
+that (currently) doesn't have any buttons in it (it just has an array
+of CEikCaptionedControl instances, topped by a CEikMover). 
+Implementation to follow shortly.
+
+
+Version 0.01.023
+================
+(Made by DavidW, 31 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/093 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 124,144 bytes
+
+From Siamak:
+------------
+1)  Changed to using a bitmap rather than text for the tab-out button
+in choice lists (the new bitmaps have been added to the built file
+EIKON.MBM, and their sources have been added to ..\srcdata)
+
+2)  Various internal changes to choice lists and listboxes in
+preparation for their use within dialogs
+
+3)  New resource constants header file EIKLBX.HRH for listboxes
+
+From Vipul:
+-----------
+4)  The three ConstructL()'s in CEikCommandButton have been replaced
+by the following:
+
+  SetTextL(const TDesC& aText);
+  SetPictureL(CFbsBitmap* aMain,CFbsBitmap* aMask=NULL);
+  SetPictureFromFileL(const TDesC& aFilename,TInt aMain,TInt aMask=-1);
+
+which makes it easier for applications to create command buttons
+
+5)  All command buttons now default to "stay clear" behaviour; if any
+other type of behaviour is required, call the SetBehaviour() function
+(this used to be protected in CEikButtonBase but is now public)
+
+6)  Changed TBut2, TBut3, TBut4 to accommodate the above changes
+
+7)  New member iPlDepth in CEikCommandButton to hold the plinth
+depth; this is set to 2 pixels by default, but can be altered using
+the new function SetPlinthDepth()
+
+8)  See examples in TBut4 for buttons with varying plinth depths
+
+9)  Enhanced TBut4.MBM by including another set of bitmaps
+
+10) Started work on a new module EIKBUTAR.* containing a button array
+class (early days here)
+
+From Brendan:
+-------------
+11) New test code TColLB which is basically the same as TLBx, except
+that it allows the user to create a trial new version of a listbox,
+the "column aligned listbox", which is similar to CEikTextListBox,
+except that the text entries can have embedded tab characters,
+meaning to jump to the next column
+
+12) In TColLB, there's an example of a listbox with three columns,
+with alignments Right, Center, and Left respectively
+
+Stop Press: TColLB fails to build under Gcc, and has been excluded
+from NOKIE.OBY
+
+From DavidW:
+------------
+13) New class CEikCaptionedControl, in EIKCAPC.*, supporting optional
+ears, plus one "value" control and an optional "caption" (label)
+control
+
+14) These ears are larger than in the old design, and instead of
+scrolling when pressed, change color, as per more recent ideas
+(similar to what happens when a scrollbar button is pressed)
+
+15) Controls get the benefit of ears, without needing to supply any
+code to this end themselves, but all that's required is for the
+function SetUsesEars() to be called during the construction of the
+associated CEikCaptionedControl
+
+16) See the new test code TCapC1 for an example of using captioned
+controls; this code should migrate shortly to become the basis of the
+CEikDialog class (clearly there's still some way to go)
+
+17) Changed all Nokie code and test code as required by the
+introduction of MCoeControlContext in CONE 093; by and large this
+simplified things (as well as fixing some bugs that couldn't
+otherwise be fixed)
+
+(the main pain was changing all ActivateSystemGc()s to ActivateGc())
+
+18) New utility function SetContextTextured() in CEikonEnv, taking a
+MCoeControlBrushContext* parameter
+
+19) Took advantage of the improved API to command buttons to reduce
+the plinth depth of the tab-out button in choice lists to 1, and also
+reduced the "all-round" margin of this button to 1, resulting in a
+button of equal height to the rest of the choice list
+
+20) Added an optimization to various SetPictureFromFileL routines
+whereby passing TPtrC() for the filename means that the Eikon bitmap
+file \e32data\eikon.mbm gets used automatically
+
+21) Removed the line
+
+    iCoeEnv->WsSession().SetDoubleClick(1000000,4);
+
+from goodness knows how many test apps, since this is now taken care
+of by startup code in LSHELL
+
+22) Changed a few test apps to use the constant EEikCmdExit from
+EIKCMDS.HRH rather than home-grown versions
+
+23) Changed various bits of code that was calling SystemGc()
+repeatedly to call it only once and cache the value.
+
+
+Version 0.01.022
+================
+(Made by DavidW, 30 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/092 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 120,016 bytes
+
+From Vamsi:
+-----------
+1)  First released version of the class CEikHorOptionButtonList, in
+the new module EIKHOPBT.*
+
+2)  New test code THOPBUT for the above, featuring two horizontal
+button lists; use Up or Down to change the (currently invisible)
+focus between the two lines, and eg Left or Right to change the
+selected button in the focused line
+
+From Siamak:
+------------
+3)  Added a tab-out button to CEikChoiceListBase, which can be
+clicked on to get a pop-out list, and which animates when the Tab key
+is pressed; see TChLst for an example of choice lists
+
+(The tab-out button currently displays the text "tab", but this will
+shortly be changed to a suitable bitmap)
+
+4)  Added a new class called MEikListBoxObserver, which currently is
+a root class (not inheriting from anything); this has a function
+HandleListBoxEventL(), with two listbox-specific events: "item
+clicked" and "enter key pressed"
+
+From Neil:
+----------
+5)  The appearance of the Mover control now varies according to its
+state, ie whether it is being pressed, and whether it is inactive
+(potentially corresponding to the situation when a listbox has been
+tabbed out from a dialog)
+
+6)  In test code TEar1, press Ctrl+a to toggle the mover's active
+state
+
+From Vipul:
+-----------
+7)  Changed the Draw() function of CEikImage so as not to require a
+clipping region
+
+8)  Fixed the MinimumSizeL() function in CEikCommandButton to take
+into account the size of the plinth
+
+9)  New test code TBut4 which features some command buttons intended
+as more realistic (partly by means of TBUT4.MBM containing more
+bitmaps than before)
+
+From DavidW:
+------------
+10) Fixed a bug I introduced earlier whereby the Legend font was
+being created exactly the same as the Annotation font, ie without
+being bolded.
+
+
+Version 0.01.021
+================
+(Made by DavidW, 27 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/091 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 116,864 bytes
+
+From Neil:
+----------
+1)  Improvements to the appearance of the mover class, including
+using grips
+
+2)  The movable window in TEar1 can now have its text changed, by
+using Ctrl+T
+
+From SimonC:
+------------
+3)  Started sample rich text editor application, TRTxtEd: this
+creates a CEikEdwinCmp the size of the screen and allows bold, italic
+or underline to be set, and the text to be cut, copied, and pasted
+
+(there's a known EText problem with cutting or copying any text from
+the first line)
+
+4)  Also the user can press Ctrl+S to save the text (to the hard-wired
+filename \nokie\tsrc\trtxted.rtx) and Ctrl+O to load it in again
+
+5)  Changed the way an edwin calculates its size, to avoid having to
+make these calculations in MinimumSizeL (which can now avoid casting
+away const-ness)
+
+6)  Changed CEikEdwin::iNumberOfLines back to being zero by default
+
+From Vipul:
+-----------
+7)  Changed CEikImage to allow it to use two bitmaps at once, with
+the second of these providing the mask for blitting the first; this
+is necessary to allow the same bitmap to be drawn using two different
+backgrounds
+
+(this is not yet fully flicker-free, as it is waiting on additional
+BITGDI functionality being made available)
+
+8)  Various improvements to test code, eg updated TBut3 to use a new
+set of bitmaps that is closer to those in spec pictures
+
+From KevinDe:
+-------------
+9)  Converted the floating point editor classes in EIKFPNE.* to the
+new design
+
+10) New test code TFpne.* for the above: it creates one editor of
+each of the three types, with the range set to 0-100; the fixed point
+editor has 4 decimal places, and the twips editor is hard-wired to
+imperial.
+
+
+Version 0.01.020
+================
+(Made by DavidW, 26 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/091 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 114,268 bytes
+
+From Vipul:
+-----------
+1)  CEikImage can now have its bitmap specified either by CFbsBitmap*
+or by a filename plus index number - in the latter case, use the new
+function CreatePictureFromFileL()
+
+2)  CEikImage now owns its bitmap by default, ie it will destroy it
+on exit, but this can be changed by calling the function
+SetPictureOwnedExternally()
+
+3)  Corrected some bugs in EIKCMBUT.CPP that were causing vertically
+laid out buttons to be drawn incorrectly; also changed some calls to
+SetExtentL() to SetRectL()
+
+4)  Some minor changes to TPDraw1 and TBut2 to accommodate the above
+
+5)  New test application TBut3 that tests buttons with pictures and
+text in them; in this case, press L C or R to change the horizontal
+alignment of all the buttons, or T M or B to change their vertical
+alignment
+
+From Siamak:
+------------
+6)  The public function DrawItem() of CEikListBox now always scrolls
+if necessary to make sure that the specified item is made visible
+
+7)  Fixed some more problems with incremental matching in list boxes
+
+8)  Other internal changes to listbox code, eg fixing some problems
+with scrollbar positioning
+
+From Neil:
+----------
+9)  Changed CEikScrollBar in preparation for using the new style (ie
+implemented by Wserv) of pointer repeat requests; thus the TRect
+iSlowDragRect property disappears (this won't be fully operational
+until the next release of Wserv)
+
+10) Produced a first version of CEikMover in the new module
+EIKMOVER.* (together with the definition of its observer class in
+EIKMVOBS.*); this supports moving, but has no grips in its appearance
+yet
+
+11) Added a movable window in TEar1 to test the mover control
+
+From SimonC:
+------------
+12) Added a very simple picture class CBitmapPicture to TEdwin, based
+(for now) solely on the bclkmask.bmp file; there's a picture in the
+multi-line editor to start with, and others can be inserted by
+pressing Ctrl-I
+
+13) CEikEdwin now has limited (and fitful) support for resizing
+pictures through interacting with their rubber band; clicking on the
+center blob of the picture frame on any side other than the right
+creates a rubber band around the picture, which can be dragged to
+resize it.  A new version of FORM will be required to make this work
+better (and this will also resolve some known panics).  Some thought
+will have to be given, too, to the fact that the blobs are next to
+impossible to click on the rack.  Finally some drawing weirdnesses
+have been traced to a known bug in BITGDI
+
+14) Some internal improvements to CEikRubberBand, removing its
+dependency on the file \nokie\inc\frame.h which can now be deleted
+(since it has been superseded by the file \form\inc\frmframe.h)
+
+15) Relocated the destruction of CEikonEnv::iParaFormatLayer and
+iCharFormatLayer, during system shutdown code, so that they still
+exist when EText wants to refer to them when deleting pictures inside
+an Edwin
+
+16) Various internal improvements to CEikEdwin
+
+From DavidW:
+------------
+17) Rewrote TEikDrawUtils::DrawTextWithMnemonic() to streamline it,
+make it more efficient, and to fix a bug
+
+18) Moved the source for LSHELL into its own directory,
+\nokie\lshell, and made the MNT BLDxxx and MNT ARMREL verbs build it
+as well as NOKIE.DLL; a built LSHELL is now included in the files
+fetched by "MNT GETREL" (so it's no longer necessary to build it
+before running any other Nokie test code).
+
+
+Version 0.01.019
+================
+(Made by DavidW, 25 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/091 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Uses CONE 091 for the first time
+
+Size of NOKIE.DLL (Gcc build): 112,680 bytes
+
+From Vipul:
+-----------
+1)  In a significant change of design, the CEikTextDrawer class has
+migrated into the CEikLabel class, which is now a subclass of
+CCoeControl, and the CEikPictureDrawer class has migrated into the
+CEikImage class, which is likewise a subclass of CCoeControl.  The
+former module EIKIDRAW.*, EIKTDRAW.* and EIKPDRAW.* have been
+withdrawn, being replaced by EIKLABEL.* and EIKIMAGE.*
+
+(Most of what was common between the "item drawer" classes before,
+that does not come under the heading of "control", is now supplied by
+the TCoeAlignment class introduced in CONE 091; each of CEikLabel and
+CEikImage contain a TCoeAlignment component)
+
+2)  Changed the design of CEikCommandButton over to use the new label
+and image classes; CEikCommandButton is the first class to override
+the ResetGcForComponents() function from CCoeControl
+
+3)  Developed and extended the test programs TTDRAW1.CPP, TPDRAW1.CPP
+and TBUT2.CPP.
+
+
+Version 0.01.018
+================
+(Made by DavidW, 24 July 1996)
+
+Uses:   E32/063 F32/027 STORE/018 BAFL/034
+        GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
+        WSERV/040 CONE/090 FONTS/028
+        ETEXT/043 TBOX/064
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+First release compatible with STORE/018 GDI/027 WSERV/040 etc
+
+Size of NOKIE.DLL (Gcc build): 112,180 bytes
+
+Dead files that you should remove: EIKSLBM.*, EIKSLBX.* and EIKLBD.*
+
+Note that you have to build LSHELL before you can run any Nokie app
+(a built LSHELL will be released as part of Nokie from the next
+release onwards)
+
+From KevinDe:
+-------------
+1)  LSHELL now scans for its list of files dynamically, listing files
+*.APD in Debug builds and *.APP in Release builds; as a result, the
+file \e32data\dll_list.txt is no longer used and can be deleted
+
+Note that the build settings for all live test code have been altered
+so that instead of building eg Temp0D.DLL and Temp0.DLL, they now
+build Temp0.APD and Temp0.APP
+
+Also the obey file Nokie.OBY has been altered to rename the *.EXE
+files built by Gcc to be *.APP files
+
+2)  Clicking on the System button will now bring the LSHELL
+application to foreground (or, if it is already in foreground, it
+will send it into background again); this involved converting the
+class CEikOffScreenWindow in the module EIKOFWIN.* to the new design
+
+3)  On system startup, LSHELL now initializes the double click
+settings and the keyboard repeat settings to the same values as used
+to be set by the Eikon Server
+
+From Neil:
+----------
+4)  Changed the strategy for drawing grips.  Filling in all the rects
+between every line, individually, was taking far too much time;
+switched to a simpler system whereby the owner of the grip draws the
+background first, before calling the grip, to draw the lines
+
+Note: strictly speaking this isn't flicker free, but in most cases no
+flicker actually shows (particularly on the rack), and further Wserv
+changes are pending which will further decrease the occurrence of any
+flicker; overall, the result is preferable to all the other schemes
+that have been considered so far, each of which involves a high
+memory cost or speed degradation
+
+5)  Modified the test code in TScrlB0 so that larger grips can be
+viewed
+
+From Siamak:
+------------
+6)  Followed another set of suggestions from Bill and MartinB for
+reducing the size of the listbox API (albeit at the cost of
+emasculating it, eg zoom support has been removed from listboxes)
+
+7)  CEikStandardListBox has been renamed to CEikTextListBox; its
+module has changed its name from EIKSLBX.* to EIKTXLBX.*
+
+8)  CStandardListBoxModel has been renamed to CTextListBoxModel; its
+module has changed its name from EIKSLBM.* to EIKTXLBM
+
+9)  Scrollbar support is back in listboxes, eg the LSHELL program
+now has it
+
+10) Fixed a problem with incremental matching in listboxes, and set
+the listbox in LSHELL to be incremental matching
+
+11) Advanced users of listboxes should note that the model class
+MBitmapAndTextListBoxModel has been replaced by MTextListBoxModel,
+which inherits from MListBoxModel
+
+12) Also, instead of CBitmapAndTextListItemDrawer, there is now just
+CTextListItemViewer
+
+13) The interface class TListBoxDrawInfo has been dropped, and so the
+module EIKLBD.* has been deleted
+
+From DavidW:
+------------
+14) Converted Nokie code and test code as required by the new GDI etc
+
+15) On a suggestion from MartinB, changed the build settings of all
+live Nokie test code so that the preprocessor definitions of _WINDOWS
+and WIN32 are no longer set
+
+16) Removed some "unreachable code" from some test applications
+(thanks to the Release mode compiler in MSVC for spotting this).
+
+
+Version 0.01.017
+================
+(Made by DavidW, 23 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/089 FONTS/028
+        ETEXT/042 TBOX/062
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 110,431 bytes
+
+From KevinDe:
+-------------
+1)  Nokie nows runs with its own shell program, LSHELL, instead of
+the Window Server shell; this is an Eikon list box (if you still get
+the Window Server shell, check that the STARTUP line in WSINI.INI in
+\e32data specifies LSHELL not SHELL)
+
+2)  LShell acts on either an Enter keypress or a pointer-up to launch
+the program highlighted; drag and scroll off the bottom to expose
+other names not originally visible
+
+3)  LShell captures the Ctrl+Alt+, and Ctrl+Alt+. key combinations to
+adjust the LCD constrast, and captures Ctrl+Alt+Tab to bring itself
+to foreground (or, if already in foreground, to send it into
+background again)
+
+From Neil:
+----------
+4)  New module EIKSCBUT.* containing CEikScrollButton, a button with
+a triangular pointer, used inside scrollbars (and potentially
+elsewhere too)
+
+5)  Changed CEikonEnv::DrawPolygon() to set the brush style from
+null to solid on entry, and back to null again on exit
+
+6)  Changes in EIKSCRLB.* to utilize the scroll buttons (instead of
+just have a blank area in place of the buttons), and changes to test
+code TSCRLB0 to test them
+
+7)  Removed Set(Clear)ScrollBarFrameFlags() functions in EIKSBFRM.*
+in favor of custom functions for each former flag
+
+8)  Changed CEikEdwin code in line with the above changes
+
+From SimonC:
+------------
+9)  Converted EIKEDCMP.* and EIKRUBTL.* to the new (Nokie) design -
+although much of EIKEDCMP remains commented out, pending the
+rearrival of dialogs
+
+10) Improved test code TEDWIN0 so that it is possible to use the up
+and down arrow keys to navigate between the single line editors
+
+11) Various other improvements to edwin code based on suggestions by
+MartinB.
+
+
+Version 0.01.016
+================
+(Made by DavidW, 22 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/089 FONTS/028
+        ETEXT/042 TBOX/062
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 103,008 bytes
+
+From SimonC:
+------------
+1)  Eikon is dependent on EText(042) and TBox(062) again
+
+2)  Converted a large part of EIKEDWIN.* to the new design, including
+clipboard and scrollbar support
+
+3)  New test code TEdwin, which creates five different one-line edit
+windows and one multi-line edit window complete with scrollbar; as
+for many of the other test applications, move the focus by clicking
+in a control
+
+From Vamsi:
+-----------
+4)  Implementation of CEikOptionButton, in the new module EIKOPBUT.*
+
+5)  Implementation of TEikButtonCoordinator, added to EIKBUTB.*
+
+6)  New test code TOpBut1.* for both of the above features
+
+From Neil:
+----------
+7)  Simplification of sprite-handling code in test application TEar1,
+with the result that the second bitmap file, EARMASK.MBM, is no
+longer required, and can be deleted from hard disks
+
+From Vipul:
+-----------
+8)  Combined CEikTextDrawer and CEikPictureDrawer to produce a base
+class CEikItemDrawer from which the above two classes are now
+derived; this has led to the creation of a new module EIKIDRAW.*
+
+9)  Introduced a TMargin8 struct, in EIKDUTIL.H for now, to hold four
+different TUint8 margin values (for left, right, top and bottom)
+rather than just assuming that all four of these values will be the
+same; the restriction to a TUint8 saves 96 bytes per class instance
+compared to the full TMargins struct from GDI.H
+
+10) Changed the system for specifying text or bitmap alignment, to
+use the values such as EHLeftVBottom from COEDEF.H
+
+11) New static function PlaceInRect(), currently in CEikItemDrawer,
+taking an outer rect, an inner size, and a TEikItemPos "alignment"
+value, producing the corresponding "inner rect"
+
+12) Converted test code as required by the above changes
+
+From DavidW:
+------------
+13) Converted all Nokie code and test code to match CONE 089; the
+main change (apart from in test code) was to rename EEventChanged to
+EEventStateChangedL everywhere; took the opportunity to tidy up
+various test applications a bit while converting to this scheme
+
+14) Needed to call SetAllowStrayPointers() for all menu windows
+
+15) Split MEikMenuObserver::WarnMenuDisplayL(TInt aMenuId,
+CCoeControl* aMenuWindow) into two functions, each of which are more
+type-precise: in DynInitMenuPaneL() the CCoeControl* is typed as a
+CEikMenuPane*, and in DynInitMenuBarL() it is typed as a CEikMenuBar*
+
+16) Simplified various pieces of test code in the light of the above
+change
+
+17) Recompiled TEXTURED.PBM and EIKON.MBM since they turn out to be a
+few bytes different from before.
+
+
+Version 0.01.015
+================
+(Made by DavidW, 20 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Size of NOKIE.DLL (Gcc build): 87,840 bytes
+
+From DavidB:
+------------
+1)  First stage of converting the MNFE classes to the Nokie design,
+in a new version of EIKNUMED.*
+
+2)  New test code TNumed that demonstrates some of the features of
+numeric editors
+
+From Vipul:
+-----------
+3)  New command button class, CEikCommandButton, in the new module
+EIKCMBUT, for what's sometimes been called "action buttons" or "push
+buttons"; each command button can contain a CEikTextViewer, and will
+shortly be able to contain a CEikPictureViewer as well
+
+4)  New test code, TBut2, to test command buttons
+
+5)  Feedback is welcome on the look and feel of these buttons; note
+that the idea of scrolling the text (as in TBut1) has been dropped
+just now, and all that changes when a button is pressed is the color
+scheme and the plinth type
+
+6)  Introduced the Legend font in CEikonEnv, which is a bolded
+version of the Annotation font, and which is the default font for the
+legends printed on command buttons
+
+7)  Extended CEikTextDrawer to cope with being asked to draw text in
+a rectangle that isn't wide enough for all of the text (this gets
+tested in TBut2)
+
+8)  Started work on yet another new class, CEikPictureDrawer, in the
+module EIKPDRAW.* (no test code available for this yet); this class
+will probably be partially merged with CEikTextDrawer before long, to
+produce (eg) a CEikItemDrawer superclass
+
+From Siamak:
+------------
+9)  New module EIKLBD.* defining a class (or, more practically a
+struct) TListBoxDrawInfo holding various bits of drawing-related
+information that needs to be shared between the listbox control,
+view, and item drawer; this has the effect of eliminating some data
+being duplicated in two or more classes, and reduces the API of
+CListItemDrawer
+
+10) Listboxes now have some settable color attributes, for their
+background color, text color, etc
+
+From Neil:
+----------
+11) The first main phase in converting the scrollbar system to Nokie
+is complete - there are now modules EIKSBOBS.H (scrollbar observer),
+EIKTHUMB.* (scrollbar thumb), EIKSCRLB.* (scrollbar itself), and
+EIKSBFRM.* (scrollbar frame); no scrollbar buttons yet, though
+
+12) New test code TScrlB0 which is a simplified version of the old
+TScrlB0 from \eikon\tsrc
+
+13) Improvements to the drawing code for CEikGrip: the grip is now
+centered in the rectangle passed to Draw(), instead of leaving all
+blank space at the end
+
+14) Another slight change to CEikonEnv::FillRect(), which now resets
+the Gc brush style to null on exit
+
+From DavidW:
+------------
+15) Changed to draw the standard flashing cursor by XORing with
+white, as opposed to XORing with dark gray as before (which gave very
+insipid results).
+
+
+Version 0.01.014
+================
+(Made by DavidW, 19 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+This release incorporates some (but not all!) of the Eikon
+submissions in my in-tray - more to come later
+
+Stop press - for some reason only the first two of the ten test apps
+seem to run on the rack - this sounds more like a repro-ing problem
+than a software problem (I've often had my suspicions about that
+rack-C) so I won't hold up the release for that
+
+From SimonC:
+------------
+1)  Many changes to menu code as suggested by code and design reviews
+
+2)  Improvements to the appearance of menus, in line with visuals
+supplied from the spec team; eg the menu highlight now joins smoothly
+onto the associated pane
+
+3)  Changed to another version of the "textured" bitmap
+
+4)  Added more features to test code TMenu3 (copying from the old
+TMenuB0 by Bret)
+
+5)  Changed CEikonEnv::FillRect() so that it sets the Gc brush style
+to solid
+
+6)  Removed #includes of <nokie.rsg> from a few *.CPP files where it
+was not needed
+
+From Siamak:
+------------
+7)  Made most of the remaining changes to the listbox code that were
+suggested by the review committee, as well as other changes to try to
+reduce the size of the API (and to follow current coding guidelines)
+
+8)  The various flavors of ConstructL() no longer take position and
+size arguments; instead it is up to the client application to invoke
+eg SetExtentL() on the listbox after calling ConstructL()
+
+9)  Functions in the public API of CEikListBox such as
+SetCurrentItemIndex(), ClearSelection(), and HandleListUpdateL(),
+which used (optionally) to redraw the relevant portions of the
+listbox, no longer do any kind of drawing; instead it is up to the
+client to explicitly ask the listbox either to draw individual items,
+using the new DrawItem() function, or to draw all visible items,
+using DrawNow()
+
+10) To get/set the selection state in a single-selection listbox,
+clients now need only to call CurrentItemIndex() and
+SetCurrentItemIndex() respectively, since in a single selection
+listbox, the current item (provided the listbox is non-empty) is
+always selected; in contrast, to do the same thing in a
+multi-selection listbox, use SelectionIndexes() and
+SetSelectionIndexes() as before
+
+From Vamsi:
+-----------
+11) Converted the CEikProgressIndicator control, in the module
+EIKPROGI.*
+
+12) New test code TPROGI.* containing three differently styled
+progress indicators; press Ctrl-F to make them go forwards or Ctrl-B
+to make them go back.
+
+
+Version 0.01.013
+================
+(Made by DavidW, 18 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+From Vipul:
+-----------
+1)  Started the CEikTextDrawer class, in the new module EIKTDRAW.*
+
+From DavidW:
+------------
+2)  Refined the CEikButtonBase class as suggested at an earlier
+design review meeting, and made corresponding changes in the test
+code TBut1
+
+3)  Added back some of the "Eikon Debugging keys" via the class
+CEikDebugKeys in the module EIKDEBUG.*; keys currently supported are
+
+        Ctrl-Alt-Shift-R        forces redraw of whole screen
+        Ctrl-Alt-Shift-F        turns on Window Server flushing
+        Ctrl-Alt-Shift-G        turns off Window Server flushing
+        Ctrl-Alt-Shift-A        displays alloc info for local heap
+        Ctrl-Alt-Shift-B        info on File Server resources
+        Ctrl-Alt-Shift-C        info on Window Server resources
+
+4)  Test apps should no longer explicitly call SetAppUi as part of
+their ConstructAppL() functions, since this is now done inside the
+CEikAppUi::ConstructL() call - right at the beginning (the change was
+needed so that the CEikDebugKeys object could get added to the
+control stack at the right time)
+
+5)  Changed every #include of <e32virt.h> to <e32keys.h>
+
+6)  Extended the CEikTextDrawer class, providing independent test
+code TTDraw; press L C or R to make the texts Left Center or Right
+aligned in their boxes; or T M or B to make them Top Middle or Bottom
+aligned vertically; or 1 2 or 3 (or the mnemonic for a given box) to
+make that box the emphasized one (and to make the formerly emphasized
+one, if any, move to a partially emphasized state)
+
+7)  Fixed the font initialization in CEikonEnv::InitSystemFonts() to
+ask for "Thin" rather than "Arial" for the AnnotationFont(), which
+avoids an inappropriate font being matched when other *.GDR files may
+be present on the PC
+
+8)  Removed the function CEikonEnv::TexturedBitmap(), that used to
+return a CFbsBitmap* pointer to the textured bitmap, in favor of a new
+utility function CEikonEnv::SetTexturedBrush(CGraphicsContext& aGc)
+
+9)  Based on the latest design of CEikButtonBase, implemented
+CEikCheckBox, which turns out to be a very thin class!  See also the
+new test code TChkBx1, which features five check boxes, all
+differently sized, two of which are dimmed, and one of which supports
+a visually distinct indeterminate state; try clicking on the boxes,
+or press 0 through 4 to animate one of them.
+
+PS I've just noticed that there's a compiler warning in EIKLBX under
+Gcc; sorry for not picking this up earlier; this will be removed for
+the next release
+
+
+Version 0.01.012
+================
+(Made by DavidW, 17 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+From Siamak:
+------------
+1)  Many changes to listbox header files and implementation, taking
+into account recommendations from recent review meetings (other
+changes remain pending); perhaps the most visible change is that
+"item viewer" has been systematically renamed to "item drawer"
+
+2)  Added the file SINGLE.CPP to \nokie\src as a service to other
+Eikon authors (similar to EMPTY.CPP) - see the comment in this file
+for more details of its purpose
+
+From Vipul:
+-----------
+3)  Made EikDrawUtils::DrawText(...) work for alignments other than
+left (note: this function has now been renamed DrawTextWithMnemonic)
+
+4)  New test code TUTIL to test EikDrawUtils functions
+
+From DavidW:
+------------
+5)  Added two more functions to EikDrawUtils: ClearBetweenRects() and
+DrawBetweenRects(); the former just calls the latter after setting
+the passed Gc to have null pen and solid brush (which get reset at
+the end of ClearBetweenRects() to solid pen and null brush); these
+functions are to be preferred to using a clipping region to achieve
+the same effect, since they avoid the IPC overhead of transferring
+the details of the clipping region
+
+6)  Changed TEMP0 to use EikDrawUtils::ClearBetweenRects() rather
+than its home-grown version of that function
+
+7)  Based on a suggestion from Nick Healey, changed the standard
+error text for KErrDoesNotExist from "Does not exist" to "Not found"
+
+
+Version 0.01.011
+================
+(Made by DavidW, 16 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+From Vipul:
+-----------
+1)  Started the EikDrawUtils class, in new module EIKDUTIL.*
+
+2)  The first function in EikDrawUtils is a variant of DrawText()
+that supports flicker-free redrawing of text containing an underlined
+mnemonic character
+
+3)  Converted code in EIKMENUP.CPP and EIKMENUB.CPP to use this new
+routine, rather than their home-grown mnemonic-drawing code
+
+From Neil:
+----------
+4)  New test code TEAR1.*, containing some experimental code for
+animating (scrolling) a triangular "ear" over a textured background. 
+This is done by using (for the first time in NOKIE.DLL or EIKON.DLL)
+the sprite technology from the Window Server.
+
+
+Version 0.01.010
+================
+(Made by DavidW, 15 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/088 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+This build runs on the rack, for the first time in a while!
+
+From Neil:
+----------
+1)  Code for the TEikGrip class now exists in the module EIKGRIP.*
+
+2)  Added some test code for TEikGrip into TLBX.CPP
+
+3)  Fixed a long-standing bug with info messages in which they would
+get covered up if another window was created while they were
+displayed
+
+From DavidW:
+------------
+4)  Upgraded to version 105 of TOOLS GCC, which means that all the
+extra "forwarding" function definitions that had to be inserted
+before, can now be removed (this has been done for all test apps)
+
+5)  Changed the way hotkeys get defined in resource files, and
+changed the API of the CEikHotKeysTable to match; see the latest
+forms of the ..\tsrc\*.rss files for what's now required; this change
+was required to work round an as yet incompletely diagnosed problem
+with 16-bit access on the rack
+
+(known defect: hotkeys don't get correctly displayed in menu panes
+with this build)
+
+6)  Converted code as required for CONE 088; among other things this
+allows the CContainer class in test code TChLst to have the following
+FocusChanged() function
+
+    void CContainer::FocusChanged(TDrawNow aDrawNow)
+        {
+        iFocusControl->SetFocus(Focused(),aDrawNow);
+        }
+
+7)  Fixed a long-standing bug in CEikChoiceListBase which was calling
+DisplayCursor() in some cases even when not Focused() - a bug caught
+by a new panic check inside CEikonEnv.
+    
+
+Version 0.01.009
+================
+(Made by DavidW, 11 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/087 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+From DavidW:
+------------
+1)  Changed Eikon as required by the changes in CONE 087:
+
+2)  Note that all MinimumSizeL() functions have to be changed to be
+const
+
+3)  Made more use of the new TCoeWinPos combined 2-D "corner" enum
+
+4)  Changed all occurrences of "SystemFont" to "NormalFont"; also
+changed all "BoldSystemFont" to "TitleFont", and "SmallSystemFont" to
+"AnnotationFont"
+
+5)  Had to waste some code in removing all occurrences of the former
+function UseSystemFont()
+
+6)  Removed a few calls to "RequestFocus", since system code (in
+CCoeControl::HandlePointerEventL) now takes care of this properly
+
+7)  Some functions which were formerly called off Window() for
+controls are now called off DrawableWindow() instead, as the latter
+remains public, but the former is now protected.
+
+
+Version 0.01.008
+================
+(Made by DavidW, 10 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/086 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+From Siamak:
+------------
+1)  The incremental matching option for listboxes has been reinstated
+
+2)  Improved the display of listbox items, ie less blank space
+following the last visible item in the listbox
+
+3)  Test app NOKLBX has been renamed to TLBX for consistency with the
+other apps
+
+4)  Improvements in the list box control header file
+
+5)  Various other internal changes in list box code
+
+6)  Fixed a couple of minor bugs in the MNT.CMD and NOKIE.RSS files
+
+From DavidW:
+-----------
+7)  Added some additional placeholder error texts at the end of
+EIKSYSER.RA - ie one for each of the new KErrXxx values that have
+appeared in E32STD.H since the last time I checked (these text
+messages are expected to be taken over shortly by E32).
+
+
+Version 0.01.007
+================
+(Made by DavidW, 9 July 1996)
+
+Uses:   E32/063 F32/027 STORE/017 BAFL/034
+        GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
+        WSERV/039 CONE/086 FONTS/028
+        E32TOOLS/034 EIKTOOLS/106 RCOMP/305
+
+Converted to E32/063 et al
+
+The result of switching to the new compiler was an immediate 24.2%
+reduction in codesize, for the Gcc build
+
+That's definitely a step forward, but there's an equally definite
+step back, in that due to some as yet undiagnosed feature, any Eikon
+program that uses a hot-key table crashes the entire rack stone dead
+when the table is loaded
+
+After five hours of putting in dozens of infomsgs, I've found that
+the crash occurs in a totally innocent line of code; until it's
+proved otherwise, I'm going to blame the Gcc compiler for this, in
+particular assuming that some kind of register corruption has taken
+place
+
+(of course if Cygnus had delivered a half-decent debugger, it ought
+to have been possible to tie this one down, conclusively, in a
+fraction of the time - too bad the debugger's on the omission list
+now)
+
+Back on the plus side, all template instantiations can go.
+
+But back on the negative side, there's arguably a *worse* "MI across
+the DLL boundary" bug than before, for which the workaround is to
+place the following block of lines of code
+
+private: // workaround horrific Gcc compiler bug
+    void ProcessCommandL(TInt aCommandId)
+                {CEikAppUi::ProcessCommandL(aCommandId);}
+    void SetEmphasis(CCoeControl* aMenuWindow,TBool aEmphasis)
+                {CEikAppUi::SetEmphasis(aMenuWindow,aEmphasis);}
+    void WarnMenuDisplayL(TInt /*aMenuId*/,CCoeControl* /*aMenuWindow*/)
+                {}
+    void HandleAttemptDimmedSelectionL(TInt /*aCommandId*/)
+                {}
+    TBool CheckHotKeyNotDimmedL(TInt /*aCommandId*/)
+                {return(ETrue);}
+    void RestoreMenuL(CCoeControl* aMenuWindow,TInt aMenuId)
+                {MEikMenuObserver::RestoreMenuL(aMenuWindow,aMenuId);}
+
+in the definition of your CEikAppUi derived class (of course, if you
+have got an independent body for eg the WarnMenuDisplayL function,
+you miss that line out of the above "workaround" section).
+
+Fail to do that, and the Gcc compiler will simply stop, reporting an
+error, but not telling you what the error is.
+
+More precisely, if your class inherits (directly or indirectly) from
+a mixin that is defined in a different DLL, you have to provide, in
+your DLL, bodies for *all* of the virtual functions defined by that
+mixin.
+
+Anyway, once you've got all that sorted out, you can run any Eikon
+test app that doesn't have a hotkey table.  Out of the five live
+Eikon test apps, that rules out four, leaving only TBut1.  Moral:
+steer well clear of the rack for the time being (but follow the
+discipline of getting your code to clean compile and link under Gcc)
+
+Other changes:
+--------------
+1)  Note that BITGDI can no longer open "single" .PBM files; you have
+to create a "multiple bitmap file" (*.MBM file) instead, using the
+tools MULTIPBM; there's a batch file BLD.CMD in ..\srcdata that joins
+together all the live Eikon bitmaps; this creates the file EIKON.MBM
+that gets included in the ROM (and which lives in \e32data for WINS),
+together with the generated header file \e32inc\eikon.mbg, which
+defines some enum values that you may need to use in code
+
+2)  To add another bitmap, be sure to archive its .BMP version in
+PVCS, as well as its .PBM version, and then alter BLD.CMD to include
+that in the list of source files
+
+3)  Changed all calls CancelClipping() into one or other (or both!)
+of CancelClippingRect() or CancelClippingRegion()
+
+4)  Removed all remaining calls to Validate() and replaced them with
+appropriate calls to BeginRedraw() etc
+
+5)  Tidied up the MNT.CMD and *.OBY files, etc, not to download or
+include any components apart from those used by the current Eikon
+code (thereby excluding eg C32, GRID, ETEXT, TBOX, CLOCK, EALWL,
+PRINT, PDRSTORE, ...).
+
+
+Version 0.01.006
+================
+(Made by DavidW, 8 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/083 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+From DavidW:
+------------
+1)  Changed various functions in controls that used to be
+parameterised like
+        void GetXxx(TInt* aValue) const;
+to be parameterised instead like
+        TInt Xxx() const;
+
+Likewise changed various functions from the form
+        void SetXxxL(const TInt* aValue);
+to
+        void SetXxxL(TInt aValue);
+
+Finally for parameters of "larger type", eg TLargeType, the idea
+(suggested by SteveT) is to change from eg
+        void GetXxx(TLargeType* aValue) const;
+        void SetXxxL(const TLargeType* aValue);
+to
+        void GetXxx(TLargeType& aValue) const;
+        void SetXxxL(const TLargeType& aValue);
+(removing the chance that callers will pass uninitialised pointers)
+
+2)  Added a utility function TSize SizeDelta() to TEikPlinth, and
+modified various pieces of existing code to use this
+
+3)  Changed CEikButtonBase over to the "four drawstates" system, with
+new protected function DrawState() returning the TDrawState value
+
+4)  Changed the button class in TBut1 over to this scheme; this now
+matches the latest button spec as suggested by Bill and Nick (though
+the visuals on the rack take a bit of getting used to)
+
+5)  Changed EIKON code in line with the improvements in the
+"SetFocus()" and "FocusChanged()" system introduced in CONE 085
+
+6)  Reinstated the CEikonEnv functions DrawCursor() and HideCursor(),
+but (in line with suggestions made a while back) the coordinates that
+should be passed to DrawCursor() should now be relative to the
+window, rather than to the control
+
+7)  Improvements to TChLst test code, which now contains a sample
+"container control" which other test code could usefully copy (until
+such time as CONE/EIKON contains a class like that); this container
+now contains three choice lists plus two secret editors; the first of
+the choice lists supports incremental matching and therefore has a
+flashing cursor when focused
+
+8)  Continuing along the path of removing moribund test code, the
+source directory ..\demo has been deleted
+
+9)  To reduce the number of "mistaken" hits during eg Find In Files,
+all file ..\src\*.cpp and ..\inc\*.h* that aren't part of the live
+build of EIKON have been deleted and removed from the LI.PRJ file (of
+course, copies of them still exist in the \eikon source directory).
+
+
+Version 0.01.005
+================
+(Made by DavidW, 6 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/083 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+For the first time, NOKIE is released in all three "standard
+variants", ie WINS Debug and Release, and GCC Release
+
+From SimonC:
+------------
+1)  Changed source code and test code as required, so that a NOKIE
+ROM can be built
+
+2)  Changed TEXTURED.PBM to be the same as the one used by Brendan,
+which has much better effect
+
+From Siamak:
+------------
+3)  Development of choice list code (the code for tabbing out a
+listbox still needs some work doing on it)
+
+4)  New test code TCHLST to test standalone choice lists
+
+From Neil:
+----------
+5)  Converted the secret editor code to the new control design (no
+test code for it yet, though).
+
+
+Version 0.01.004
+================
+(Made by DavidW, 5 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/082 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+From SimonC:
+------------
+1)  Menu bars are now operational again; try pressing F9 (or Alt) in
+the new test application TMenu3, derived from TMenuB0 of old (only the
+Exit command has any effect yet)
+
+2)  The visuals of menus have changed quite a lot; take a look and
+see (arguably the single-pixel thin text for eg "Ctrl+E" gets lost on
+the textured background; we really need to look at this on the rack
+soon, before commiting too much further to it)
+
+3)  Changed the name of the bitmap MENUBACK.PBM to TEXTURED.PBM, and
+moved the code that accesses it into CEikonEnv
+
+From Siamak:
+------------
+4)  Started converting choice lists to the new design; the module
+EIKCHLST.* now compiles, but doesn't yet get exercised by any code
+
+5)  New resource constant header file EIKCHLST.HRH
+
+From DavidW:
+------------
+6)  New module EIKBUTB.* for a totally new implementation of the
+CEikButtonBase class, which makes much fewer presuppositions than the
+corresponding class from old:
+
+7)  The class CEikButtonBase doesn't presuppose anything about the
+button face scrolling on transit between the up to down states;
+instead, a subclass has to provide (at least) DrawUp(), DrawDown(),
+and DrawPressed() functions; optionally the function
+DrawHavingTransitioned() can also be supplied; in principle radio
+buttons, check buttons, and command buttons could all be implemented
+as subclasses of CEikButtonBase
+
+8)  By default the button reports an ECommand event to its observer
+(if any) on the PenUp of a click; use SetReportOnPointerDown() to get
+the event reported on the PenDown instead; replace the function
+ReportButtonClickL() to report an event other than ECommand
+
+9)  New test application TBut1 that starts to demonstrate some of the
+potential of CEikButtonBase, by providing its own subclass
+CTestButton; the detailed visuals of this example need to be
+improved, but some of the basic behaviour of CEikButtonBase can be
+seen; click on any of the buttons, or press 0 1 or 2 to animate one
+of them
+
+10) Removed all old test code from \nokie\tsrc, to speed up PVCS
+operations (there is of course an independent copy of it in
+\eikon\tsrc).
+
+
+Version 0.01.003
+================
+(Made by DavidW, 4 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/082 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+From SimonC:
+------------
+1)  Development of the CEikMenuPane class according to the new
+design:
+
+2)  Menu pane background is now a textured bitmap
+
+3)  Menu pane item highlights extend right across the menu pane
+
+4)  Menu corners are now always square, and the border is handled by
+a CEikPlinth
+
+5)  The "dotted rect" style for de-focused current menu items (ie
+when a cascade has been launched for them) has been superseded by the
+new design (try the test code TEMP0 and see)
+
+6)  Some menu positioning logic has been changed, etc
+
+7)  Added EIKMENUB.* to the NOKIE project - this file compiles, but
+doesn't run (yet)
+
+8)  Moved the functions FillRect() and DrawPolygon() (back) into
+CEikonEnv, for now
+
+From Siamak:
+------------
+9)  Development of the CEikListBox class family:
+
+10) The 6 "main" list box modules are now part of the NOKIE build
+
+11) The list box border is now handled by a CEikPlinth
+
+12) List box flags are now private, being protected by accessor
+functions, just like CCoeControl
+
+13) New test code NOKLBX allowing the main features of listboxes
+to be exercised: click on the screen background to get a pop-up menu
+allowing to choose/swap a single column and a multi-column list box
+
+From DavidW:
+------------
+14) Development of the Temp0 test code, which now draws an array of
+12 rects, each with plinths, and with the spacing between the plinths
+configurable by a new menu option (allowing testing of packing flags)
+
+15) Started EIKBORDR.H, which will in due course replace EIKPLNTH.H
+
+16) Converted EIKON code and test applications, as required by CONE
+083 changes
+
+17) There's a new virtual function in the MEikMenuObserver mixin,
+MakeModal(), which removes the need for a CCoeControlStack* (or
+equivalent) parameter to eg the CEikMenuBar construction
+
+18) CEikonEnv needs its own independent copy of the CEikAppUi*
+pointer, since it can't rely on casting the MCoeAppUiBase* pointer
+held in CCoeEnv property (why not?).
+
+
+Version 0.01.002
+================
+(Made by DavidW, 2 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/081 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+From Siamak:
+------------
+1)  Started the conversion of list box modules to the new CONE
+design; among many other changes
+
+*) all references to scrollbars have had to be commented out for now
+
+*) #includes of COEREQD.H and EIKREQD.H have all been removed
+
+From DavidW:
+------------
+2)  Based on ideas by Siamak, Simon, and (mainly) Bill, developed a
+new class TEikPlinth, in the module EIKPLNTH.*, encapsulating the
+following "border" styles:
+
+    *) sunken box, raised box, or none
+
+    *) single height, double height, triple height ...
+
+    *) external shadow or not
+
+    *) dense packing option
+
+The functions provided by the new class are
+
+    *) a constructor (combining all the above info into a TInt)
+
+    *) setters and getters for all the attributes of the plinth
+
+    *) a Draw() function, passing a Gc and a TRect, which is the
+"outer" TRect for the border
+
+    *) functions to give the widths of each of the four sides of the
+border (as a TMargins instance), and utility functions to convert
+between the inner and outer rects for the border
+
+The test code Temp0 has been rewritten so that its main control
+sports a plinth, whose attributes can be altered either by the
+pop-out menu cascades you get from double clicking, or by hot keys
+(try 1, 2, 3, Ctrl-S, Ctrl-R, Ctrl-N, and Shift-Ctrl-S)
+
+The test code demonstrates that the plinth (plus its surrounds) draws
+in a flicker free manner.
+
+The class *omits*
+
+    *) support for a "sparkle" eating into the top left hand corner
+of the inside TRect
+
+    *) support for the outside shadow leaving gaps at the top right
+and bottom left (of unknown color)
+
+   *) the colors varying dynamically with the background the plinth
+is sitting on.
+
+The new implementations of controls such as menus, listboxes, choice
+lists, buttons, editboxes, ... can all now use TEikPlinth.
+
+Note: the dense packing attributes haven't been tested yet.  Nor do I
+have much of an idea of what a shadowed sunken box should look like.
+
+
+Version 0.01.001
+================
+(Made by DavidW, 1 July 1996)
+
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/081 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
+
+This is the first of what will hopefully be only a short series of
+"branch" builds of EIKON, with the source code moved into the \NOKIE
+directory tree instead of the \EIKON directory tree; it will all be
+moved back again on the completion of the conversion of the source
+code to the new design
+
+The build number has been reset to 001 (as befits an independent
+source group)
+
+Large parts of the build have been commented out for now; more
+precisely there are only 7 modules linked into the DLL (as opposed to
+around 90 for EIKON); this count should rise fairly rapidly over the
+next few days
+
+And there's only one live test module for now, TEMP0, in ..\tsrc,
+which relies upon the Wserv shell to run it, so you'll need to delete
+the file \e32data\wsini.ini, which tells the Window Server to look
+for EIKSRV.EXE to run; also you'll need to provide yourself a file
+\e32data\dll_list.txt containing the line "TEMP0" in it
+
+The dependencies of EIKON upon TBOX and GRID have been suspended for
+now (pending such time as these components re-release matching Wserv
+038 or later)
+
+Only the Ascii Debug variant is released for the time being
+
+The changes in more detail (see also the recent CONE release notes):
+
+1)  The class CEikAppControl has transformed into CEikAppUi, and
+EIKAPPC.* has transformed into EIKAPPUI.*
+
+2)  The file EIKREQD.H has been withdrawn; some of its former contents
+can now be found in the new header file EIKDEF.H
+
+3)  Various functions that used to take pointers now take references
+instead, and "const" has been used more widely
+
+4)  Some standardization has taken place of names for resources in the
+system resource file
+
+5)  The old module EIKHKEYS.* has been renamed to EIKHKEYT.*, since
+it contains the HotKeyTable class, and a new module EIKHKEYC.* has
+been created, containing a HotKeyControl class; this won't normally
+be seen by app writers, but it is used internally by the new function
+CEikAppUi::CreateHotKeyControlL(), which can be used by applications
+that want hot-key processing (eg defined by a table in the resource
+file) without having to define a menu bar
+
+6)  The relationship between the observer classes MEikCommandObserver
+and MEikMenuObserver has been cleaned up, with MEikCommandObserver
+now being pure virtual, and MEikMenuObserver being moved into a
+separate header file, EIKMOBS.H; some of the names of the functions
+in these classes have been improved
+
+7)  Various functions with names like ConstructMsgWinL() have been
+renamed simply to ConstructL()
+
+8)  Preliminary conversion of EIKMENUP.* (the largest module
+converted so far); double click in the main window in TEMP0 and
+you'll get a pop-up menu with four commands in it
+
+9)  Various drawing utilities that used to exist in CEikonEnv have
+been shunted into CEikMenuPane temporarily, until a permanent home is
+found for them (note that these utilities used to pass a "color
+element", for run-time redirection, but this concept no longer
+exists)
+
+10) The flag EEikMenuItemHasEllipsis has been withdrawn (people
+defining menus can just as easily add the ellipsis themselves).
+
+
+Version 0.01.078
+================  
+(Made by SimonC, 27 June 1996)  
+  
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
+        NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
+        WSERV/037 PDRSTORE/008 PRINT/015 CLOCK/020
+        GRID/064 CONE/079 ETEXT/040 TBOX/059 FONTS/027
+        EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/304 
+
+
+From Siamak:
+--------------
+1) Added support for zooming to listbox code. The main listbox test app, TLBOX, now uses GDI's 
+TZoomFactor class (in a similar way to the Grid control) to demonstrate zooming. 
+
+2) Various internal code changes (additional asserts, minor optimizations, etc.)
+
+From SimonC:
+--------------
+3) Updated to GDI 024 et al.
+
+4) Changed toolbars and dialogs to set their background colour rather than filling in their entire area 
+before drawing any controls (necessary since, with the new WSERV and CLOCKS it is again possible 
+to draw over clocks).
+
+5) Fixed hierarchical listbox panic on the rack that ocurred when trying to expand or collapse an item.
+
+6) Re-wrote CEikAppControl::CreateSecondToolBarL() to allow the second toolbar to have access to 
+the same controls as the ‘standard’ toolbar.
+
+7) Started a new hierarchical list subclass in tlbox2 - nowhere near finished yet.
+
+8) On Bill’s suggestion changed the font returned by SystemFont() to be 15 pixels high rather than 18.
+
+
+Version 0.01.077 
+================  
+(Made by SimonC, 21 June 1996)  
+  
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/063  
+        CONE/078 ETEXT/039 TBOX/058 FONTS/026 EALWL/022  
+        E32TOOLS/027 EIKTOOLS/105 RCOMP/304 
+ 
+ 
+re-released at 3pm 24/06 without connection to comms server.  Should now run on the rack.
+
+Uses TBOX 058, C32 018,GRID 063 and EALWL 022 for the first time 
+ 
+From Siamak: 
+-------------- 
+1) Removed some unnecessary functions from the listbox API 
+ 
+2) Various internal listbox changes. 
+ 
+From MartinT: 
+-------------- 
+3) Replaced all mention of Protea on the system screen with EPOC32. 
+ 
+From Neil: 
+-------------- 
+4) Improvements to the slider control: 
+ 
+CEikSlider is now usable, although it's appearence, functionality and API may vary as spec issues are  
+resolved.  See new test code TSLID0 for examples of using sliders. 
+ 
+5) Required changing CEikTagBase and derived classes in the following ways after discussion with  
+Brendan. 
+ 
+- changed call to CreateWindowL(aParent) to be SetParentWindow(aParent) in ConstructL(). 
+ 
+- Added a function ResetControlGc() which reverses the effect of ControlGc() and call this instead of  
+ResetGc() which used to reset the background color resulting in strange effects in dialogs 
+ 
+- Removed the TPoint aPoint parameter to ConstructL() and the subsequent call to SetPosition(aPoint)  
+Any "direct" users of Tags (i.e not in a dialog) should call SetPosition() themselves after construction. 
+ 
+- Removed call to SetReadyToDraw() from ConstructL().  Again, direct users should call this after  
+construction and setting the position. 
+ 
+6) Removed TPoint aPoint parameter and call to SetReadyToDraw for ConstructL() function of  
+CEikBitmap similarly to CEikTagBase above at Brendan's request.   
+ 
+7) Changed EIKALRM.CPP and TBMPTAG test code in accordance to the above changes 
+ 
+From SimonC: 
+-------------- 
+8) Fixed most of the flicker in the hierarchical listbox drawing.  The remaining flicker is unlikely to be  
+fixed. 
+ 
+9) Added exported c’tor and d’tor to CEikToolbar. 
+ 
+10) Tidied up dir contents listbox code. 
+ 
+11) Fixed long standing memory leak in tlbox2. 
+ 
+12) Made minor changes to tscrlb1 and tedwin0 to fix file selector panics on the rack. 
+ 
+ 
+Version 0.01.076 
+================  
+(Made by SimonC, 12 June 1996)  
+  
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/020  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061  
+        CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021  
+        E32TOOLS/027 EIKTOOLS/105 RCOMP/304 
+ 
+ 
+This release is not binary compatible with 075 
+ 
+From Julian: 
+----------- 
+1) Changed the XorDraw() function in CFrameOverlay to prevent a "ghost" frame appearing in Paint  
+under certain circumstances. 
+ 
+2) Changed EIKEDWIN and EIKEDCMP to test the ETEXT functions PasteParaFromClipboardL()  
+and ImportTextFileL(). 
+ 
+3) ImportTextFileL() requires that a TTextOrganisation variable is supplied by the application.   
+Currently the edwin supplies a default value. 
+ 
+From Neil: 
+----------- 
+4) Following a suggestion from DavidW and in accordance to Charles' document entitiled "Designing  
+UI class libraries": 
+ 
+Removed all trace of the scrollbar visibility flags for CEikEdwin and CEikListBox (eg  
+EEikListBoxAutoVScrollBar) 
+ 
+Any app requiring scrollbars on these controls must now use the control's scrollbar frame using the  
+following public functions in CEikListBox and CEikEdwin 
+ 
+a) call CreateScrollBarFrameL() to create the controls scrollbar frame if it doesn't already exist 
+ 
+b) call ScrollBarFrame() to get a handle to the control's scrollbar frame 
+ 
+c) using the handle returned from b) call the scrollbar frame's SetScrollBarVisibility() function to ask  
+for the appropriate scrollbars. 
+ 
+This should be done before SetExtentL() is called.  For edwins or listboxes in dialogs the best place to  
+do this is in the dialog's PreLayoutDynInitL() 
+ 
+Also the SetScrollBarVisibilityL() function to dynamically change scrollbar visibilities for these  
+controls has been removed.  This should be replaced by the same as above followed by a call to  
+UpdateScrollBarsL() to take immediate effect 
+ 
+5) As an experiment, to get round the problems with calibrating scrollbars for an Edwin with a partially  
+formatted document, made the vertical scrollbar non-proportional.  Unfortuanately this now means that  
+an auto visible vertical scrollbar in this case will in fact always be visible.  However for a largish  
+document (when partial formatting is most useful and an auto-visible scrollbar will always be present)  
+it is much better than before. 
+ 
+6) Updated all affected test code 
+ 
+7) Skeleton of the CEikSliderControl provided.  Not ready for use yet. 
+ 
+From Vamsi: 
+----------- 
+8) Changed BoldItalicUnderlineEvent() of EikEdwinCmp to take an argument showing which event  
+has just taken place. 
+ 
+9) Removed iFontFlags, SetFontFlags() as they were no longer needed. 
+ 
+10) Changed Write to support these changes. 
+ 
+11) Changed CEikPageMarginsDialog to take a TPageSpec in its constructor and refuse to accept  
+margins that are too large. 
+ 
+12) Added a "goto" dialog in the new files EIKGTDG.*.  At present only the goto line option has been  
+implemented. 
+ 
+From SimonC: 
+----------- 
+13) Tidied up hierarchical listbox code. 
+ 
+14) Fixed memory leak in file selector that occured if there was an OOM during construction. 
+ 
+15) Added various clock flags to allow clocks to be created in formats other than those specified in  
+TLocale. 
+ 
+ 
+Version 0.01.075  
+================  
+(Made by SimonC, 5 June 1996)  
+  
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/020  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061  
+        CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021  
+        E32TOOLS/027 EIKTOOLS/105 RCOMP/304 
+ 
+This release is binary compatable with 074 
+ 
+From DavidW:  
+------------ 
+1) Cut down the minimum heap size for each eikon app to 16k to reduce RAM usage on the rack. 
+ 
+2) Added support for debugging on the rack by adding eikrun.mak to eikon 
+ 
+3) eikrun produces EIKRUN.EXE which is a standalone .EXE that expects a parameter like  
+"tdialg1.prg". 
+ 
+It can be used as follows: 
+ 
+i) Get a new ROM 
+ 
+ii} PEIGER it, and start it up 
+ 
+iii) Run TWIN.EXE 
+ 
+iv) Type "CD \SYS" 
+ 
+v) Type "EIKRUN TDIALG1.PRG" 
+ 
+TDialg1 starts. 
+ 
+Note that EIKRUN runs the *.PRG file in the main thread of that process. 
+ 
+It's possible that if the current directory isn't \sys, you would need to type the full path.  
+ 
+From Siamak: 
+------------ 
+4) Various internal changes to listbox code. 
+ 
+From Neil: 
+------------ 
+5) Fixed j-Day defect HA-120. 
+ 
+From Vamsi: 
+------------ 
+6) Fixed J-Day defect HA-24. 
+ 
+7) Fixed bug whereby edwins returned the wrong layout width if a line cursor was present. 
+ 
+From SimonC: 
+------------  
+8) Fixed J-Day defects HA-83.  
+ 
+9) Provided a temporary fix for defect HA-73.  This may make digital clocks appear too far to the left  
+for now. 
+ 
+10) Fixed a drawing bug in progress bars that was shown up by the print dialog.  
+ 
+ 
+Version 0.01.074  
+================  
+(Made by DavidW, 31 May 1996)  
+  
+Uses:   E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/019  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061  
+        CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021  
+        E32TOOLS/027 EIKTOOLS/105 RCOMP/304  
+  
+Candidate J-Day Eikon ROM  
+  
+*** Rebased on 4 June 1996 with the following changes ***  
+  
+*) Took J-Day versions of all components  
+  
+*) Removed all reference to EIKCSH, eg the \eikon\eikcsh directory  
+and the eikcsh release component, since this functionality is being  
+taken over by some other group (to be specified - currently versions  
+of these files are released by TCPIP)  
+  
+*) Added two lines to the GETC32 verb of MNT.CMD, which is now  
+  
+    :getc32  
+    set _par=%2  
+    if "%_par%"=="" set _par=%_vc32%  
+    cd \e32inc  
+    call getrel c32 incc %_par%  
+    cd \e32sys  
+    call getrel c32 ewins %_par%  
+    call getrel c32 edrvw %_par%  
+    call getrel c32 ewinsdb %_par%  
+    cd \work\emarm  
+    call getrel c32 emarm %_par%  
+    call getrel c32 edrvm %_par%  
+    call cont %g% group  
+    goto end  
+  
+*) Added a GETNCP verb which is called from GETCOMPS, as follows   
+  
+    :getncp  
+    set _par=%2  
+    if "%_par%"=="" set _par=%_vncp%  
+    cd \e32inc  
+    call getrel ncp incc %_par%  
+    cd \e32sys  
+    call getrel ncp ewins %_par%  
+    call getrel ncp ewinsdb %_par%  
+    cd \work\emarm  
+    call getrel ncp emarm %_par%  
+    call cont %g% group  
+    goto end  
+  
+*) Added the following lines to PROTEA.OBY  
+  
+    file=\work\emarm\encp.prt sys\encp.prt  
+    file=\work\emarm\elink.dll sys\elink.dll  
+    file=\work\emarm\eremsv.dll sys\eremsv.dll  
+  
+Note: all components downstream from Eikon will need to make  
+corresponding changes to their MNT.CMD and *.OBY files  
+  
+*) Changed the line  
+  
+    romalign=0x1000  
+  
+in EIKON.OBY to  
+  
+    romalign=0x10  
+  
+resulting in a 16% reduction in the size of the *.IMG file produced  
+  
+*** End of rebasing changes ***  
+  
+A note on build numbers:  
+------------------------  
+Yes I know there are later builds of E32 F32 etc etc than I have used  
+to build this Eikon - but it doesn't matter, since they're all binary  
+compatible, aren't they?  (The latest builds will be included in the  
+Protea ROM)  
+  
+Similarly there's no need for any app that's already built with eg  
+Eikon 073 to rebuild with Eikon 074  
+  
+A note on running in Release mode on the PC:  
+--------------------------------------------  
+Before starting, rename the file \e32sys\ecuartd.csy to ecuartd.ccc  
+(or some other extension, apart from *.csy)  
+  
+Before running in Debug mode again, rename it back again.  
+  
+Do *not* rename or delete the file \e32sys\ecuart.csy for either  
+build - it's required in both cases!!  
+  
+All this will be sorted out in the post J-Day thaw  
+  
+From Siamak/SimonC:  
+-------------------  
+*)  Put back a few of the clipping regions which had been removed in  
+the last few releases, since it appears they're needed after all  
+  
+From Julian:  
+------------  
+*)  Fix to the DrawAsGlassDoor() function in TEdwin1 to ensure that  
+every pixel is drawn to  
+  
+From DavidW:  
+------------  
+*)  Couldn't get to the bottom of why the system crashes when I try  
+to start an app in response to a program button being pressed on the  
+rack; however I've found empirically that the crash doesn't occur if  
+there's an alert just beforehand, so I've left in one of my debugging  
+alerts, so that the program buttons aren't useless  
+  
+(bonus J-Day points to anyone who can get to the bottom of this!)  
+  
+*)  Fixed a bug whereby something like Alt-C could deliver a 'C'  
+keycode to the main window, instead of to the menu bar, in the case  
+when no menu title had 'C' for its mnemonic  
+  
+*)  Fixed the bug whereby the Assign Buttons dialog had no effect on  
+the rack (a "C::\\" had crept in, instead of "C:\\")  
+  
+Other fixes that were too late:  
+-------------------------------  
+My apologies to every else who tried to submit bug fixes for Eikon,  
+but which I have set aside, in order to manage to release Eikon  
+before J-Hour  
+  
+  
+Version 0.01.073  
+================  
+(Made by DavidW, 31 May 1996)  
+  
+Uses:   E32/061 F32/025 STORE/015 BAFL/032 C32/015 ESOCK/017  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/060  
+        CONE/078 ETEXT/038 TBOX/056 FONTS/026 EALWL/021  
+        E32TOOLS/027 EIKTOOLS/104 RCOMP/304  
+  
+It's five minutes to J-Hour, yet no fewer than nine people still have  
+their sticky fingers in Eikon code!  
+  
+Binary compatible with Eikon 072 (well, sort-of, again!)  
+  
+Eikon now depends on C32:  
+-------------------------  
+The slippery slope continues - last time ESOCK, this time C32; see  
+the relevant sections in MNT.CMD and EIKON.OBY for some changes  
+  
+Note that the *.INI file that gets renamed to ESOCK.INI is now  
+MINW.INI (on WINS) and MINM.INI (on GCC)  
+  
+From Julian:  
+------------  
+1)  Important: the effective protocol of the functions  
+CEikDoor::Draw() and CEikDocument::DrawAsGlassDoor() has changed;  
+Write and TEdwin1 have been changed to match, but Word, Paint and  
+Draw will need to be changed before J-Hour (the way these  
+applications treat doors in the Protea 011 ROM is wrong)  
+  
+2)  The change is that the CEikDoor::Draw() function now pays  
+attention to its MGraphicsDeviceMap parameter, and therefore supports  
+zooming  
+  
+3)  The change also simplifies what document classes have to provide  
+in their DrawAsGlassDoor() function, and in fact most of the  
+parameters passed in this function should now be ignored (these  
+trailing parameters will be removed in the post J-Day API thaw)  
+  
+4)  Another important change: the changes in 072 re automatically  
+using a file with the application's name if none is explicitly given,  
+were incomplete in the area of New File; this scheme has now been  
+developed further, with changes made in the TEdwin1 sample app  
+  
+5)  Associated with this, the form of the canonical CmdFileSaveL()  
+function, for write-once store file-based apps, changes *back* to  
+  
+    if (!iDocumentChanged)  
+        iEikonEnv->InfoMsg(R_EIK_TBUF_NOTHING_TO_SAVE);  
+    else  
+        {  
+        if (IsSubApp())  
+            iDocument->SaveDataToContainerL();  
+        else if (iFileLoaded)  
+            DoFileSaveL();  
+        else  
+            CmdFileSaveAsL();  
+        }  
+    }  
+  
+ie with a test on iFileLoaded reinstated  
+  
+6)  Internal changes, in synch with the above changes, to the  
+LoadStartDataL() and CmdFileRevertL() functions of CEikAppControl  
+  
+From Adam:  
+----------  
+7)  Whole new directory of code, \eikon\eikcsh\*.*, that builds to  
+produce a utility program EIKCSH.PRG of use to the Comms team (and  
+potentially to others); CSH stands for Console SHell since it can  
+launch up to six console screens serving applications  
+  
+8)  If you start EIKCSH by itself, from eg the Eikon System screen or  
+the real shell, you won't be particularly impressed, but bear in mind  
+that it starts doing something useful when other programs connect to  
+it  
+  
+9)  Changed the ScreenSize() function of CEikConsoleScreen to be  
+IMPORT_C and non apparently inline (in fact it was never actually  
+inline, since it is virtual)  
+  
+From SimonC:  
+------------  
+10) Moved menu panes down slightly, to stop them overwriting the  
+descenders of the text in the menu titles; note that it's now clear  
+that 10 items in a menu is too many  
+  
+11) Improved the coloring of the bitmaps used by the file browser  
+  
+12) Changed the way digital clocks determine whether to show am/pm,  
+by consulting the TLocale; the showampm flag is now redundant  
+  
+13) Tidied up file selector code some more  
+  
+14) Removed some unnecesssary clipping regions  
+  
+15) Temporary block in the SaveAs dialog to prevent a filename  
+exceeding 8.3 being typed in (since the rack filing system can't  
+handle any such filename yet)  
+  
+From Neil:  
+----------  
+16) Considerably improved the appearance of the character map  
+control, as used in the "Insert symbol" dialog: the text was being  
+drawn too low in each box  
+  
+17) As an experiment, changed the font used in the character map  
+control to be the system font, rather than the small system font  
+(which was too hard on the eyes on the rack, in this control); the  
+result is now much more legible than before, albeit at the cost of  
+leaving less background screen area to see the underlying window  
+  
+18) Fixed a bug in the HandlePointerEventL function of the character  
+map control, in which it was impossible to click on an item in the  
+bottom row of the control  
+  
+19) Tidied up some code in the Secret Editor control, replacing magic  
+numbers with KEikXxx values  
+  
+20) Figured out why various displays (eg the Secret Editor) had  
+recently changed to gray from white - and traced this to a bug in  
+BITGDI (now fixed)  
+  
+From Bill:  
+----------  
+21) Two functions in EIKDCLBM have been made virtual (without  
+compromising binary compatibility, as it turns out): Item() and  
+ItemIsParent()  
+  
+From Siamak:  
+------------  
+22) Various changes to the listbox code to fix bugs to do with  
+scrolling (mainly in multi-column listboxes)  
+  
+23) Reduced the usage of SetClippingRect()  
+  
+From Brendan:  
+-------------  
+24) Fix to EIKALRM.CPP to fix a bug when snoozing an alarm that had  
+already been silenced  
+  
+(Did you know: when an alarm is snoozed, you can press Tab to task  
+away from it; later this functionality will be taken over by any of  
+the task keys being pressed)  
+  
+From Kevin:  
+-----------  
+25) Fix to EIKNUMED.CPP to allow the max and min of a numeric field  
+to be set equal to each other  
+  
+From DavidW:  
+------------  
+26) Had to comment out the code that handles a click on a Program Bar  
+buttons, when no task matching that button is running yet, since this  
+causes an inexplicable crash on the rack; hopefully this will be  
+fixed before the J-Hour ROM  
+  
+(E32 061 delivers pointer events to the offscreen windows for the  
+first time; those in the sidebar, such as launch the menu, cause no  
+problems, but those in the program bar have proved troublesome.  Note  
+however that you can always do a Ctrl-System click, to get the Task  
+List, or a Shift-System click, to cycle round running tasks, or click  
+on the button of a task that is already running, to go to that task)  
+  
+(One more warning: in WINS, think twice before launching a browser  
+seeded on the \e32sys directory; due to some infelicities in the  
+latest F32, this now takes Megaseconds to complete)  
+  
+  
+Version 0.01.072  
+================  
+(Made by DavidW, 30 May 1996)  
+  
+Uses:   E32/060 F32/024 STORE/015 BAFL/032 ESOCK/016  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/024 WSERV/034  
+        PDRSTORE/007 PRINT/014 CLOCK/019 GRID/060  
+        CONE/078 ETEXT/038 TBOX/054 FONTS/026 EALWL/021  
+        E32TOOLS/027 EIKTOOLS/104 RCOMP/304  
+  
+Binary compatible with Eikon 071 (well, sort-of)  
+  
+Important change to LoadStartDataL() call:  
+------------------------------------------  
+You should change any call like  
+  
+    LoadStartDataL(&_L("y:\\main\\*.ed0"));  
+  
+to   
+  
+    LoadStartDataL(&_L("y:\\Home\\.ed0"));  
+  
+where there are *two* changes to make  
+  
+(a) remove the star (asterisk)  
+  
+(b) change from \main\ to \Home\  
+  
+Some background to this:  
+------------------------  
+Basically, write-once file based apps should avoid the "no file"  
+state (which they used to enter, by default, if the app was started  
+without any filename being passed on the command line)  
+  
+Eikon code (in CEikDocument) now creates the default filename out of  
+a combination of anything you specify in your LoadStartData() call  
+and your GetAppName() call  
+  
+Thus Write ends up editing \Home\Write.wri by default  
+  
+If the user starts up the app, makes changes, and exits, these  
+changes get saved to the default filename, without the user needing  
+to confirm this (or supply a filename)  
+  
+The detailed UI of this will evolve after J-Day, but for now, users  
+can change the filename eg using the SaveAs function  
+  
+(If you leave the star in, in the name you pass to LoadStartDataL(),  
+the various Parse functions used end up with a star in the final  
+filename, which is no good!  I've even seen a file "*.WRI" created on  
+Y:, but I couldn't persuade F32 to open it again)  
+  
+Change to your CmdFileSaveL() functions:  
+----------------------------------------  
+The sample code for the CmdFileSaveL() functions for write-once store  
+file-based apps has simplified, to  
+  
+    void CSimpleAppControl::CmdFileSaveL()  
+        {  
+        if (!iDocumentChanged)  
+            iEikonEnv->InfoMsg(R_EIK_TBUF_NOTHING_TO_SAVE);  
+        else  
+            {  
+            if (IsSubApp())  
+                iDocument->SaveDataToContainerL();  
+            else  
+                DoFileSaveL();  
+            }  
+        }  
+  
+the difference being that a test on the field iFileLoaded is no  
+longer made (otherwise the app will request a filename, from the  
+user, on exiting, in the case when no filename has been explicitly  
+provided by the user)  
+  
+Eikon is now dependent on ESOCK:  
+--------------------------------  
+See the GETESOCK verb in MNT.CMD, which you may need to copy into  
+your own MNT.CMD  
+  
+Note: since ESOCK expects to find various files in the \e32etc (I kid  
+you not) directory on the PC, you'd better change your MNT MAKEWORK  
+to check this directory is made (as well as \e32data etc)  
+  
+(Some stage soon we might see a rationalization between \e32data and  
+\e32etc)  
+  
+You'll also have to add four new lines to your *.OBY files:  
+  
+    file=\work\emarm\netsrv.dll sys\netsrv.dll  
+    file=\work\emarm\esock.dll sys\esock.dll  
+    file=\work\emarm\pdummy.prt sys\pdummy.prt  
+    data=\e32etc\esockm.ini etc\esock.ini  
+  
+From Neil:  
+----------  
+1)  Set the ECoeWinAreaAutoValidate flag for CEikScrollBar, as  
+suggested by Siamak and Bill  
+  
+2)  Stopped scrollbar drag events from being reported when the thumb  
+position didn't actually change  
+  
+3)  Fixed an overflow bug in CEikScrollBar::AdjustOnlyThumbPosition,  
+found by Vamsi, by using TInt64 for the intermediate calculation  
+  
+4)  As an experiment, changed some code in scrollbars and scrollbar  
+buttons to use the shifting operators rather than explicit divides  
+and multiplies  
+  
+5)  Changed the file selector dialog in TScrlB1 to view all files,  
+rather than just *.CPP files, to make it easier to import Eikon's  
+RELEASE.TXT file (a troublesome large document that exposed the bug  
+above!)  
+  
+(Good to see that RELEASE.TXT is of some use after all!)  
+  
+6)  On Bill's request, changed the listbox code to stop it centering  
+the view rect in the available area  
+  
+From SimonC:  
+------------  
+7)  Fixed the bug that caused TLBox1 to crash on the rack when  
+switching to Z:  
+  
+8)  Changed digital clocks so that, for now, whether they are in 12  
+or 24 hour mode will be determined from TLocale; this means that the  
+flag EEikDigitalClock12Hour is redundant (and will be removed post  
+J-Day)  
+  
+9)  Removed a couple of unnecessary calls to SetClippingRegion()  
+  
+From Siamak:  
+------------  
+10) Various internal changes to listboxes, mainly to stop the current  
+item from ever disappearing when the listbox is resized  
+  
+From Duncan:  
+------------  
+11) Fixed a bug in the Font Selector dialog which sometimes failed to  
+set the interminate state correctly in the check boxes  
+  
+From DavidW:  
+------------  
+12) Based on work by SimonB, added a placeholder "Link settings"  
+dialog to Eikon, in the new module EIKLNKDG.*  
+  
+13) This is invoked from any application that wishes to make it  
+available (eg any Shell programs) as follows  
+  
+    void CEikSysAppControl::SystemCmdLinkOptionsL()  
+        {  
+        CEikDialog* dialog=new(ELeave) CEikDialogLinkOptions;  
+        dialog->ExecuteLD(R_EIK_DIALOG_LINK_OPTIONS);  
+        }  
+  
+The dialog encapsulates the logic of interacting with the NETSERV  
+system (part of the ESOCK release)  
+  
+(The current implementation of NETSERV has the effect of not  
+preserving the settings between different invocations of the dialog -  
+will be amended shortly)  
+  
+14) EXPORTed the ctor of CEikLabel  
+  
+15) The Eikon System screen now seeds its Document dialog to \Home\*,  
+rather than to \Main\* as before; the real Shell will make the same  
+change shortly.  
+  
+  
+Version 0.01.071  
+================  
+(Made by DavidW, 29 May 1996)  
+  
+Uses:   E32/060 F32/024 STORE/015 BAFL/032  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034  
+        PDRSTORE/006 PRINT/013 CLOCK/019 GRID/059  
+        CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021  
+        E32TOOLS/026 EIKTOOLS/104 RCOMP/304  
+  
+Binary compatible with Eikon 070  
+--------------------------------  
+Even though there are new EXPORTed functions!  
+  
+This is possible by means of using FRZ technology:  
+  
+*) Rename your *previous* *.DEF file to *.FRZ, and start archiving it  
+in PVCS (ie add it to the files listed in your LI.PRJ)  
+  
+(the *.DEF file is created as a by-product of a Gcc build)  
+  
+*) Change your call to MAKTRAN to put in a /z parameter  
+  
+Eg my \eikon\group\arm.cmd is now  
+  
+    call doarm eikon /d  
+    call doarm eiksrv   
+    call doarm eikcns /d  
+    call doarm eiksys /d  
+   
+and the \eikon\group\doarm.cmd batch file is  
+  
+    set _frzpar=  
+    if exist %1.frz set _frzpar=/z%1.frz  
+    call maktran %1.mak %1.arm %_frzpar% %2  
+    set _frzpar=  
+    nmake -f %1.arm /x %1.aer  
+  
+(EIKON, EIKCNS & EIKSYS all build DLLs, whereas EIKSRV builds an EXE)  
+  
+*) FRZ stands for "frozen": take a look at the new *.DEF file, and  
+you'll see that it starts off by duplicating the *.FRZ listing; all  
+new functions get put on at the end, rather than being inserted in  
+alphabetical order  
+  
+*) You'll get an error during the Gcc build phase if one of the  
+functions listed in the *.FRZ file cannot be found in the new DLL (eg  
+because you've changed the function signature)  
+  
+*) Don't forget, when you're finished, to copy the final *.DEF file  
+to *.FRZ (and PVCS it again) for the sake of the *next* time you need  
+to add in EXPORTed functions  
+  
+*) Also bear in mind that when the post J-Day API thaw hits, all  
+*.FRZ files will be deleted again (which will allow us to change a  
+few function signatures)  
+  
+*) To recap one point: there's no need for any app to rebuild with  
+Eikon 071 (unless eg you want to call one of the new EXPORTed  
+functions)  
+  
+From Simon:  
+-----------  
+1)  Fixed the bug that was causing file sizes and dates to overlap in  
+the file selector  
+  
+2)  Fixed the bug that caused the button array in the file selector  
+to panic the layout engine (were not a temporary kludge in place last  
+time to stop this); for the first time, all button arrays should now  
+be drawn properly (we hope!)  
+  
+3)  Changed clock factories to initialize the offset and flags  
+variables to zero (necessary since clock factories are Ts not Cs)  
+  
+4)  Fixed an old bug concerning the positioning of text on buttons  
+that also have a bitmap  
+  
+5)  Fixed TLBox1 to run on the rack again without crashing (except  
+that it mysteriously crashes when positioned to Z:, for reasons that  
+are still being investigated)  
+  
+From Brendan:  
+-------------  
+6)  Modified the SetExtentL function of CEikClock to take cognisance  
+of whether it owns its window (this is actually just a workaround of  
+a limitation in the present implementation of the CLOCK DLL, which  
+will have to wait until after J-Day for a proper fix; in the  
+meantime, some clocks will have to go back into their own windows)  
+  
+7)  Changed a TInt to a TInt64 instead the SetTimeOffsetInSeconds()  
+function of CEikClock, so that large time offsets could be set in  
+microseconds  
+  
+8)  Added an EXPORTed ctor for CEikClock, to allow it to be used from  
+outside Eikon.DLL  
+  
+9)  Converted TBmp so that it runs under the new clock scheme, and,  
+for the first time, TBmp joins the set of Eikon test applications  
+that run on the rack  
+  
+10) Added an EXPORTEd dtor for CEikBufTag, for the usual reasons  
+  
+From Siamak:  
+------------  
+11) Modified the HandlePointerEventL() function in CEikListBox so  
+that clicking outside a popout listbox reports an  
+InteractionCancelled event to its observer (allowing the observer to  
+destroy the listbox) - functionality that got lost in the recent  
+rationalization of this function  
+  
+12) Fixed a bug in CListBoxView::UpdateSelectionL()  
+  
+From Vamsi:  
+-----------  
+13) Changed the HandlePointerEventL() function of CEikEdwin to call  
+ReportControlEventL(EEikCeItemClicked) in all non-trivial cases, so  
+that the observer (eg the Word Application control) can do things  
+like modify Bold Italic and Underline buttons in the toolbar (this is  
+a cleaner solution than the one currently employed in the Write  
+testcode)  
+  
+Don't forget to test any Eikon changes by compiling in Gcc  
+----------------------------------------------------------  
+*)  You may lose some J-Day points if you submit code that fails to  
+compile and link cleanly under Gcc!  
+  
+  
+Version 0.01.070  
+================  
+(Made by DavidW, 28 May 1996)  
+  
+Uses:   E32/060 F32/024 STORE/014 BAFL/032  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034  
+        PDRSTORE/006 PRINT/013 CLOCK/019 GRID/059  
+        CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021  
+        E32TOOLS/026 EIKTOOLS/104 RCOMP/304  
+  
+Barring accidents, this release defines Eikon for J-Day; there will  
+be no header file changes, or changes in EIKON.DEF (the set of  
+exported functions), until the post J-Day API thaw  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Use CLOCK 019 for the first time (binary compatible with CLOCK 018)  
+  
+A note about testing on the rack:  
+---------------------------------  
+By all means test your software on the PC, but don't neglect to test  
+it thoroughly on a rack as well.  
+  
+Many bugs may show up only on the rack.  
+  
+For example, there are some known (and possibly some unknown) Gcc  
+compiler bugs, that can cause software that works beautifully on the  
+PC to go wrong on the rack.  
+  
+From DavidW:  
+------------  
+1)  CEikDocument now has a CFileStore* pointer iFileStore, for the  
+handle of the open filestore of the "main document" (this pointer  
+will probably move to the CEikProcess class later); the important  
+change here is that the filestore is now kept open throughout the  
+duration of editing the file, with two advantages:  
+  
+    (a) Sibo-style, it prevents the user editing the same document  
+twice at the same time  
+  
+    (b) it supports deferred access to data in the store, without  
+requiring it all to be read in during the first "load" stage  
+  
+2)  Changed the Write test application so that it sets the  
+EEikEdwinPartialFormat flag, meaning (inter alia) that off-screen  
+pictures won't get read in during the first load stage; the fact that  
+the main file store is now kept open means that this behaviour no  
+longer causes a crash when the picture does eventually need to be  
+accessed (eg when the user pages down the document)  
+  
+3)  The above changes have a knock-on effect for the "Save" operation  
+of general write-once files, since the new file must now be written  
+out with a temporary name (without losing the contents of the  
+original file, which may not all be in memory yet), and with a rename  
+occurring at the end; this change has been made to the DoFileSave  
+function of CEikDocument  
+  
+4)  Changed the CreateStoreLC function of TEikDocHeader to take an  
+additional TFileName& parameter, to hold the filename of the  
+temporary file created  
+  
+(there are still practical problems, though, if there is a "Save" or  
+"SaveAs" request, without the whole document first having been loaded  
+into memory; these will be addressed once STORE provides fuller  
+support for "stores within streams")  
+  
+5)  The Demo test app (\eikon\tsrc\demo.*) now stores its data in a  
+re-writable store, with the data in the store being kept up to date  
+as the user makes changes in the application  
+  
+6)  Demo now runs on the rack for the first time  
+  
+(there is still some way to go, though, before the file-handling  
+routines in Demo are properly integrated with the system in  
+CEikDocument that currently handles write-once file stores; this will  
+be developed further shortly)  
+  
+7)  Changed the file selector default always to show extensions  
+  
+8)  Commented out the piece of file selector code that restricts the  
+files listed to those with an extension matching the seed file, since  
+in practice this is almost never what the user wants  
+  
+9)  Two new MNT verbs, to allow easy switching of whether the E32  
+console is installed (as required for running certain kinds of test  
+code, eg Store test code or AGM test code), or whether the Eikon  
+console is installed; just type either  
+  
+    MNT GETE32CONS  
+  
+or  
+  
+    MNT GETEIKONCONS  
+  
+with the result that the appropriate ECONS*.DLL files are placed into  
+\e32sys and \work\emarm; note that both these verbs (as usual for  
+Eikon MNT GETxxx verbs) take an optional additional parameter, for  
+the build number (defaulting to the appropriate build number set at  
+the top of the MNT file), so you could type eg  
+  
+    MNT GETE32CONS 061  
+  
+if there is a build 061 of E32 whose console you wished to fetch,  
+without waiting for Eikon as a whole to make a release officially  
+compatible with that E32  
+  
+10) Tracked down and resolved the cause of the previous version of  
+WRITE not being able to load any documents containing pictures; as a  
+result of changes in STORE, it's now important that the document  
+stream is closed before the application is sent notification that its  
+document has changed (since this will cause the application to format  
+the document, which means in turn that ETEXT will go back to the  
+document store to load the embedded picture; however, the latest  
+STORE gives a "File sequence" panic if there's an attempt to read  
+from one stream whilst a previous stream is still open)  
+  
+11) Fixed another problem with WRITE, not being able to do more than  
+one File Open in any one session  
+  
+12) On Vamsi's request, changed the LayoutWidth() function of  
+CEikEdwin from being protected to being public  
+  
+13) Introduced a flag EEikListBoxKeepModel that prevents a  
+CEikListBox from deleting its iModel member in its destructor  
+  
+14) As requested by Brendan, changed the definition of the  
+SaveProfileL() function in CEikDocument to be const  
+  
+From Bill:  
+----------  
+15) Two new "op-codes" for the Eikon Server: EEsOpCodeBringToFront  
+and EEsOpCodeFindClientByName  
+  
+16) Changed the Eikon Server FindClientByName function to do a case  
+independent match on the name  
+  
+From Simon:  
+-----------  
+17) Rewrote EIKCLOCK.* completely, based on a new design (and taking  
+advantage of various features supported by recent changes in the  
+CLOCK DLL)  
+  
+18) The definitions EEikCtAnalogClock and EEikCtDigitalClock have  
+been removed from EIKCTRLS.HRH, being replaced by a single definition  
+EEikCtClock; corresponding changes have been made to resource files  
+  
+19) It should now be much easier for applications to define their own  
+additional types of clocks, by means of supplying their own  
+TEikClockFactory derived class  
+  
+20) Clocks no longer need to have their own window at the Eikon level  
+  
+21) Button arrays no longer need to know about clocks being above  
+them or below them - though this requires all button arrays to have  
+the id EEikButtonArrayId  
+  
+22) For now, clocks have lost the ability to show dates; other  
+changes from the previous version are that analog clocks can't set  
+their background color, and digital clocks can set their background  
+and text colors; the test code in TDialg0 has been updated to show  
+this  
+  
+(note that the default for clocks is now not to show seconds)  
+  
+(TBmp will need some re-writing in the light of all these changes; it  
+fails to compile at the moment, and has been temporarily removed from  
+the set of live Eikon test applications, as listed in  
+..\tsrc\bld.cmd)  
+  
+23) Altered the Directory Contents listbox viewer to calculate its  
+column widths in proportion to the available width  
+  
+(however, TLBox1 often crashes in this build of Eikon)  
+  
+24) As a temporary measure, attempted to deal with possible OOM  
+problems with the file selector by destroying it in all such cases (a  
+bit OTT; this approach will be refined later)  
+  
+From Siamak:  
+------------  
+25) Added default ctor and dtor for CMultiColumnListBoxView  
+  
+26) Added a new public function DrawScrollBarsNow() to  
+CEikScrollBarFrame; this allows controls (such as listboxes) that use  
+a scrollbar frame to be able to force their scrollbars to be drawn at  
+the same time as they call DrawNow() on themselves, rather than to  
+wait for a redraw event (though none of the controls in Eikon call  
+this function yet)  
+  
+27) Modified the behaviour of the multi-column listbox control when  
+cursoring right or left and the next column has fewer items than the  
+current one; previously, the cursor would sometimes fail to move  
+right or left in this case, but now it always moves, adjusting its  
+"y-value" if needed in the process  
+  
+28) Fixed a display bug in scrolling left/right in multi-column  
+listboxes (to do with not erasing the highlight from the "old"  
+current item before scrolling)  
+  
+29) Simplified the implementation of the HandlePointerEventL()  
+function of CEikListBox  
+  
+30) Removed the function CEikListBox::EventOccurredInViewRect()  
+  
+31) Various other changes (minor bug fixes and enhancements) in other  
+parts of listbox code  
+  
+From Brendan:  
+-------------  
+32) Fixed a small bug in which locking a country selector to one  
+country did not always transfer the keyboard focus to the associated  
+city selector  
+  
+33) Removed some defunct const TInt's from EIKWLDSL.CPP.  
+  
+  
+Version 0.01.069  
+================  
+(Made by DavidW, 24 May 1996)  
+  
+Uses:   E32/060 F32/024 STORE/014 BAFL/032  
+        GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034  
+        PDRSTORE/006 PRINT/013 CLOCK/018 GRID/059  
+        CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021  
+        E32TOOLS/026 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+From DavidW:  
+------------  
+1)  Converted to E32(060) and F32(024); actually this was trivial(!)  
+due to the binary compatibility - except that you have to move over  
+to a new set of E32TOOLS at the same time, and slightly change the  
+format of your *.OBY file; note too that you now invoke ROMBUILD  
+instead of E32ROM  
+  
+2)  Converted to STORE(014) GDI(023) ETEXT(037) etc - which required  
+rather more of a change - see the release notes of these other  
+components for more details  
+  
+(for the first time ever, Eikon now builds in Gcc without any  
+warnings whatsoever)  
+  
+3)  Commented back in the code to allow Date and Time fields to be  
+entered, eg in TEdwin0  
+  
+4)  Deleted the file ..\inc\eikclipb.hrh as no longer required (the  
+TUid values for clipboard types are now defined in the header files  
+for the classes that understand these types, eg TXTRICH.H)  
+  
+5)  Made CEikGridWin::ConstructGridWinL an EXPORTed function  
+  
+6)  Changed the SetText() function of CEikButton to be SetTextL  
+instead, and made it accept a TDesC* instead of an HBufC; the button  
+now deletes any previous texts it had (fixing a bug noted by Adam);  
+note that the function now creates an HBufC internally, so there is  
+no need for callers to do the same  
+  
+7)  Provided public TextView() and TextLayout() accessor functions for  
+the iTextView and iLayout data members of CEikEdwin  
+  
+From Vamsi:  
+-----------  
+8)  New module EIKRHCMP.* containing the CEikEdwinRichCmp subclass of  
+CEikEdwinCmp, which has additional support for rich text editing  
+  
+9)  Eg CEikEdwinRichCmp contains support for Ctrl-B toggling the bold  
+state, etc (code moved here from Write)  
+  
+10) Changed Write to use CEikEdwinRichCmp  
+  
+11) Renamed the iGlobalText parameter of CEikEdwinCmp to iCmpText  
+  
+12) Fix to LayoutWidth() function in CEikEdwin, to take account of  
+the width of any margin cursor  
+  
+From Neil:  
+----------  
+13) Improved the grip drawing code for scrollbar thumbs so that the  
+grip is always centered as well as possible  
+  
+14) Improved TScrlB0 to allow more flexible testing of larger  
+scrollbars  
+  
+15) More changes to CEikEdwin to improve the scrollbars under partial  
+formatting  
+  
+From Duncan:  
+------------  
+16) Converted the Eikon code for creating picture headers and doors  
+to have NewL functions in its API  
+  
+17) Took advantage of changes in GDI to make greater use of native  
+chevron streaming operators eg for TMargins  
+  
+From Doug:  
+----------  
+18) Took advantage of the CTextView::NotifyForwardChangedL() function  
+to simplify some code in CEikEdwinCmp::ApplyParaFormatL() (and to  
+improve its functionality)  
+  
+(later changed by DavidW to call NotifyGlobalChangeL() instead)  
+  
+From Brendan:  
+-------------  
+19) Added a virtual function RWindowGc& CEikTagBase::ControlGc()  
+const, which the Draw function uses to set its Gc before drawing its  
+text - this allows sneaky things to be done in derived classes, such  
+as setting a patterned brush, and will allow the font preview  
+specializations to be moved out of this base class in due course  
+  
+(Note: larger changes to the API to the more basic function  
+CCoeWinArea::SystemGc() are planned for shortly after J-Day)  
+  
+From Siamak:  
+------------  
+20) CEikListBox now sets the flag ECoeWinAreaAutoValidate, which will  
+cut down in flicker in cases when a DrawNow() is called when the list  
+box area is already marked as invalid (eg because a dialog has been  
+destroyed); this change should be completely safe since the Draw()  
+function of CEikListBox always draws to all pixels (and it shouldn't  
+introduce any extra flicker, because the background color of the  
+listbox window has been set to NULL)  
+  
+21) On Bill's suggestion, changed the list box functions  
+SetItemFont(), SetItemHeight() and SetColumnWidth() so that they no  
+longer take an optional redraw flag as their second argument;  
+instead, it is now the programmer's responsibility to ensure that the  
+function HandleListUpdateL() is called after one or more such  
+operations on a listbox  
+  
+22) Also on Bill's suggestion, modified CEikListBox::Draw() so that  
+clearing of the margins and drawing of the borders now takes place  
+before the drawing of the items  
+  
+23) Added a new (temporary) flag EEikListBoxNoBorder to EIKCTRLS.HRH;  
+if this is set, CEikListBox::BorderWidth() returns 0 and the  
+DrawBorders() function does nothing  
+  
+24) Modified the SelectionIndexes() functions of CEikListBoxView and  
+CEikListBox to return a CArrayFix<TInt>* instead of a  
+CArrayFixFlat<TInt>*  
+  
+25) Modified CMultiColumnListBoxView::SetColumnWidth() so that it  
+sets the new top item index by calling SetTopItemIndex() rather than  
+setting this variable directly  
+  
+26) Modified CEikDirContentsListBox::HandleListUpdateL() so that it  
+no longer asks the view to recalculate its bottom index (since this  
+task is now performed by the view when its top item index is set)  
+  
+27) Fixed a bug in the MoveToItemRight() and MoveToItemLeft()  
+functions of CMultiColumnListBoxView (the "old" highlighted item  
+wasn't being redrawn)  
+  
+28) Various other internal listbox code changes.  
+  
+  
+Version 0.01.068  
+================  
+(Made by DavidW, 23 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+From Ian:  
+---------  
+1)  New "Insert field" dialog, in the new module EIKFLDD.*, for the  
+user to specify a field type to insert into an editor; currently the  
+only choice offered is a "Dummy" field, but the dialog definition  
+also has "Date" and "Time" fields commented out for now (these are  
+supported by versions of EText from 035 onwards)  
+  
+2)  CEikEdwin now supports functions InsertFieldL(),  
+UpdateCurrentFieldL(), and UpdateAllFieldsL(), layering over editable  
+text functionality  
+  
+(the Eikon update-all-fields code isn't very satisfactory at the  
+moment since it involves two redraws of the screen, and loses the  
+cursor position - this will be sorted out shortly)  
+  
+3)  New function RunFieldDialogL() in CEikEdwinCmp, launching the  
+Field Dialog, and placing the result into the edit window  
+  
+4)  New standard commands in EIKCMDS.HRH: EEikCmdEditUpdateAllFields  
+and EEikCmdEditUpdateCurrentField  
+  
+5)  New menu commands added to TEdwin0 to test the above features  
+(the Edit menu now has a Fields cascade submenu)  
+  
+From Neil:  
+----------  
+6)  New class TEikDrawUtils in the new module EIKDRAW.*, which is  
+intended to become the home of all Eikon drawing utility functions,  
+such as DrawHorizMarkerLine() and DrawSunkenBox()  
+  
+7)  Whereas the above-mentioned functions used to belong to  
+CEikonEnv, they are being moved to TEikDrawUtils, and with that move,  
+greater flexibility is allowed for the Gc used for the drawing; by  
+default, a TEikDrawUtils uses the system gc, but one can be created  
+using any other CBitmapContext - eg a context for drawing to an  
+off-screen bitmap  
+  
+8)  For now, the existing API to CEikonEnv drawing utility functions  
+has been preserved (with some of the implementation starting to be  
+moved to TEikDrawUtils), but after J-Day the floodgates will open  
+  
+9)  Changed CEikScrollBarThumb to draw its grip lines to an  
+off-screen bitmap, on a thumb-resize, and subsequent drawing blits  
+from that off-screen bitmap to the thumb; this eliminates the 'lag'  
+effect in drawing the grip on to a very long scrollbar thumb  
+  
+(Note: the changeover hasn't been completed yet, with the result that  
+some thumb griplines get drawn in slightly wrong places)  
+  
+10) A knock-on effect of the above changes is that SetModel() has to  
+become SetModelL() instead; changed test code as required by this  
+  
+11) Fixed a bug in laying out scrollbar components  
+  
+From Bret:  
+----------  
+12) Caught up with recent changes in the set of fonts available, so  
+that all the standard calendars (as visible eg in TCal) are drawn  
+with sensible fonts  
+  
+From Vipul:  
+-----------  
+13) Made the HighlightToL() function of CEikMenuBar public instead of  
+private, for the sake of Opl  
+  
+From Siamak:  
+------------  
+14) Speeded up horizontal scrolling in multi-column listboxes by  
+scrolling the window and redrawing only those columns that need to be  
+redrawn  
+  
+From Vamsi:  
+-----------  
+15) Added a Paginate dialog to EIKPRTDG.* (no test code for in Eikon  
+yet though)  
+  
+16) New standard menu command in EIKCMDS.HRH: EEikCmdPrintPaginate  
+  
+From DavidW:  
+------------  
+17) "Quit" is dead, having been systematically replaced, throughout  
+the \eikon group, by "Exit", following the Protea Style Guide; note  
+that the hot-key for "Exit" is CTRL('e') not CTRL('q')  
+  
+18) The "Quit, losing changes" command has been removed completely,  
+also as per Style Guide recommendations; applications that would  
+otherwise have had a "Quit, losing changes" command should just stick  
+with a "Revert to saved" command  
+  
+19) Anyone requesting a CEikDateEditor in a dialog will now get a  
+CEikPopoutDateEditor, which is the same thing, but with a "tab"  
+popout button added, giving access to the 1/3/12 month calendar suite;  
+all being well, this calendar popout feature will shortly be moved  
+into the standard CEikDateEditor class, and CEikPopoutDateEditor will  
+be removed  
+  
+20) CEikHotKeyTable now supports hot-keys like '(', which have the  
+Shift modifier held down when they are actioned; you define them in a  
+resource file just as a PLAIN_HK, eg (from the latest TMENUB0.RSS)  
+  
+    PLAIN_HK { command=EMenuCommandToolsSix; key='(';},  
+  
+21) Made some of the hot-keys in TCal more sensible  
+  
+22) Changed a few pieces of resource text from eg "Insert Field" to  
+"Insert field", and "Select Date" to "Select date", in line with Style  
+Guide recommendations for only capitalizing the first word in such  
+phrases  
+  
+23) If someone tries to confirm a SaveAs dialog without providing a  
+(non-wild card) filename, the dialog now traps this case and gives an  
+error message  
+  
+24) More internal changes in the Demo test app.  
+  
+  
+Version 0.01.067  
+================  
+(Made by DavidW, 22 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+A note about the Protea M3 and J-day releases:  
+----------------------------------------------  
+I've been waiting for a consistent set of upstream software  
+components, compatible with Wserv 033 (or later) and EText 037 (or  
+later), before releasing a matching Eikon to serve as the basis for  
+the M3 Protea ROM release (originally scheduled for 4pm today).  
+  
+However, this may take some time to materialize: a fairly significant  
+rewrite of PDRSTORE is still underway, and there's some more  
+perturbations pending from STORE 014 (newly released) and, possibly,  
+from an important pending change in EXE- and ROM-building tools  
+(which will allow software currently requiring an 8Mb ROM to fit  
+inside 4Mb after all).  
+  
+I'll keep monitoring the situation closely.  My present best guess is  
+that we may omit the M3 release altogether, and I'll just aim for the  
+J-Day frozen release of Eikon, to appear some time Friday evening  
+(where "evening" may need to be interpreted liberally!)  
+  
+From Siamak:  
+------------  
+1)  As suggested by Bill, the listbox control now uses the system gc  
+for any drawing work it has to do itself (eg drawing a border), and  
+it no longer creates a gc to pass to the listbox view class  
+  
+2)  Taking a leaf out of what happens in CTextView, the CListBoxView  
+class now creates a gc by itself, for its own drawing purposes; in  
+order to be able to do this, it needs to be passed a CGraphicsDevice*  
+in its ConstructL function; as well as being a conceptual  
+improvement, this change reduces the number of lines of code in  
+interfaces to setting up listbox systems  
+  
+3)  The above changes mean that the HandleRedrawEventL function in  
+CEikListBox is dispensed with (the version from CCoeWinArea is used  
+instead); the function CreateGraphicsContextL also disappears from  
+this class  
+  
+4)  Modified various list box scrolling functions to lessen the  
+amount of actual redrawing that occurs (relying on scrolling for the  
+other items)  
+  
+5)  Modified CEikListBox::SetItemFont() so that it doesn't panic if  
+it has no view or item viewer at the time of the call  
+  
+6)  On Simon's suggestion, made CListItemViewer::SetViewRect()  
+virtual  
+  
+From SimonC:  
+------------  
+7)  Took advantage of above listbox changes to improve the file  
+selector listbox code  
+  
+From MartinB:  
+-------------  
+8)  Fixed the height selection logic in the Font Dialog so that if an  
+exact match is not found, then the next smallest font is chosen  
+  
+9)  Stopped displaying fonts smaller than 4 points high in the font  
+dialog (these fonts exist for the sake of preview and zooming, not  
+for being selected in their own right); this also gets rid of the  
+embarrassment of having two 1-point fonts to choose from  
+  
+10) Allowed the user of the font dialog to specify a graphics device  
+(there's an additional parameter in the ctors of CEikFontDialog), so  
+that the dialog can be used to select fonts from (say) a printer; the  
+default (when the graphics device pointer is passed as NULL) is, as  
+before, to use the screen device  
+  
+11) Added some ...Ls to function names where needed in CEikFontDialog  
+  
+12) Stopped EXPORTing some private functions from CEikFontDialog  
+  
+13) Other internal changes to font dialog code  
+  
+From Brendan:  
+-------------  
+14) Changed the SetState() function of CEikTagBase to SetStateL(), to  
+allow this to be polymorphic with the function in CCoeControl  
+  
+From DavidW:  
+------------  
+15) Internal changes to the Demo test application (many more are  
+still pending)  
+  
+16) The function CEikEdwinCmp::RunFontDialogL now takes an optional  
+additional CGraphicsDevice parameter, which is passed on in turn to  
+the ctor of CEikFontDialog.  
+  
+  
+Version 0.01.066  
+================  
+(Made by DavidW, 21 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+Uses EALWL 020 for the first time  
+  
+From Julian:  
+------------  
+1)  The Eikon print dialog now has the facility for setting the page  
+range to print  
+  
+2)  If the total number of document pages is just 1, the page range  
+control gets dimmed (though currently there's no visual indication of  
+this)  
+  
+3)  Temporary new function NewMinAndMax() for an Integer Editor,  
+which does much the same job as UpdateMinAndMax(), except that it  
+allows the maximum number of digits to change (eg from a 1-digit  
+editor to a 2-digit), which is alright provided the function is  
+called early enough in dialog initialization (eg from the  
+PreLayoutDynInitL); these two functions will probably be merged in  
+due course  
+  
+4)  Modifications to the Eikon print preview window to ensure that it  
+can deal with a multi-page preview  
+  
+5)  Modifications to TEdwin1 test code to allow multi-page printing  
+(by printing the same thing on several different pages)  
+  
+6)  Changed the button array in the print preview control to use the  
+"dense packing" flag, and had to make minor adjustments to the button  
+array code as a result (and to file selector code that uses the  
+button array code)  
+  
+7)  The print preview window now exits on receipt of Esc  
+  
+8)  Workaround in integer editor to avoid a panic when an integer  
+editor only has one digit and when a character is typed into it  
+(which could sometimes cause a "hide cursor" panic)  
+  
+From Siamak:  
+------------  
+9)  Fixed a bug in CListBoxView::Draw(), not calculating the empty  
+area at the bottom of the list properly in all cases  
+  
+10) Changed CEikListBox::UpdateScrollBarsL() to call Invalidate(), as  
+it used to do (this had been changed to call DrawNow(), but that  
+caused more flicker)  
+  
+From Vamsi:  
+-----------  
+11) Altered CEikEdwin code to take the width of any line margin  
+cursor into account in the SetWordWrapL() and SetScrollBarsL()  
+functions  
+  
+12) The SetLineCursorFormatL() function of CEikEdwin can now be  
+called to change the line cursor format, as well as to initialize it;  
+CEikEdwinCmp now calls this function whenever the font of its main  
+text is changed, so that the line cursor font changes in synch  
+  
+13) New private property iLineCursorWidth in CEikEdwin, to cache this  
+result  
+  
+From Brendan:  
+-------------  
+14) Removed all virtual inline functions from EIKTAG.* and EIKWLDSL.*  
+(by either making them non-inline or making them non-virtual)  
+  
+15) World selectors now wrap around from the first entry to the last  
+entry, and vice versa, rather than getting stuck at the ends  
+  
+16) Removed all occurrences of "temporary error message" from world  
+selector code, eg when an unmatchable key was pressed  
+  
+From DavidW:  
+------------  
+17) Worked through all mixin classes in Eikon, adding EXPORTed ctors  
+as required in a few cases  
+  
+18) Removed the function MListBoxModel::LbmCBase() as an anachronism  
+  
+19) Various changes to EIKMENUB.* and EIKMENUP.* to support menus  
+being defined in memory, ie from other than resource files  
+  
+20) New test application TMenuP2 (based on an earlier version written  
+by Vipul) showing how to define menus in memory, and testing that  
+(eg) cascades can be supplied from a mixture of resource file and  
+in-memory definitions; TMenuP2 runs on the rack as well as in WINS  
+  
+21) New classes CEikMenuItemArray and CEikMenuTitleArray, which are  
+essentially the "model" classes for menu panes and menu bars  
+respectively; these two classes are fairly simple subclasses of  
+variable arrays (more code from the menu control classes could  
+doubtless be transferred into these model classes)  
+  
+22) On a suggestion from Brendan, the Eikon Server now initializes  
+the Window Server keyboard repeat settings, allowing much quicker key  
+repeats to be received (after an initial pause); this makes world  
+selectors seem much zippier than before, and doubtless will have an  
+effect on other "continuous moving" keyboard actions.  
+  
+  
+Version 0.01.065  
+================  
+(Made by DavidW, 20 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/019  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+*Not* binary compatible with Eikon 064 - so don't take this, if you  
+want your app to remain compatible with the set included in the M2  
+Protea ROM  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Uses GRID 058 for the first time  
+  
+From Neil:  
+----------  
+1)  Gave scrollbars a well-needed cosmetic facelift: the thumb is now  
+drawn differently, and looks more 3-D  
+  
+2)  The scrollbar thumb now sports a "grip" perpendicular to the  
+direction of travel, to indicate its "moveability"  
+  
+3)  The scrollbar shaft now has a dithered gray background  
+  
+4)  Changed the feedback given when a scrollbar thumb is being  
+dragged: the dotted rectangle is gone, being replaced by a quite  
+different effect (try it and see)  
+  
+5)  Also fixed a bug which reported all pointer events on the thumb  
+as drag events; now only drag events get reported  
+  
+6)  As an experiment, in test code TScrlB0 changed to using an idle  
+object to scroll the bitmap in reponse to scroll events from the  
+scrollbars; the effect under WINS is a lot more noticeable than on  
+the rack  
+  
+7)  New function DrawVertMarkerLine() in CEikonEnv, similar to the  
+existing horizontal version  
+  
+From SimonC:  
+------------  
+8)  Fixed some bugs regarding reading/writing the registry variable  
+determining whether, by default, file selectors show the extensions  
+of filenames  
+  
+9)  Added new error message "Cannot be read" to EIKON.RSS, to be used  
+eg instead of either "Directory cannot be read" or "Drive cannot be  
+read" in cases when the information returned by F32 does not allow  
+one of these two messages to be used unambiguously  
+  
+10) Speeded up the time in which the file browser is drawn to the  
+screen, bu not population the listbox models or creating the  
+scrollbars until the rest of the control is drawn; this has halved  
+the time elapsed between pressing the Browse button and the browser  
+being drawn, in some cases, though it also means that the Draw()  
+function could now leave  
+  
+11) Integrated the file browser into the standard File SaveAs dialog  
+  
+12) Modification to CEikListBox::HandlePointerEventL to stop the  
+highlight from jumping when you click on an item other than the  
+current item, in a listbox that does not have the focus  
+  
+From Vamsi:  
+-----------  
+13) New function SetZoomFactor(TZoomFactor* aZoomFactor) in CEikEdwin  
+supporting zooming Edwins (by default, no zoom factor is used)  
+  
+14) See TEdwin0 for an example of using zoom in an Edwin  
+  
+15) New function SetLineCursorFormat(TCharFormat& aFormat) in  
+CEikEdwin allowing the format of the line (or "margin") cursor to be  
+set; again, see TEdwin0 for an example (it's an acknowledged  
+limitation of Form that the line cursor area isn't always correctly  
+redrawn)  
+  
+16) Set values for the maximum lengths of the edit combo boxes used  
+in the standard Text Find and Text Replace dialogs (previously, these  
+values defaulted to being zero, ie no maximum length)  
+  
+From Julian:  
+------------  
+17) Removed the home-grown clipboard management functions in  
+CEikEdwin, in favour of using the ones provided by EText  
+  
+(there are various known problems with these clipboard functions,  
+some of which have already been fixed by a release of EText that  
+cannot, however, presently be used by Eikon)  
+  
+18) New IsHorizontal() function in CEikGray16Palette  
+  
+From Siamak:  
+------------  
+19) Speeded up the clearing of the empty portion of the listbox  
+viewing area, by modifiying CListBoxView::Draw()  
+  
+20) Added CMultiColumnListBoxView::Draw(), since MC listboxes have to  
+use a different mechanism for clearing the empty portion at the end  
+of their items  
+  
+21) Added SetItemFont() function to CEikListBox  
+  
+22) Fixed a bug in CEikListBox::SetItemHeight(), and redefined this  
+function in CEikMultiColumnListBox, since additional work is required  
+in this case to change the item height  
+  
+23) Improvements to the way multi-column listboxes scroll in response  
+to keypresses  
+  
+24) Fixed a bug that occurred when using character matching in  
+multi-column listboxes  
+  
+25) Modified CListBoxView::SetTopItemIndex() to make it safer to use,  
+and redefined it in CMultiColumnListBoxView to make sure that the  
+horizontal scroll offset is updated  
+  
+26) Modified the ListBoxView::Draw() functions so that they cope  
+better with listboxes whose models contain no data  
+  
+27) Modified CListBoxView::SetItemHeight() and  
+CMultiColumnListBoxView::SetColumnWidth() so that they recalculate  
+the new top item index when the item height or column width change  
+  
+28) Other internal changes to listbox code  
+  
+From DavidW:  
+------------  
+29) Moved the code initializing the File Browser Format registry  
+entry from the Eikon System application (EikSys.PRG) to the Eikon  
+Server (so that it will still apply even when the Eikon System  
+application is replaced by the real System application, System.PRG)  
+  
+30) Changed the character used for the line cursor ("margin cursor")  
+in Edwins from '+' to a right-pointing chevron  
+  
+31) After some experimentation on the rack, changed the initial  
+double-click settings, to allow two clicks up to 10 pixels apart to  
+count as a potential double click  
+  
+32) Temporary kludge to avoid the bug whereby the Base would crash if  
+the user clicked twice on the program bar, on icons with no matching  
+application, without clearing the alert in the meantime (this will  
+require changing to a proper alert service, in the Eikon Server,  
+before it can be fixed properly)  
+  
+33) Started making changes to the menu code, to offer better support  
+for menus defined in memory, and not via resource files (based in  
+part on work by Vipul); this isn't complete yet, though some points  
+are clear enough:  
+  
+34) Both the menu bar and the menu pane now respect the flag value  
+EMenuArrayOwnedExternally (set privately in iFlags) and if this is  
+set, don't do a delete on the menu array  
+  
+35) New virtual function RestoreCommandWindowL() in MEikMenuObserver,  
+with the default implementation  
+  
+EXPORT_C void MEikMenuObserver::RestoreCommandWindowL  
+                        (CCoeControl* aCommandWindow,TInt aWindowId)  
+    {  
+    TResourceReader reader;  
+    CControlEnv::Static()->CreateResourceReaderLC(reader,aWindowId);  
+    aCommandWindow->RestoreL(reader);  
+    WarnCommandWindowDisplayL(aWindowId,aCommandWindow);  
+    CleanupStack::PopAndDestroy();  
+    }  
+  
+which is suitable for all "standard" Eikon applications, but can be  
+overridden eg by OplR  
+  
+36) New function SetItemArray(CMenuItemArray*) for CEikMenuPane, and  
+SetMenuTitleArray(CMenuTitleArray*) for CEikMenuBar, that should be  
+suitable candidates for calling inside a variant  
+RestoreCommandWindowL() function  
+  
+37) Note that the parmeter to the RestoreL() functions of  
+CEikMenuPane and CEikMenuBar have changed from a TInt to (as is more  
+standard) a TResourceReader&  
+  
+38) Changed the LargerBoldSystemFont() function of CEikonEnv to be  
+just BoldSystemFont(), since that font isn't actually any larger than  
+the standard system font (apart from the fact that it's bold).  
+  
+  
+Version 0.01.064  
+================  
+(Made by DavidW, 16 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/057  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/019  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+This release is binary compatible with 063; other Eikon changes that  
+have been submitted to me will remain on my in-tray until after the  
+M2 release of the Protea ROM has been prepared  
+  
+To reiterate, there's no need for any app that works with Eikon 063  
+to rebuild with Eikon 064  
+  
+Uses EAlWl 019 for the first time  
+  
+From DavidW:  
+------------  
+1)  J-Day is here already!  More precisely, the Eikon Server now  
+tests the date  on startup, and if this is less than 1990, the date  
+gets set to J-Day (31st May 1996), and the time gets set to 4pm  
+  
+(but for some reason the date actually ends up at 10:10 on the 2nd of  
+May 1996 - as evidenced eg by a printout of the date added to the  
+Eikon System screen on startup)  
+  
+2)  On a suggestion from Bill, changed the Small System Font (as used  
+for some dialog buttons and for auxiliary menu display text) back to  
+what it was before, ie Arial 154, since this still seems to exist in  
+EON4.GDR, and (being non-bold) looks better for this purpose  
+  
+3)  Eikon.OBY now contains support for 8 Mb ROMs (eg for debugging  
+purposes!); alter the "-dROMMEGS=4" in MNT BLDIMG to "-dROMMEGS=8"  
+(you'll need an UTC bootrom.bin for this to work, though - see  
+ROM_PROT release notes for more details)  
+  
+4)  Eikon.OBY now contains support for setting the ROM build number  
+automatically from the %_ver% in the MNT.CMD (but I guess that E32ROM  
+is seeing the "0" in eg "064" and setting the build number to 0  
+rather than to 064 as intended)  
+  
+5)  Fixed the Eikon implementation of ECONS.DLL to display a cursor  
+  
+6)  Changed the Eikon implementation of ECONS.DLL not to clear to the  
+end of the line on a <CR>, thereby bringing it into conformance with  
+the E32 Text Windows implementation, and solving the problem of the  
+commands typed into eg TWIN.EXE being overwritten  
+  
+From Vamsi:  
+-----------  
+7)  Fixed a bug in the font dialog whereby it wouldn't exit if the  
+user pressed Enter without making any changes in the dialog (the  
+responsibility for testing for changes in the character format passes  
+to the caller, eg CEikEdCmp)  
+  
+From Bill:  
+----------  
+8)  Tweak to CEikonEnv::DrawRaisedBox(), so that buttons (and other  
+users of this functions) get their top and left borders drawn with a  
+single line of white  
+  
+From Jezar:  
+-----------  
+9)  Made menu panes call DrawNow() at the end of their  
+StartDisplayingMenu() routine, and set the flag  
+ECoeWinAreaAutoValidate for them, with the joint result that they  
+appear more responsive than before (they don't have to wait for a  
+redraw before their contents get filled in)  
+  
+Important: The death of \eikon\system:  
+--------------------------------------  
+10) Eikon no longer releases any files called SYSTEM.*; all these  
+files have been renamed to EIKSYS.*, to avoid a name-clash when the  
+(real) System application is present as well  
+  
+11) The source directory \eikon\system has been replaced by a (fairly  
+similar) source directory \eikon\eiksys  
+  
+12) There's a new verb in MNT, PROMOTE, with the following contents:  
+  
+if exist \e32sys\eiksys.prd copy \e32sys\eiksys.prd \e32sys\system.prd > nul  
+if exist \e32sys\eiksys.prg copy \e32sys\eiksys.prg \e32sys\system.prg > nul  
+  
+which you can use to "promote" the Eikon System to take the place of  
+the real System application, in the absence of a System application  
+compatible with your current build of Eikon  
+  
+13) Eikon.OBY renames the GCC version EIKSYS.PRG to SYSTEM.PRG.  
+  
+  
+Version 0.01.063  
+================  
+(Made by DavidW, 15 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/012 CLOCK/017 GRID/057  
+        CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/018  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Uses PRINT 012 and TBOX 052 for the first time  
+  
+You will need to add PREV.DLL to your *.OBY files  
+  
+(but TBOX has removed the EXPORT_C status of one of its DrawBorders  
+functions again, so to avoid a link error I've had to comment out the  
+critical line in Eikon's Paragraph Borders Preview control)  
+  
+(also this PRINT seems to have lost the ability eg to preview  
+Landscape pages and make them look like Landscape)  
+  
+*** It will be this release of Eikon and other system components (or  
+releases that are binary compatible with these) which forms the basis  
+of the M2 release of the Protea ROM at around 4pm tomorrow ***  
+  
+From Natascha:  
+--------------  
+1)  Picture storing/restoring to and from file now works again in  
+Write, both for door pictures and for non-door pictures  
+  
+(there's a known EText bug that crashes if there's a picture first  
+thing in a document)  
+  
+2)  Various minor improvements to code in the EIKEDCMP, EIKFONTD and  
+EIKPARAD modules  
+  
+From Julian:  
+------------  
+3)  New module EIKPRTPV.* containing Eikon support for the print  
+preview control and window  
+  
+4)  TEdwin1 now has a Print Preview menu command; this only shows one  
+page (because TEdwin1 only ever has five lines of data), but other  
+clients of the print preview system should be able to get more than  
+one page displayed  
+  
+From Bill:  
+----------  
+5)  Changed CEikButtonBase::DrawButtonShadow to be protected rather  
+than private  
+  
+6)  Removed the CEikButton::SetBmp function that was added recently,  
+since it is no longer required  
+  
+From Neil:  
+----------  
+7)  Modified CEikListBox::HandlePointerEventL so that response to  
+drag events in listboxes is much faster than before (possibly by as  
+much as 200%)  
+  
+From Siamak:  
+------------  
+8)  Fixed various bugs show up by further testing of listboxes (and  
+multi-column listboxes)  
+  
+From SimonC:  
+------------  
+9)  Added a menu option in the Eikon System screen for file selectors  
+to hide/show file extensions; this preference is stored in the  
+registry, and is effective in all applications  
+  
+10) Changed the file selector to create a radio button group instead  
+of a choice list of drives, if there are only two drives; this  
+required some extra functions to be added in EIKRBUT.CPP, and  
+changing CalculateRequiredSizeL to be public  
+  
+11) Removed CEikButtonArray::OfferMnemonicToControlsL as it wasn't  
+needed  
+  
+12) Changed the GetClientRect() function of CEikAppControl to take  
+account of a second tool bar, if one exists  
+  
+13) Horizontal toolbars can now be placed at the bottom of the screen  
+(before they were restricted to being at the top)  
+  
+14) Slightly speeded up the drawing of items in a Directory Contents  
+listbox  
+  
+15) Added first-letter matching to the Directory Contents listbox  
+  
+16) Fixed bugs which caused the file selector to crash when Browse  
+was pressed with "(No files)" showing, and C: to be shown as the  
+initial drive selected regardless of what was really selected  
+  
+17) Changed all calls to User::Panic to call Eikon's Panic instead  
+  
+From Brendan:  
+-------------  
+18) Updated alarm alerts to understand snoozing, ie no longer faking  
+paused sounds (by setting quiet periods), and updated function names  
+to reflect current thinking (Snooze -> PauseSound and DeferSound ->  
+QuietPeriod)  
+  
+(There's a known bug in the alarm/world server that can result in a  
+panic when the server is terminated and there are outstanding alarms;  
+there's also a known bug in the alarm server that panics when alarm  
+sounds have been switched off, and sound gets paused)  
+  
+From DavidW:  
+------------  
+19) Added a function CEikonEnv::GetErrorText(TDes&, TInt), to provide  
+text corresponding to a given error value (eg -1, -2, ...); this  
+funciton expects the passed buffer to be large enough (no #define is  
+provided for a suitable length yet, though 40 would do for now); the  
+text is read from the Eikon resource file  
+  
+20) Spent some more time trying to rename Eikon's version of ECONS.DLL  
+to EIKCNS.DLL (since this "overwriting" problem has caused grief and  
+wasted time to quite a few people), but got defeated by the crudeness  
+of the MAKTRAN and E32ROM tools, so gave up again (for now).  
+  
+  
+Version 0.01.062  
+================  
+(Made by DavidW, 14 May 1996)  
+  
+Uses:   E32/059 F32/023 STORE/013 BAFL/030  
+        GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032  
+        PDRSTORE/005 PRINT/011 CLOCK/017 GRID/057  
+        CONE/076 ETEXT/034 TBOX/051 FONTS/023 EALWL/018  
+        E32TOOLS/023 EIKTOOLS/104 RCOMP/304  
+  
+The first release with E32/059 et al  
+  
+There's clearly a big speed up on the rack, but just as clearly  
+there are places where things still need to be speeded up further  
+  
+See my u:\eik062b.img and u:\eik062c.img  
+  
+WINS Ascii and GCC Release variants (the WINS Release built badly,  
+and I don't have time to rebuild it *yet* again just now)  
+  
+The new set of Fonts (023) has most of the "Arial" set of fonts  
+excluded from it, so that we are running for the first time with  
+basically the EFF set of fonts (as doctored and extended by  
+Natascha); this has had a few unexpected consequences for some pieces  
+of code (eg 1-month and 3-month calendars), which will need their  
+font-specification code tweaked before normal service is resumed  
+  
+Many other developments come "automatically" with this version, eg  
+you can now run the "Text Shell" by choosing TWIN.EXE from the Eikon  
+System screen's "Run EXE command"  
+  
+Pointer events get delivered accurately for rack-Cs as well as  
+rack-Bs now, though all off-screen pointer events still fail to get  
+delivered in either case  
+  
+Preparing for Protea M2 ROM:  
+----------------------------  
+Due to delays in preparing this Eikon release, I'm slightly altering  
+the proposed timetable for building the M2 (Milestone 2) ROM for  
+Protea; I now propose to do another (consolidation) release of Eikon  
+tomorrow morning (Wed 15th), which will provide the basis for the M2  
+release, to be made at 4pm on Thursday 16th (24 hours later than  
+previously planned)  
+  
+Sizes (GCC)  
+-----------  
+eikon.dll       374,276  
+eiksrv.exe        4,100  
+system.prg       20,996  
+econs.dll         7,172  
+eikon.rsc         6,025  
+system.rsc        1,750  
+*.pbm            48,112  
+  
+From Siamak:  
+------------  
+1)  CEikListBox::HandleListUpdate() now only draws the view contents,  
+and doesn't bother with redrawing the borders/margins  
+  
+2)  A couple of unnecessary redraws have been eliminated from  
+CEikListBox::HandlePointerEventL()  
+  
+From Vamsi:  
+-----------  
+3)  Improved Font Dialog so that it remembers the font size, on  
+changing typeface, and selects the font size nearest to this, rather  
+than defaulting to the smallest font size  
+  
+From Neil:  
+----------  
+4)  Improved the behaviour of scrollbars under partial formatting in  
+Edwin; it's still not perfect, but it's better than the "half-way"  
+state they were left in previously.  
+  
+  
+Version 0.01.061  
+================  
+(Made by DavidW, 13 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/029  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016 GRID/056  
+        CONE/075 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+From Bret:  
+----------  
+1)  Date editors now have the option for a tab button that pops out a  
+calendar dialog suite; see the date editor in TCal for an example  
+  
+2)  This is presently implemented as a new class CEikPopoutDateEditor  
+in EIKNUMED.*, but may in time be merged with the original  
+CEikDateEditor  
+  
+From Siamak:  
+------------  
+3)  Fixed bug (reported by Bill) in multi-column listboxes, by  
+redefining the function SetTopItemIndex() in CEiKMultiColumnListBox  
+  
+4)  Removed some unnecessary #includes from EIKSLBX  
+  
+5)  Converted all the non-standard asserts used in EIKLB?.CPP  
+  
+From Vamsi:  
+-----------  
+6)  On the suggestion of MartinB, added another constructor to  
+CEikFontDialog, which doesn't take the undetermined mask or the TDes  
+for selected text  
+  
+7)  Streamlined some of the implementation of CEikFontDialog, by  
+making more use of functionality from TXTFRMAT.*  
+  
+From Julian:  
+------------  
+8)  New classes CEikRubberBand and CEikRubberLine in the new module  
+EIKRUBTL.*, making code originally developed for Paint available for  
+wider use, in particular for picture scaling and cropping inside rich  
+text editors (not implemented yet)  
+  
+9)  New class CFrameOverlay, intended to work to some extent in  
+conjunction with the rubber band tool classes, but also being  
+independently useful; this presently exists in a module FRAME.* in  
+the Eikon group, but ought to migrate further before long  
+  
+From DavidW:  
+------------  
+10) Converted ..\tsrc\eikon.oby to be pre-processed before generating  
+a test ROM, to improve support for ROM variants (copying from  
+\rom_prot\group); also created MNT BLDIMG verb, with an optional  
+variant parameter (defaulting to RB, to create a rack-b test ROM)  
+  
+11) Fixed the "ear stuck down" bug when a Leave occurred inside  
+CEikonEnv::OfferEarsEventL  
+  
+12) Preliminary work on a new test application ..\tsrc\demo.*, very  
+loosely derived from the former (broken) test app ..\demo\demo.*,  
+which will before long demonstate Eikon support for apps with  
+rewritable stores.  
+  
+  
+Version 0.01.060  
+================  
+(Made by DavidW, 10 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/029  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016 GRID/056  
+        CONE/075 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Includes Grid for the first time; you may need to alter your MNT.CMDs  
+to reflect this  
+  
+From SimonC:  
+------------  
+1)  The Open File dialog now launches a file browser when the Browse  
+button (used to be "Directories" button) is pressed; this allows  
+users to change directory, or to select an individual file or  
+directory  
+  
+(The relation between the standard listbox popped out from the  
+filename selector control by Tab, and this file browser activated by  
+Browse, has still to be resolved at the spec level: ideas welcome!)  
+  
+2)  Changed the constructor for the file selector dialog to take just  
+one TDes*; the initial path to be shown should be passed in, and the  
+path selected will be passed out  
+  
+3)  Fixed various bugs that were shown up by using the file browser  
+properly for the first time  
+  
+4)  Tidied up TLBox1 in the wake of the file selector code having  
+been moved out of it  
+  
+5)  Renamed CFileSelector to CEikFileSelector  
+  
+6)  Improved error handling is an invalid drive is selected  
+  
+7)  Added an OfferMnemonic function to CEikButtonArray, so that the  
+button array in the file selector is accessible via the keyboard  
+  
+8)  On Bill's suggestion, altered several functions to take a  
+reference rather than a pointer  
+  
+9)  Altered SetPathL for a DC listbox to do an update after setting  
+the path  
+  
+10) Made CEikLabel::SetExtentL public rather than private, to allow  
+labels to be constructed dynamically (as in the File Selector dialog,  
+which now has a text label for its row of sort-order buttons)  
+  
+11) Added a function SecondToolBar() to CEikAppControl, publicizing  
+the private handle iSecondToolBar  
+  
+From Natascha:  
+--------------  
+12) Added a Preview line to the Font dialog, displaying specified  
+text in the font currently selected in the dialog (together with  
+styling, eg bold, strikethrough)  
+  
+13) This has been implemented using a CEikTag, but it has been  
+necessary to add the following functionality (to CEikTagBase): the  
+ability to specify a minimum height, the ability to specify a maximum  
+width, and the ability to set strikethrough and underline styles  
+  
+14) Due to a flux in ideas for the API to the font dialog, this has  
+been reverted to the previous version, in which the dialog operates  
+on format layers and format masks, instead of interaction directly  
+with an MFormatText; corresponding changes have been made to  
+CEikEdwinCmp  
+  
+From Kevin:  
+-----------  
+15) Updated MFNEs to the new TDateTime code, which should mean that  
+date and time editors no longer trash the time and date bits  
+(respectively) of the TDateTime* they are passed  
+  
+16) New control CEikDateAndTimeEditor, the combined date-time editor  
+(as required by the Agenda): it's a bit rough round the edges just  
+now, but it's functional  
+  
+17) Updated TDialg1 so that its Number Editors dialog has an example  
+of this new MFNE variant  
+  
+18) Added some new ASSERTs to MFNE code  
+  
+19) Added Set() and SetAll() functions to SEikNumedField, producing a  
+(modest) reduction in codesize (with some more time, this could  
+probably be reduced further in this area)  
+  
+20) Pressing Backspace (Shift+Del) with a field selected used to  
+cause a Panic - now fixed  
+  
+From Neil:  
+----------  
+21) Split CEikScrollBarFrame::MoveThumbsTo() into two functions,  
+MoveVertThumbTo() and MoveHorizThumbTo(), to allow a control to alter  
+a single scrollbar without having to recalculate the scroll offset in  
+the other direction too  
+  
+22) Converted Edwin to this new scheme, and put a quick fix into  
+Listbox (to be improved later to take advantage of the independence)  
+  
+23) Added support in TEikScrollBarModel for "inexact" scrollbars, via  
+the new SetModelFromEndValues() function; also added  
+AdjustOnlyModelThumbPosition() to CEikScrollBar, and  
+AdjustModelThumbPosition() to CEikScrollBarFrame (better names may  
+emerge for these functions later)  
+  
+24) Started to convert Edwin to use this new scheme as well, in the  
+case when CTextView only formats its document partially, though the  
+conversion isn't complete yet (and in some ways the implementation is  
+more broken than before)  
+  
+From Siamak:  
+------------  
+25) Fixed some typos in ASSERT statements pointed out by Bill, which  
+were causing panics every time various functions were called  
+  
+26) Some tidying up of the header files for CEikListBox and  
+CEikListBoxView, but applications using listboxes shouldn't be  
+affected; several non-essential functions have been removed from the  
+public and protected interfaces to these two classes  
+  
+27) Fixed drawing bug that was occurring when the pointer was dragged  
+inside multi-selection listboxes  
+  
+From DanH:  
+----------  
+28) New module EIKGRID.* providing a Grid Control over the  
+functionality in GRID.DLL  
+  
+From DavidW:  
+------------  
+29) Changed the standard colors defined in EIKCOLOR.RH so that they  
+are all exact colors in 4 shades of gray, ie 0, 5, 10, or 15 (viewed  
+as Gray16 values); this shows up some interesting effects!  
+  
+30) Rebuilt using BAFL/029 and CONE/075; this led to a reduction in  
+codesize of some 2.5% (around 10k)  
+  
+31) Various renames as required by the changes in Bafl, eg  
+TIncrMatchXxx changes to RIncrMatchXxx, and calls to MaCBase() simply  
+disappear (they were vacuous)  
+  
+32) Stopped some more functions from being both inline and virtual  
+(which was giving rise to code bloat)  
+  
+33) Fixed a bug reported by Brendan whereby Eikon's version of  
+ECONS.DLL wasn't being released (this explains why console  
+applications failed to run on the M1 release of the Protea ROM)  
+  
+34) Fixed a bug pointed out by MartinD in that a CEikMover couldn't  
+handle having NULL iText (as can happen when there is no title text  
+for a dialog)  
+  
+Stop Press:  
+-----------  
+35) In order to E32ROM the contents of the latest Protea.OBY, you'll  
+need to use an under-the-counter version of E32ROM, which you can  
+fetch (eg into \eikon\tsrc) by typing "GETREL EIKON E32ROM 025"  
+  
+  
+Version 0.01.059  
+================  
+(Made by DavidW, 8 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016  
+        CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+From SimonC:  
+------------  
+1)  Moved the file selector out of test code into its own new module  
+EIKFSEL.* in \eikon\src  
+  
+2)  The file selector's constructor now takes the path of the  
+directory to be viewed on creation; the file selector dialog also  
+takes a buffer to receive the file or directory selected  
+  
+3)  Various other changes to the directory contents and tree  
+listboxes as suggested by Siamak and Bill  
+  
+From Siamak:  
+------------  
+4)  Two new listbox classes, CEikStandardListBox and  
+CEikStandardMultiColumnListBox; many "standard" uses of listbox will  
+now transfer from using CEikListBox to CEikStandardListBox; the  
+rationale for this change is to keep the API to CEikListBox itself as  
+simple as possible  
+  
+5)  The ConstructL() function of CEikStandardListBox doesn't require  
+a pointer to a model or item-viewer, since this control will  
+automatically create for itself a CStandardListBoxModel and a  
+CBitmapAndTextListItemViewer; see the new files EIKSLB?.*  
+  
+6)  Fixed a multi-column listbox drawing bug, by changing one of the  
+functions in CListBoxView to be virtual  
+  
+7)  Improved left/right arrow key handling for multi-column  
+listboxes, by minimizing the number of item redraws  
+  
+From Bill:  
+----------  
+8)  Added SetBmp(RFbsBitmap*) function to CEikButton, to allow the  
+bitmap to be specified other than by filename  
+  
+9)  Added exported dtor for CEikButtonArray  
+  
+10) Commented out some button array asserts which don't work inside  
+"if" statements  
+  
+11) Changed CEikButtonArray::HandleControlEventL from private to  
+protected so that GCC MI fixes can work  
+  
+From DavidW:  
+------------  
+12) The CEikDebugKeys object is now enabled on Release builds as well  
+as Debug builds, to allow its functionality to be available on the  
+rack; this is the object that allows you to do Ctrl-Sh-Alt-M to get a  
+"move-me" dialog to test redrawing, etc  
+  
+13) Included a couple of playback scripts in the ROM, for TEdwin1 and  
+TDialg0, as an example of more to come shortly (for automated testing  
+and for performing timing and profiling tests); go to either of these  
+applications and press Ctrl-Sh-Alt-P to start playback.  
+  
+  
+Version 0.01.058  
+================  
+(Made by DavidW, 7 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016  
+        CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+Binary compatible with Eikon 057: No app rebuilds necessary (so it  
+can slot into the M1 build of the Protea ROM without causing any  
+disturbance)  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+From Julian:  
+------------  
+1)  Added a "Delete file" function to the Eikon System screen, to  
+provide some stop-gap file-management facilities on the rack; this  
+dialog is seeded to y:\main\* on the PC and to c:\main\* on the rack,  
+but you can use the Directories sub-dialog to navigate to any other  
+path  
+  
+From DavidW:  
+------------  
+2)  Additional logging facilities in the Eikon System screen (to help  
+debug strange things happening on racks): logging of pointer events  
+and logging of key events are now controlled independently via menu  
+commands (the former is enabled by default, and the latter disabled).  
+  
+  
+Version 0.01.057  
+================  
+(Made by DavidW, 7 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016  
+        CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Uses CONE 074 for the first time  
+  
+Build 001 of Protea ROM:  
+------------------------  
+This release of Eikon (or a release that is binary compatible with  
+it) will be used as the basis of build 001 of the Protea ROM, to be  
+made at 4pm on Wednesday 8th May  
+  
+Note that the Eikon System screen has the capability of running, not  
+only Eikon .PRG applications, but also *.EXE files, such as CONE test  
+programs, or even console-based *.EXE files (such as BAFL or E32 test  
+programs)  
+  
+Please let me know which of your files you would like added to the  
+001 build of ROM: let me know the location of the (zipped) files  
+containing these files on the network, and give me a fragment of the  
+PROTEA.OBY file that shows where these files have to be put inside  
+the ROM (and showing whether they need to be renamed in the process)  
+  
+From Julian:  
+------------  
+1)  A print process dialog, CEikPrintProgressDialog in EIKPRTDG.*,  
+now exists to show the progress of printing, using a progress info  
+bar; CEikPrintProgressDialog multiply inherits from  
+MPrintProcessObserver; it should be suitable for use by any Eikon  
+application that prints; the full bar represents the total number of  
+copies and pages to be printed  
+  
+2)  TEdwin1 has been modified to display the print process dialog  
+after the printing dialog is confirmed  
+  
+(but for the time being there seems to be a stray signal panic if the  
+user presses Esc on the print progress dialog)  
+  
+3)  Revisited the combo box code, so that it now supports a maximum  
+text length being set (which is passed on to the CEikEdwin component)  
+  
+From Neil:  
+----------  
+4)  The listbox borders drawing bug should now be solved both on the  
+rack and in WINS, by means of changing the CListBoxView::ViewRect()  
+function to return a const TRect& rather than a TRect by value  
+(thereby avoiding problems with lifetimes of temporaries)  
+  
+5)  Replaced a couple of "if (x<0) x=0" constructs in listbox  
+(AdjustTopItemIndex) and scrollbar (CheckModelBounds) code, to avoid  
+the GCC over-optimizing bug, and thereby cure various strange effects  
+on the rack  
+  
+From Bret:  
+----------  
+6)  Now use CEikScrollMoveButtons instead of CEikButtons to create  
+the left and right pointing push buttons in calendar dialogs  
+  
+7)  CEikCalDialog no longer returns ETrue in the OkayToExitL()  
+function when Enter is pressed, but rather reports an event  
+EEikCeInteractionConfirmed to its observer, leaving it to the  
+observer to sense the date selected, and to destroy the dialog  
+  
+(This mechanism - rather unusual, so far, for Eikon dialogs - is  
+required because one calendar dialog can get replaced by another  
+part-way through, as the user switches between 1, 3, and 12 month  
+views, and therefore the "dialog with wait" approach cannot be used)  
+  
+8)  For this reason, the static CalendarL() function takes an  
+MCoeControlObserver as one of its parameters; see the code in TCal to  
+see the application control handling events from the calendar dialog  
+  
+From Vamsi:  
+-----------  
+9)  Changed interface to the font dialog, CEikFontDialog, whose  
+constructor now takes the arguments  
+    MFormatText* aText,  
+    TInt aLowerPos,  
+    TInt aLength,  
+    TInt aFontDialogFlags=0  
+  
+where aLowerPos and aLength can be passed as zero for non-rich text  
+uses; note that CGlobalText derives from MFormatText, so a pointer to  
+a CGlobalText can be passed as the first parameter, if desired  
+  
+10) The font dialog now applies the formats selected in the dialog,  
+inside its OkayToExitL() function  
+  
+From DavidW:  
+------------  
+11) Based on work by Vamsi in TextEd, split the CEikEdwin class in  
+EIKEDWIN.* into two, with the residual part of CEikEdwin having less  
+knowledge about its text object and about the environment as a whole  
+(and thereby being more portable, on both counts), and with the new  
+class CEikEdwinCmp in EIKEDCMP.* providing a larger "component" for  
+re-use within applications  
+  
+12) At the CEikEdwin level, the text object is known only via a  
+CPlainText* pointer (though for the time being there are still a few  
+parts of code where a cast to eg a CRichText* pointer takes place);  
+on the other hand, at the CEikEdwinCmp level, the text object is  
+known via a CGlobalText* pointer  
+  
+13) CEikEdwinCmp is derived from CEikEdwin, meaning that there is  
+comparatively little difficulty in converting an app that uses a  
+CEikEdwin to one that uses the richer set of functionality in  
+CEikEdwinCmp  
+  
+14) Converted the test applications TEdwin0, TScrlB1, and Write to  
+the new edwin system (TEdwin1 didn't need to change)  
+  
+15) Among the CEikEdwin functions that disappear (for various  
+reasons) are SetFormatLayers, CreateOwnFormats, SetAttribute, and  
+CreateTextL; many other CEikEdwin functions have migrated to  
+CEikEdwinCmp - CEikEdwinCmp takes over lots of "Run dialog" code that  
+used to be in CEikEdwin, eg dialogs for importing text, for finding  
+and replacing, and for altering paragraph or character formatting  
+  
+16) The "Set button assignments" dialog is now able to save its  
+settings on the rack (previously it failed due to trying to write to  
+ROM) - even though, for now, these settings have no value (since no  
+off-screen digitizer events get delivered)  
+  
+17) Rearranged the calendar dialog code to avoid the double redraw  
+problem for the dimmed button on startup (by means of ensuring that  
+the dimming of this button happens in a DynInitL() function, ie  
+before the call to SetReadyToDraw() for the dialog)  
+  
+18) Another exported ctor: CEikComboBox.  
+  
+  
+Version 0.01.056  
+================  
+(Made by DavidW, 3 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031  
+        PDRSTORE/004 PRINT/010 CLOCK/016  
+        CONE/073 ETEXT/033 TBOX/050 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+An interim release: WINS Debug and GCC Release only; other pending  
+Eikon changes will be included shortly  
+  
+As usual, see eik056b.img or eik056c.img on my u:\  
+  
+First release with GDI 020 et al: another step towards faster  
+programs; it's a definite improvement (but there's still definitely  
+room for more improvement)  
+  
+Be sure to update your MNT.CMD batch files to fetch the new EWINS  
+component of FORM (rather than TBOX as before)  
+  
+From Siamak:  
+------------  
+1)  Speeded up cursor up/down in listboxes, by eliminating redundant  
+item redraws  
+  
+2)  Removed most listbox calls to SetClippingRegion(), in favour of  
+the new SetClippingRect()  
+  
+3)  On Neil's suggestion, modified CEikListBox::DrawMargins() so that  
+it sets the clipping rect to the whole of the listbox window, in a  
+way similar to DrawBorder()  
+  
+4)  Change to the mechanism for CListBoxView tracking when it has no  
+current item  
+  
+5)  Further improvements to TLBox  
+  
+From Natascha:  
+--------------  
+6)  Fix to stop the paragraph colors dialog from crashing  
+  
+From DavidW:  
+------------  
+7)  Added more "default: break" statements to switch statements, to  
+remove almost all GCC compiler warnings for Eikon  
+  
+8)  Yet another exported ctor (this time for CStandardListBoxModel)  
+  
+9)  Write now can save and restore files even on the rack (so long as  
+there are no pictures involved).  
+  
+  
+Version 0.01.055  
+================  
+(Made by DavidW, 3 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030  
+        PDRSTORE/003 PRINT/009 CLOCK/015  
+        CONE/072 ETEXT/032 TBOX/049 FONTS/022 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+"Standard set" of variants: WINS Ascii/Release and GCC Release  
+  
+Uses FONTS 022 for the first time  
+  
+Isn't yet able to use the forthcoming turbo-charged versions of  
+BITGDI et al; please wait patiently until all intermediate system  
+components are ready  
+  
+For rack images, see eik055b.img or eik055c.img on my u:\  
+  
+Sizes (GCC)  
+-----------  
+eikon.dll       392,196  
+eiksrv.exe        4,612  
+system.prg       22,020  
+econs.dll         7,684  
+eikon.rsc         5,722  
+system.rsc        1,617  
+*.pbm            77,716  
+  
+From Natascha:  
+--------------  
+1)  Further developments to the paragraph borders and paragraph  
+colors dialogs; with the current release of Form, paragraph borders  
+are now displayed again, around paragraphs (though with some mighty  
+strange wiggling about!)  
+  
+(and note that, on the rack, preview borders are *not* displayed in  
+dialogs yet, pending a new release of Form)  
+  
+2)  Improvements to the borders preview control, so that it no longer  
+bursts the side of its enclosing dialog  
+  
+3)  These dialogs are now accessible from TEdwin0, as well as from  
+Write  
+  
+From Julian:  
+------------  
+4)  Converted TEdwin1 so that it runs on the rack  
+  
+5)  Added access to the print setup dialogs from TEdwin1  
+  
+6)  Added a print command to TEdwin1, which prints the text of its  
+five edit boxes through the PrintBand() function of its new class  
+CSimplePrint; the printout is to a file (temp.pcl) put into the root  
+directory by PdrStore  
+  
+From Neil:  
+----------  
+7)  Rearranged some listbox display code, trying to solve some  
+display problems on the rack  
+  
+8)  These display problems haven't been solved (and it may be that  
+new display problems on WINS have been introduced), but the code is  
+in several aspects more efficient than before  
+  
+From DavidW:  
+------------  
+9)  FSELPRNT.PBM wasn't being properly copied into the RACK rom (bug  
+in the *.OBY file), with the result that the up-arrow ("cd..") icon  
+was displaying incorrectly in the directory contents listbox  
+  
+10) Yet more exported ctors and dtors added  
+  
+11) Converted Write so that it now runs on the rack; this is the  
+nearest thing so far to the Eikon Word Processor running on the rack;  
+you can even run up TEdwin1 style doors inside Write, and then use  
+"Format picture" to scale them or crop them  
+  
+(File saving or loading with rich text crashes every time, somewhere  
+inside EText, for reasons I don't understand yet - on both WINS and  
+GCC, and regardless of whether any pictures are involved)  
+  
+(Also be patient with some of the formatting and redrawing problems  
+for Write, which are probably due to a GCC compiler bug,  
+over-optimizing some IF expressions)  
+  
+12) Application profile files are now created on c:\profiles on the  
+rack, and on y:\profiles on the PC, and the Eikon System application  
+has been altered to look for profiles in these places; you can delete  
+any c:\profiles (or d:\profiles, etc) directory on your hard disk  
+  
+13) Fixed a potentially nasty stack-overwriting bug for dialogs  
+running without wait  
+  
+14) The Eikon System application no longer uses a custom dialog for  
+its Run App DLL command, but simply uses the standard "Open file"  
+dialog from EIKCFDLG.*  
+  
+15) Started to cut down on the number of warning messages when Eikon  
+is built under GCC, mainly (on Siamak's suggestion) adding  
+    default:  
+        break;  
+to many switch statements, and also by changing the definition of  
+various dtors from private to public.  
+  
+  
+Version 0.01.054  
+================  
+(Made by DavidW, 2 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030  
+        PDRSTORE/003 PRINT/009 CLOCK/015  
+        CONE/072 ETEXT/032 TBOX/049 FONTS/021 EALWL/017  
+        E32TOOLS/022 EIKTOOLS/104 RCOMP/304  
+  
+Contains WINS Ascii/Release variants and GCC Release variant  
+  
+Uses CLOCK 015 and E32TOOLS 022 for the first time  
+  
+For built IMGs, see EIK054b.IMG and EIK054c.IMG on my U: (for B- and  
+C- racks respectively)  
+  
+(The EIK054c.IMG is theoretical only; I only get a solid black screen  
+on the only rack-C I've been able to try it on; mind you I suspect  
+this rack-C is kaput, since every other attested rack-C IMG I've  
+tried on it has equally stuck on the black screen of death)  
+  
+Again, there are more running test programs than ever before - so  
+much so that the popped out Applications list box, in the Eikon  
+Shell, now sports a scrollbar  
+  
+The above IMGs are built with some UTC re-released BITGDI files,  
+available on r:\eikon\temp, that cause a significant speed increase  
+for *certain kinds* of graphics; other kinds of graphics speed  
+increase are pending, but the BITGDI (etc) changes for them are  
+binary incompatible with other system components at the moment, and  
+so will need to work their way through a proper release cycle  
+  
+From DavidW:  
+------------  
+1)  IMPORTANT: Eikon now releases a version of the file WSINI.INI,  
+placed into \e32data by Eikon's MNT GETREL, which will overwrite any  
+copy of that file you have there already - but it's not a long file,  
+so you won't lose much sleep over this, and in any case, if this file  
+was important to you, you had a copy of this in one of your source  
+directories already, didn't you? (Eikon's copy is in ..\srcdata)  
+  
+2)  The contents of Eikon's WSINI.INI file is presently  
+        STARTUP EIKSRV  
+        GRAY 4  
+which forces the Window Server into four shades of gray on the PC,  
+and which specifies the startup program for the Window Server to run  
+(overriding the default behaviour, which is to run a program called  
+SHELL.*); this WSINI.INI is also added into the *.OBY file  
+  
+3)  As you will deduce from above, the startup program that Eikon  
+releases is no longer called SHELL.DLL (or SHELL.DLL for the rack),  
+but EIKSRV.*  
+  
+(The name of the program started in turn by EIKSRV remains as SYSTEM  
+for the time being)  
+  
+4)  On Bill's suggestion, the GETBLD for Eikon now automatically  
+includes a call to MNT TOOLS; thus (extract from MNT.CMD)  
+    :getbld  
+    call ..\group\mnt getsrc %2  
+    call ..\group\mnt tools  
+    call ..\group\mnt getcomps  
+    goto end  
+  
+5)  The line invoking MAKTRAN in the batch file ..\tsrc\doarm.cmd is  
+now  
+        call maktran %1.mak %1.arm /d /fEikMain__Fv  
+  
+with the /f parameter (you'll need MAKTRAN 022 to support this)  
+ensuring that the correct function gets set as the first export in  
+the application DLL, even if you also have other EXPORT functions  
+  
+6)  Fixed WRITE so that it compiles links and runs again (but only  
+under WINS - not on the rack)  
+  
+From SimonC:  
+------------  
+7)  Changed EIKDCLB*.* and EIKDTLB*.* in the light of a header file  
+review by Siamak  
+  
+8)  Many of these changes can be considered cosmetic, but the most  
+important are that CDirContentsListBoxModel no longer inherits from  
+MBitmapAndTextListBox, and that the UpdateL() functions in the DC  
+list are now called CreateContentsListForCurrentDirL()  
+  
+9)  Removed some unnecessary functions and improved the handling of  
+various error conditions encountered within the file selector  
+  
+From Siamak:  
+------------  
+10) More work on TLBox, list box test code  
+  
+11) Fixed bug in the SetTopItemIndex() function of CEikListBox, which  
+wasn't updating any scrollbars  
+  
+12) Fixed bug in the SetCurrentItemIndex() function of CEikListBox,  
+which wasn't changing the selection state in the case of  
+single-selection listboxes  
+  
+13) Renamed CEikListBox::GetSelectionIndexes() to SelectionIndexes();  
+it now simply returns a pointer to the "selection indexes" array held  
+by the listbox view  
+  
+From Neil:  
+----------  
+14) Converted TScrlB1 and TScrlB2 to run on the rack  
+  
+From Bret:  
+----------  
+15) Added left- and right-pointing triangle push buttons to move the  
+calendar view backwards and forwards  
+  
+(These are presently implemented by non-scaling bitmaps stolen from  
+Hcil, which are a bit too big for the button size - hence the funny  
+effects, especially in the 12 month version).  
+  
+  
+Version 0.01.053  
+================  
+(Made by DavidW, 1 May 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/028  
+        GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030  
+        PDRSTORE/003 PRINT/009 CLOCK/014  
+        CONE/072 ETEXT/032 TBOX/049 FONTS/021 EALWL/017  
+        E32TOOLS/021 EIKTOOLS/104 RCOMP/304  
+  
+Uses BAFL 028, CONE 072, WSERV 030, and PRINT 009 for the first time  
+  
+Runs even more test applications on the rack - see my u:\eikon053.img  
+  
+Contains WINS Ascii/Release variants and GCC Release variant  
+  
+From Neil:  
+----------  
+1)  EIKSBMAN.* has been deleted, since all known clients of it have  
+converted to scrollbar frame technology instead  
+  
+2)  On request from DanH, added (inline) CEikScrollBarFrame functions  
+to return the scrollbar visibilities  
+  
+3)  Fixed a console bug which left the screen corrupted when  
+scrollbars were removed  
+  
+4)  Added functionality for listboxes to pass on their scrollbar  
+flags to the scrollbar frame when it is created  
+  
+5)  Added an exported ctor for CEikScrollBar  
+  
+6)  Converted TScrlB0 to run on the rack  
+  
+7)  Major re-write of TScrlB0 to allow much more testing of some of  
+the more obscure scrollbar layouts: button presence/ size/  
+auto-dimming can all now be changed independently for both scrollbars  
+  
+From SimonC:  
+------------  
+8)  Added some support for keyboard navigation to the drive selector  
+in the file selector: Up from the top of the directory browser goes  
+there  
+  
+9)  Recompiled all bitmaps used in TLBox1 to 2 bits per pixel rather  
+than 4  
+  
+10) Changed the names of some enums in eiklbx.h and eikdclbm.h that  
+were overlooked last time  
+  
+11) Added the function CurrentItemIsParentOfDir(TInt aItemIndex) to  
+eikdclbm to simplify some pieces of drawing code  
+  
+12) Made various changes to TLBox1 so that the file selector is  
+displayed in a more consistent state on creation  
+  
+13) Fixed a bug that was preventing Directory Contents list boxes  
+getting single-click pointer events  
+  
+14) Improved the way a hierarchical listbox removes all items from  
+its model  
+  
+From Siamak:  
+------------  
+15) More work on the test code for listboxes - this has highlighted a  
+few bugs  
+  
+16) CListItemViewer::DrawActualItem() is no longer pure virtual, but  
+has an empty body, imposing fewer requirements on subclassers  
+  
+17) CListBoxView::DrawItem() no longer asserts that the specified  
+item is visible  
+  
+From Bret:  
+----------  
+18) Moved the definitions of the "standard" 1, 3, & 12 month calendar  
+dialogs from TCAL.RSS to EIKON.RSS  
+  
+19) Likewise moved CCalDialog from test code into EIKCAL.*, making  
+changes to it en route to ensure it no longer requires any special  
+cooperation from the application control  
+  
+20) Created a wrapper function CCalDialog::NewCalDialog() to trap  
+CalendarL() in case it leaves; this function sets the exit status to  
+reflect whether this occurs  
+  
+21) Had a go at changing some of the calendar drawing mechanism to  
+use MapColors(), but had to leave this commented out for now (since  
+the Window Server currently fails to allow access to this Gdi  
+functionality)  
+  
+From Brendan:  
+-------------  
+22) Re-ordered some of the inlines in EIKTAG.INL and EIKWLDL.INL to  
+ensure that functions aren't called before their body has been seen  
+(otherwise the GCC compiler gets confused)  
+  
+From DavidW:  
+------------  
+23) Yet more Eikon test apps now run on the rack: TWldSl (allows  
+alarms to be set) and TEdwin0 (exercises CTextView et al)  
+  
+24) Added PCL5.PDL and HP3.PDR to the EIKON.OBY file (both these  
+files are released by PDRSTORE and are required for the print setup  
+dialog to operate properly - not to mention to support printing and  
+print preview).  
+  
+  
+Version 0.01.052  
+================  
+(Made by DavidW, 30 Apr 1996)  
+  
+Uses:   E32/057 F32/021 STORE/012 BAFL/027  
+        GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/029  
+        PDRSTORE/003 PRINT/008 CLOCK/014  
+        CONE/071 ETEXT/032 TBOX/049 FONTS/021 EALWL/017  
+        E32TOOLS/021 EIKTOOLS/104 RCOMP/304  
+  
+Ascii Debug and GCC Release variants only  
+  
+More Eikon test programs are now running on the rack, better than  
+ever before (with additional significant improvements expected very  
+soon, via imminent new releases of other system components)  
+  
+If you haven't done so already, type "MNT TOOLS" to upgrade to RCOMP  
+304 and EIKTOOLS 104, and you should see the last of these strange  
+"cannot delete file" messages  
+  
+From SimonC:  
+------------  
+1)  Undertook a major reorganization of the list box modules, with  
+EIKLBXM.* and EIKLBXV.* disappearing, and with many new modules being  
+created in their place (and also taking some of the functionality  
+away from eg EIKLBX.* and EIKHLBX.*)  
+  
+2)  See the LI.PRJ files for a complete listing of these modules;  
+basically the modules ending in 'x' contain the controls (the  
+"boxes") themselves, modules ending in 'v' contain views, those  
+ending in 'm' contain models, and those ending in 'i' contain item  
+viewers  
+  
+3)  Altered many of the enums, giving them a distinctive three-letter  
+prefix indicating whether they are defined in a view, model, etc  
+  
+4)  Converted all live test Eikon applications to the new list box  
+modularisation (eg changing which header files are #included)  
+  
+5)  Started a new test module TLBox2, to test the directory contents  
+list box and the hierarchical list box, separately (not fully  
+functional yet)  
+  
+From Vamsi:  
+-----------  
+6)  Access to Find and Replace CEikEdwin functionality from TEdwin0  
+test code  
+  
+7)  As an experiment, Ctrl+F in CEikEdwin automatically searches to  
+the next occurrence of the current word  
+  
+8)  Minor bug fix in Find code in CEikEdwin  
+  
+From Julian:  
+------------  
+9)  Modified TDialg0 so that it runs on the rack  
+  
+From DavidW:  
+------------  
+10) Converted to all listed new components above, ie E32(057) etc  
+  
+(Note that the Window Server now runs all graphics, by default, in  
+four shades of gray, using dithering for other shades; this leads to  
+various unexpected effects in several of the test applications!)  
+  
+(Due to minor complications, I have temporarily withdrawn Write from  
+the set of live Eikon test applications, as listed in  
+..\tsrc\bld.cmd; also door code in general is not to be relied on  
+just now; to be reinstated shortly)  
+  
+11) Since CTextView no longer needs to be passed a Gc, but rather  
+creates one for itself when needed, the CreateGcL() function of  
+CEikEdwin disappears, and with it the iGc data member  
+  
+12) New support in dialogs for action buttons which *don't* cause the  
+current focus item to be validated, before their action is carried  
+out; this is required for eg the "Directory" button in the standard  
+Open File dialog (in the case when there are no files in the selected  
+directory, so the filename selector control is in an invalid state)  
+  
+13) Filename selector controls now handle the case when they are  
+seeded with a non-existent path: they call TParse::PopDir()  
+repeatedly until they find a path that *does* exist  
+  
+14) Fixed various bugs in the filename controls and dialogs, that  
+were shown up by the fact that the internal filing system (rightly)  
+rejects filenames with double backslashes in them, eg "\main\\*.dlg"  
+  
+15) The Eikon System screen now seeds its Document dialog with the  
+internal drive (Y: on the PC and C: on the rack) rather than leaving  
+this to the pre-existing default (typically C: or D: on the PC and Z:  
+on the rack); ditto for the Profile dialog  
+  
+16) The Eikon System screen now only formats the internal drive, on  
+start-up, when that drive is found to be corrupt; this means that  
+data stored in one editing session can be re-loaded in the next one  
+  
+17) TDialg1 now demonstrates file save and re-load on the rack, by  
+means (for now) of explicitly specifying y:\ (or c:\) in its call to  
+LoadStartDataL; made similar changes to TEdwin0 and TEdwin1  
+  
+18) Eikon no longer bothers PUTRELing any main.<ver> release  
+component of "sample document files", since these document files now  
+exist inside the internal drive, rather than on c: (or d: etc) on  
+the PC; made corresponding changes to MNT GETREL etc; you may wish to  
+"rd /s" any \main on your c: or d:  
+  
+19) EXPORTed yet more ctors and dtors, for the sake of GCC linking,  
+and for the same reason put in a few EXPORT_C's to match the  
+IMPORT_C's in header files.  
+  
+  
+Version 0.01.051  
+================  
+(Made by DavidW, 29 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/013  
+        CONE/070 ETEXT/031 TBOX/048 FONTS/020 EALWL/016  
+        E32TOOLS/021 EIKTOOLS/103 RCOMP/303  
+  
+Contains GCC Release, and WINS Debug and Release variants  
+  
+Sizes (GCC)  
+-----------  
+eikon.dll       401,412  
+shell.exe         4,612  
+system.prg       22,020  
+econs.dll         7,684  
+eikon.rsc         5,303  
+system.rsc        1,644  
+*.pbm            48,456  
+  
+From Bret:  
+----------  
+1)  The sample calendar dialogs in TCal test code all now have buttons  
+to allow the user to switch between 1, 3, and 12 month views  
+  
+2)  Other improvements to TCal  
+  
+From DavidW:  
+------------  
+3)  The Eikon System application now has the ability to run "*.EXE"  
+programs, ie *.EXEs on the rack, and *.DLLs under WINS, prepared such  
+that their first exported function is their entry point; this means  
+that the Eikon System application is now able to run CONE test  
+programs  
+  
+(Note however that, for the time being, these non-Eikon programs  
+won't show up in the Task List dialog, and won't be included in the  
+set of programs tasked around by eg Ctrl-Alt-Esc)  
+  
+4)  New function StartExeL(const TDesC* aExeName) in the static class  
+EikDll, implementing the "RunExe" feature of the Eikon System app  
+  
+5)  Eikon now supports "console applications", such as applications  
+using RTest; Eikon provides its own version of ECONS.DLL, overwriting  
+the version released by E32 (which only works with the Text Window  
+Server, likewise released by the base team)  
+  
+6)  The source code for Eikon's version of ECONS.DLL is in the new  
+directory \eikon\eikcns (so named because eikcon was a bit too  
+similar to eikon)  
+  
+7)  See \eikon\tsrc\t_bnda.* for how to prepare an RTest application  
+that can under in the Eikon rom, for either WINS or GCC32  
+  
+(Note: Eikon's ECONS.DLL doesn't yet properly support console  
+applications that do asynchronous reads)  
+  
+8)  The following six Eikon test apps are all now part of the Eikon  
+test rom image: TCal, TMenuB0, TLBox, TLBox1, TCons0, TDialg1; they  
+run with varying degrees of success (mainly, the more windows they  
+have, the less likely they are to run)  
+  
+9)  Some changes to the short-cut keys in the Eikon System, eg the  
+launch application dialog is now on Ctrl-A, not Shift-Ctrl-A.  
+  
+  
+Version 0.01.050  
+================  
+(Made by DavidW, 26 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/013  
+        CONE/070 ETEXT/031 TBOX/048 FONTS/020 EALWL/016  
+        E32TOOLS/021 EIKTOOLS/103 RCOMP/303  
+  
+Uses FONTS 020 for the first time  
+  
+For a change, this release contains WINS Debug and Release, as well  
+as GCC Release  
+  
+Five Eikon programs now run on the rack: the new ones this time are  
+TMenuB0 and TLBox1  
+  
+Well, when I say that TMenuB0 runs, it runs provided you don't go  
+more than three levels of cascade menu deep ...  
+  
+... and TLBox1 only runs provided you put in some delaying calls to  
+CEikonEnv::Alert during its start-up ...  
+  
+... as you can see from the rom in my u:\eikon050.img  
+  
+Eight separate contributors to this build of Eikon:  
+  
+From Natascha:  
+--------------  
+1)  New paragraph borders and paragraph colors dialog in EIKPARAD.*,  
+accessible from functions in CEikEdwin; see Write.CPP for examples  
+  
+2)  The paragraph borders dialog uses a new "borders preview"  
+control, from the new module EIKBPREV.* (based on classes provided by  
+Form)  
+  
+(The separation of the Borders and Colors dialogs is due to the  
+present lack of multi-page dialogs; the fact that the borders preview  
+control is drawn so small is due to present lack of multi-column  
+dialog layout; both these deficiencies should be resolved shortly)  
+  
+(Another point to note is that the present release of Form doesn't  
+display paragraph borders, though it does display background colors  
+for paragraphs, and paragraph positioning does get altered to reflect  
+the space the borders will take up)  
+  
+3)  Improved the handling of indeterminate state for the paragraph  
+alignment dialog (more work remains for this state in others of the  
+paragraph format dialogs)  
+  
+From Vamsi:  
+-----------  
+4)  New Replace functionality for CEikEdwin, together with a Replace  
+dialog defined in the Eikon resource file  
+  
+5)  Additional Find functionality for CEikEdwin, for example a  
+function to find the next instance of the current word  
+  
+6)  Both the Find and Replace dialogs for CEikEdwin now use combo  
+boxes  
+  
+(There's no test code for the CEikEdwin Find and Replace in ..\tsrc  
+yet - you'll have to use TextEd to see this)  
+  
+7)  Improvements in the display of the line cursor in CEikEdwin  
+  
+From Kevin:  
+-----------  
+8)  Fixed a MFNE bug in which 4-digit year date editors were setting  
+the year one too high  
+  
+9)  Made the enum TEikDateEditorFieldPosition public, as is needed  
+for a dialog wishing to restrict a date control's range dynamically  
+  
+10) Post-fixes in MFNEs can now be focussed nuch like the number  
+fields (making their behaviour more SIBO-like); when focussed, the  
+post-fix can be changed as before, using either pen or keyboard, but  
+with the additional method of pressing SPACE to toggle now available  
+  
+11) Cut down on flicker when a single-digit field editor was "bumped"  
+by using the ears  
+  
+12) Other internal changes to MFNE code, eg separating out an INL  
+file  
+  
+From Siamak:  
+------------  
+13) Several more listbox functions have been renamed so that they  
+have a trailing ...L  
+  
+14) Added four new functions to CEikListBox so that getting/setting  
+the selected item indexes can be done without resorting to GetState/  
+SetStateL; two of these functions, SelectionIndex() and  
+SetSelectionIndex(), are designed for use with single-selection  
+listboxes, while the other two, GetSelectionIndexes() and  
+SetSelectionIndexes(), are for multi-selection listboxes  
+  
+15) Made changes to TLBox in preparation for turning it into a much  
+more comprehensive and useful tool for testing of standard and  
+multi-column listboxes (these changes are not finished yet)  
+  
+From Neil:  
+----------  
+16) After discussion with Charles, implemented a new "helper" class  
+TEikScrollBarFrameLayout, to solve the problem of a scrollbar frame  
+mis-adjusting scrollbar models in some inclusive-size constant cases  
+  
+17) This class contains fields for inclusive margins (or borders)  
+that go outside everything in the window, for the client margin, and  
+for the tiling mode and the "client area granularity"; this class  
+allows for fine control over the way the scrollbar frame works,  
+whilst the design has kept in mind the requirement that "simple"  
+users of scrollbars shouldn't need to bother with any of this  
+  
+18) Changed list-boxes, edit windows, and (especially) the console  
+window, as required by the existence of TEikScrollBarFrameLayout  
+  
+19) Fixed a bug found by DanH in CreateOrRemoveRequiredScrollBarsL  
+where the wrong set of flags was being altered  
+  
+From SimonC:  
+------------  
+20) Some modifications to TLBox1 and to hierarchical list box  
+classes, to allow TLBox1 to compile and link for the rack  
+  
+21) Changed the directory contents listbox to handle reading a  
+corrupt drive, although TLBox1 will still give an alert if any  
+attempt is made to expand a corrupt drive  
+  
+From Bret:  
+----------  
+22) Some modifications to TMenuB0 so that it now runs on the rack  
+  
+From DavidW:  
+------------  
+23) Whenever the Eikon Shell starts up, it now attempts to format the  
+internal drive (C: on the rack, Y: on WINS)  
+  
+24) On a suggestion from MartinB, made  
+MEikScrollBarObserver::HandleScrollEventL() pure virtual, removing  
+the need for this class to have its own v-table  
+  
+25) Added a few more exported ctors and dtors.  
+  
+  
+Version 0.01.049  
+================  
+(Made by DavidW, 25 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/013  
+        CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016  
+        E32TOOLS/021 EIKTOOLS/103 RCOMP/303  
+  
+Uses CLOCK 013 for the first time  
+  
+Three Eikon programs now run on the rack: System, TCal, and TDialg1  
+(though not all at the same time! - goodness knows why)  
+  
+In principle all non file-handling aspects of Eikon programs should  
+be able to run on the rack; however you'll probably find you need to  
+adjust Eikon header files to allow you to link fully (and then  
+rebuild Eikon); if so, please send me these changes, and I'll include  
+them in the next merge  
+  
+Note that the rom image u:\eikon049.img starts by switching the rack  
+off.  Don't be alarmed at this; switch it back on again and continue;  
+Steve Townsend and I have each found, empirically, that the system  
+software has more chance of starting up successfully when there's a  
+call to UserHal::TurnOff() at a suitably early place (goodness knows  
+why)  
+  
+Only the ASCII Debug and GCC Release variants are released  
+  
+Pending Eikon contributions from other authors remain on my in-tray  
+  
+From DavidW:  
+------------  
+1)  Changed the main window of the Eikon System application to  
+display console-style output (using CEikConsoleScreen), as is useful  
+when debugging on the rack (eg it presently logs the coordinates of  
+all pointer events received by the System application)  
+  
+2)  For the time being (because the System button doesn't work on the  
+rack), the keypress Ctrl-Alt-Esc will task switch  
+  
+3)  Various changes to Eikon to allow more test applications to run  
+on the rack  
+  
+4)  Stopped MNT GETREL from trying to download the EMARM release  
+component in any case when it does not exist (ie because that release  
+did not include EMARM)  
+  
+From SimonC:  
+------------  
+5)  The directory contents list box in TLBox1 now displays all file  
+details (with size and date in a smaller font)  
+  
+6)  There's a new bitmap to represent the parent directory, FSELPRNT  
+  
+7)  It is now possible to navigate the file selector by using the  
+pointer in the right-hand box (as well as the left-hand box)  
+  
+8)  All file selector bitmaps are now drawn using BitBlt() rather  
+than DrawBitmap(), for increased speed (though at the cost of some  
+additional work client side, setting up clipping regions)  
+  
+9)  Renamed EEikCeHierItemStateChanged to  
+EEikCeListBoxItemStateChanged so it can be used for other kinds of  
+list boxes as well  
+  
+10) Other internal changes to listboxes and file selector code  
+  
+From Bret:  
+----------  
+11) Introduced range checking prior to changing the calendar view to  
+ensure that dates outside the range specified in the resource file do  
+not come into view  
+  
+12) Tidied up TCal, as preparation for it running on the rack.  
+  
+  
+Version 0.01.048  
+================  
+(Made by DavidW, 24 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/012  
+        CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016  
+        E32TOOLS/021 EIKTOOLS/103 RCOMP/303  
+  
+Uses CLOCK 012 and E32TOOLS 021 for the first time  
+  
+This is an interim release, of only the ASCII Debug variant; it  
+includes some (but not all) of the work sent to me by the Eikon team  
+over the last few days  
+  
+Known limitation: the various changes have had the side-effect that  
+the Window Server now crashes on exit, with a memory leak having been  
+detected  
+  
+From Neil:  
+----------  
+1)  With Pieter, converted the console window to use the scrollbar  
+frame instead of the (obsolescent) scrollbar manager  
+  
+2)  The above changes have shown up an limitations with the scrollbar  
+frame; a workaround is in place for the moment, which is an extra  
+optional parameter TSize* passed to TileL(); watch this space for  
+details of a more comprehensive solution  
+  
+3)  Added (and propagated) trailing ...L's on function names that  
+could leave, such as the HandleListUpdateL and UpdateScrollBarsL  
+functions of CEikListBox (note: this has a knock-on effect in quite a  
+few pieces of test code)  
+  
+4)  Removed TScrlB0's dependence on CEikScrollBarManager, so once  
+Julian and DanH likewise convert to using CEikScrollBarFrame, the  
+module EIKSBMAN.* can be deleted  
+  
+From Bret:  
+----------  
+5)  Removed IMPORT/EXPORT declarations from non-virtual private  
+functions in CEikCalendar  
+  
+6)  Various other internal changes in CEikCalendar code, eg improved  
+struct naming  
+  
+7)  Added scrolling when the cursor attempts to move off the edges of  
+a calendar view; the amount scrolled depends on settings in the  
+resource file  
+  
+8)  Added some more options to the test code TCal, in particular some  
+identical calendar layouts with differing scroll values - eg a 2x6  
+month view with 6-month scrolling, a la 3a, and with 12 month  
+scrolling, as planned for Protea  
+  
+From Julian:  
+------------  
+9)  The code for the print dialogs has been changed to use  
+MPdrModelNameArray for getting a list of printer devices, rather than  
+CDesCArray  
+  
+10) A new class CEikPrinterModelNameArray derived from MArray can  
+convert the MPdrModelNameArray contents into the format required for  
+CEikChoiceList  
+  
+From DavidW:  
+------------  
+11) If the Eikon Server is unexpectedly tasked to foreground (as  
+sometimes presently happens when another application exits), it now  
+immediately puts itself to background again, avoiding the impression  
+that all keys are getting lost  
+  
+12) Apps were previously being launched with a required minimum heap  
+size of 0x200000, which meant that trying to launch a second app on  
+the rack gave out-of-memory; now fixed to require only a minimum heap  
+of 0x10000, allowing more than one app to be run at a time  
+  
+13) Various internal changes in preparation for running more Eikon  
+code on the rack  
+  
+14) As a temporary measure, modified Eikon's GETCOMPS to delete any  
+T*.GDR found in \e32data (to avoid people running into a FNTSTORE  
+bug); watch out for this if there's any file of that name in your  
+\e32data that you want to keep.  
+  
+  
+Version 0.01.047  
+================  
+(Made by DavidW, 23 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/011  
+        CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016  
+        E32TOOLS/020 EIKTOOLS/103 RCOMP/303  
+  
+Uses CLOCK 011, ETEXT 031 and TBOX 048 for the first time  
+  
+This is the first release for which (some) Eikon code can run on  
+racks; try programming my u:\eikonrom.img onto a rack and playing  
+with that  
+  
+Apologies to all those in the Eikon team who gave me code to merge,  
+but which I have ignored this time round, due to concentrating on the  
+GCC build  
+  
+Sizes (GCC)  
+-----------  
+eikon.dll       379,908  
+shell.exe         4,612  
+system.prg       20,966  
+eikon.rsc         4,690  
+system.rsc        1,593  
+*.pbm            48,268  
+  
+The figure for eikon.dll in particular is significantly larger than  
+expected; research is underway to apportion blame between compiler  
+inefficiencies (due to less than optimal v-function lookup), and code  
+bloat of all varieties  
+  
+(never mind the size; of equal concern is the very slow speed at  
+which the code runs on the rack, with the appearance of windows being  
+"telegraphed" long in advance by the onset of their "shadow", etc)  
+  
+From DavidW:  
+------------  
+1)  With help from Geert, finally managed to order all the template  
+instantiation requests in a way that caused Eikon.DLL to link under  
+GCC with no errors  
+  
+2)  Also managed to get Eikon's Shell.EXE (the Eikon Server) and  
+System.PRG (the System Screen app) to link under GCC, but at what  
+cost!  Because of GCC's stupidity when confronted with MI across the  
+DLL boundaries, *all* CEikDialog derived classes need to have the  
+line  
+  
+    void HandleControlEventL(CCoeControl* aControl,TInt aEvent)\  
+        { CEikDialog::HandleControlEventL(aControl,aEvent); }  
+  
+(or equivalent) added to them, *all* CEikDocument derived classes  
+need to have  
+  
+    CPictureHeader* NewPictureHeaderL() const\  
+        { return(CEikDocument::NewPictureHeaderL()); }  
+  
+(or equivalent) added to them, and *all* CEikAppControl derived  
+classes need something like  
+  
+    void ProcessCommand(TInt aCommand)\  
+        { CEikAppControl::HandleCommandL(aCommand); }  
+    void HandleAttemptDimmedSelectionL(TInt) {}  
+  
+If this nonsense turns out to be a non-fixable aspect of GCC then  
+I'll seriously consider backtracking my support for MI within Era  
+software  
+  
+3)  Removed all features that caused Eikon.DLL to have non-const  
+static data; this included constructions like  
+    const TPtrC KSomeConstPtr=...  
+    const TRgb  KSomeConstCol=...  
+and  
+    const TChar KSomeConstChar=...  
+all of which defeat the compiler and cause it to generate some BSS  
+(illegal for DLLs under GCC - as E32ROM will eventually tell you);  
+the above constructions have been replaced by less wonderful but more  
+practical code  
+  
+4)  Commented out various pieces of code which caused problems on the  
+RACK; probably I have left too many parts commented out  
+  
+5)  New Eikon release component EMARM containing, for now, the files  
+        eikon.dll  
+        eikon.lib  
+        shell.exe  
+        system.prg  
+from \work\emarm  
+  
+6)  The release of the GCC version of EIKON.LIB means that  
+applications can in principle try to link their own *.PRG files under  
+GCC; in practice, however, you will no doubt find that many Eikon  
+classes are still waiting to have EXPORTed ctors and dtors added  
+  
+7)  New file ..\tsrc\eikon.oby (and associated batch file bldimg.cmd)  
+which presently doesn't include any Eikon "test application" beyond  
+the System screen itself  
+  
+8)  New MNT verb ARMREL to build Eikon components in GCC  
+  
+9)  As suggested by Bill, all the MNT GETSRCxxx verbs have been  
+changed so as to test (eg) "if exist \e32\nul" before doing their  
+"del /s" on the directory prior to fetching the new source code; this  
+avoids a worrying error message appearing on the screen  
+  
+10) The Eikon Server now captures the key combinations Alt-Ctrl-comma  
+and Alt-Ctrl-dot, to respectively decrease/increase the LCD contrast.  
+  
+  
+Version 0.01.046  
+================  
+(Made by DavidW, 22 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/010  
+        CONE/070 ETEXT/030 TBOX/047 FONTS/019 EALWL/016  
+        E32TOOLS/020 EIKTOOLS/103 RCOMP/303  
+  
+Debug WINS variant only released  
+  
+Uses FONTS 019, EALWL 016 and CONE 070 for the first time  
+  
+All Eikon code now compiles under GCC (though with over 300 lines of  
+warnings that I have no intention of fixing)  
+  
+This code *almost* links to produce a GCC version of Eikon.LIB, but  
+this is only through using UTC releases of various components, and  
+even then, more changes will be required in these other components  
+before Eikon.LIB and Eikon.DLL finally exist  
+  
+Known limitation of this release: when an app exits, the keyboard  
+focus sometimes appears to "get lost", but you can put it back to the  
+System application by clicking on the System button  
+  
+From DavidW:  
+------------  
+1)  The Shell is dead; more precisely, \eikon\shell has been deleted,  
+with its files being transferred (and altered en route) to  
+\eikon\system, where they now build to create SYSTEM.PRG, an  
+Eikon application just like any other one  
+  
+2)  Whereas it used to be "the shell" that got started by the Window  
+Server, it is now "the Eikon Server" that fills this role instead;  
+some of the code from \eikon\src\eikservp.cpp has been moved to a new  
+file ESMAIN.CPP in a new directory \eikon\eiksvr, where it builds  
+into SHELL.DLL (or, for GCC builds, to SHELL.EXE); as part of its  
+initialization, the Eikon Server starts an instance of System  
+  
+3)  As well as being "the right thing to do", this change around  
+should solve all synchronization problems on both system startup and  
+system shutdown (problems bedevilling the previous Eikon release);  
+indeed, for the first time, the Eikon Server runs through all its  
+shutdown code (formerly it got left high and dry when the system as a  
+whole terminated), which has brought to light various problems in  
+destructor code (problems now fixed)  
+  
+4)  For the time being, the System application (which used to be  
+called "The Shell") even displays itself inside its "Run application"  
+dialog, allowing multiple copies of itself to be run (without any  
+ill effects ensuing)  
+  
+5)  Another novelty is that shutting down the System application no  
+longer terminates all other running Eikon apps; instead, these other  
+apps keep running, until such time as there is none left - that is  
+when the Eikon Server exits; in the meanwhile, you can press on the  
+System button to cause the System application to be restarted  
+  
+6)  The change around in the way the Eikon Server is started requires  
+a corresponding change around in the way the EAlWl Alarm Server is  
+started; this was implemented in EALWL 016  
+  
+7)  Altered code where required to remove all C4701 warnings in  
+Release mode (variables possibly used before initialized) - sometimes  
+this was a pain, sometimes it led to a definite improvement in the  
+code, and in one occasion there did seem to a route through the code  
+that would lead to the use of an unitialized variable!  
+  
+8)  Many modifications to get Eikon to compile in GCC: eg disallowing  
+functions to be declared as inline *in CPP files*; moving enum  
+declarations higher up in header files, to avoid the need for forward  
+references to enums (not supported by GCC); removing variables that  
+were declared and not used (or initialized and not used - I have left  
+a few lines of this sort commented out, with an "unused !!" comment  
+there so I can hunt them down later and remove any that still  
+remain); moved some declarations of variables (such as "TInt ii")  
+before the beginning of the FOR loop they govern, to allow them to be  
+re-used in later FOR loops without the GCC compiler throwing a  
+wobbly; provided explicit casts for some of the variables in an  
+expression of the sort "x? a: b" to make it clear that a and b share  
+a common type (something GCC is zealous about) ...  
+  
+(on the other hand I have *not* attempted to get a zero-warning  
+compile under GCC, since some of the warnings are particularly  
+brain-dead, and we ought to find out how to disable them - either by  
+.ARM file surgery, or by obtaining a new version of GCC)  
+  
+9)  Added template instantiation requests where required to allow  
+Eikon to link in GCC; some of the more generic of these requests have  
+been gathered together at the top of EIKENV.CPP, and the more  
+specific ones have been supplied nearer the point of use  
+  
+(it's probably not worth other people trying to build a GCC version  
+of Eikon yet, because you need the above-mentioned UTC versions of  
+other components, and it also takes no less than 40 minutes!)  
+  
+10) Changed CEikOffScreenWindow to derive from CCoeWinArea instead of  
+CCoeControl; its custom observer, MEikOfWinObserver, no longer  
+derives from MCoeControlObserver, and its HandleOfWinEventL function  
+is now pure virtual  
+  
+11) Some test applications were multiply deriving their app control  
+classes from MCoeControlObserver unnecessarily (and were caught out  
+when the HandleControlEventL() function became pure virtual) - these  
+derivations have now been removed  
+  
+From Neil:  
+----------  
+12) Fixed a bug whereby a whole listbox could disappear - by defining  
+and calling a CListItemViewer::ResetGc() function, to avoid the Gc  
+being left in a state with eg ENullBrush set  
+  
+13) It's no longer possible for a listbox to be left in a state with  
+unnecessary empty space at the bottom (usually as a result of  
+expanding the listbox, or reducing the number of items in it) - a  
+state that caused problems for a vertical scrollbar, since that  
+scrollbar was set to an "illegal" (greater than max) value; fixed by  
+the addition of a function CEikListBox::AdjustTopItemIndex(), which  
+ensures that the view is always filled when there are enough items  
+  
+14) Fixed an occasional redrawing bug in listboxes, caused by not  
+resetting a Gc clipping region when the viewRect was changed.  
+  
+  
+Version 0.01.045  
+================  
+(Made by DavidW, 19 Apr 1996)  
+  
+Uses:   E32/056 F32/020 STORE/011 BAFL/026  
+        GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028  
+        PDRSTORE/002 PRINT/007 CLOCK/010  
+        CONE/069 ETEXT/030 TBOX/047 FONTS/018 ALWL/014  
+        E32TOOLS/020 EIKTOOLS/103 RCOMP/303  
+  
+Debug WINS variant only released  
+  
+From DavidW:  
+------------  
+1)  Converted to new releases E32/056 etc as listed above; converted  
+all live Eikon test code so that it runs more-or-less as before; note  
+that there are very many new facilities available in upstream  
+software components, that Eikon hasn't exploited yet  
+  
+2)  Some acknowledged limitations (beyond those mentioned in other  
+release notes): you will usually get a crash on closedown (but after  
+your own app has disappeared - this also causes the Window Server to  
+shut down, leaving the Eikon Server in an unhappy state - some kind  
+of fix will be put in place in the next release of CONE); bold text  
+gets drawn in italics (and vice versa); applying character formatting  
+(such as a font change) to Global Text has no effect; if you press  
+keys too quickly while the system is booting they somehow get  
+captured to the Eikon Server and never get seen again; picture save  
+and load is broken  
+  
+3)  For WINS, note that you no longer run SHELLD.EXE, but instead the  
+Window Server released file WSEXED.EXE (or WSEXE.EXE in Release  
+mode); in turn this looks for a file SHELLD.DLL (or SHELL.DLL); so  
+the Eikon Shell no longer builds and releases a SHELLD.EXE; instead  
+it builds and releases a SHELLD.DLL  
+  
+(Note that the Window Server *also* releases a file called  
+SHELLD.DLL; be sure not to confuse this with the one created by  
+Eikon; shortly, a new naming convention will be worked out to allow  
+these two Shells to coexist - togther with "Bill's Shell" later)  
+  
+4)  Changes to MNT.CMD (which you may need to mirror in your own  
+MNT.CMDs): PDRSTORE is now a required subcomponent (since it is used  
+by the latest PRINT); the names of most release components have  
+changed, from (eg) BITGDI to EWINS; Eikon itself now releases EWINS  
+and EWINSDB components instead of EIKON and EIKONPDB as before; the  
+"AlWl" release is now fetched from the R:\EALWL directory rather than  
+the R:\TIMEW directory; "MNT TOOLS" now fetches E32TOOLS as well as  
+EIKTOOLS and RCOMP; note that the version of RCOMP now fetched is  
+303; added to the set of extensions excluded from "MNT BACKUP"  
+  
+5)  Changed #include statements where required by recent filename  
+changes, eg BNDARRAY.H -> BABNDA.H, COEDESCA.H -> BADESCA.H,  
+COEMATCH.H -> BAMATCH.H, COERSBUF.H -> BARSREAD.H, BLOMAIN.* ->  
+BABLO.H  
+  
+6)  Lots and lots and lots of global renames required by changes in  
+other system components, eg:  
+  
+7)  Changed all TCoeResourceReader to TResourceReader  
+  
+8)  Changed ->modifier and ->code to ->iModifier and ->iCode  
+  
+9)  Changed ->type to ->iType and ->position to ->iPosition  
+  
+10) Changed TPointerEvent::ELeftXxx to TPointerEvent::EButton1Xxx  
+  
+11) ... and so on; I even got into the act myself in a moment of  
+weakness, by renaming every XxxTickBoxYyy to XxxCheckBoxYyy, as  
+recommended by the international naming committee (and EIKTKBX.* has  
+been deleted, in favour of the new module EIKCHKBX.*)  
+  
+12) Note that various test programs will now have to link to  
+BAFLD.LIB (and BAFL.LIB) for the first time (whereas before that  
+functionality was delivered from CONED.LIB)  
+  
+13) Spotted by DavidA: the flags field of the EDWIN struct has had to  
+change from WORD to LONG, since the set of possible flags (as defined  
+in EIKCTRLS.HRH) exceeds 16 bits (there has been a corresponding  
+change in the function CEikEdwin::RestoreL)  
+  
+14) Modified the Eikon Server to understand that there are now nine  
+program buttons, and that they have a different order from before  
+  
+15) Old PROGBUTS.REG files in \e32data will fail to be loaded (since  
+there's no merit in mapping the data for the eight old buttons into  
+assignments for the nine new ones)  
+  
+16) Important!  You must ensure that your E32Dll() function returns,  
+not ETrue, but KErrNone - or else your app will fail to be loaded by  
+the O/S  
+  
+17) The O/S now tracks "cleanup stack heaven", and you may now get a  
+Panic(EClnLevelNotEmpty) if you have been lax here; various flaws in  
+cleanup stack handling in the test code and DLL code have been fixed  
+- usually by putting in a call to CleanupStack::PopAndDestroy() to  
+match an earlier call to CreateResourceReaderLC()  
+  
+From Julian:  
+------------  
+18) New virtual function ChangeFormatL() defined at the CEikPicture  
+level, with a concrete implementation at the CEikDoor subclass  
+  
+19) This concrete implementation launches the new "Picture format"  
+dialog (from the new module EIKPICDG.*) allowing the scale factor and  
+the crop margins to be specified for the picture (this dialog is  
+currently a "home-brewed" version of what will become in due course a  
+multi-page dialog)  
+  
+20) The API to DrawGlassDoor has changed, to pass additional  
+parameters specifying the cropping and scaling  
+  
+21) See the document class in TEdwin1 for an example of dealing with  
+these extra parameters (note that this API is undergoing evolution  
+and is subject to further change)  
+  
+22) The non-door pictures in TEdwin1 (ie "Simple" picture and "File  
+bitmap" picture) also support scaling and cropping  
+  
+23) The persistence for CEikDoor has been altered to record the scale  
+factor and cropping margins as well  
+  
+24) New utility function GetCropInPixels() in CEikPicture, which is a  
+candidate for migration to CEikDoor  
+  
+From Siamak:  
+------------  
+25) Modified CListBoxView::DeselectItem() so that it no longer panics  
+if asked to deselect an item that no longer exists (under the  
+rationale that it has just been removed and that it is convenient to  
+allow this lassitude to the caller); the item index will be removed  
+from the array of selected items, but no attempt will be made to  
+redraw the item  
+  
+26) Defined a new enumerated type called TListItemViewerColors in  
+order to avoid global constants for the color values used by the list  
+item viewers  
+  
+27) Modified CListBoxView::VScroll() so that it now hides the  
+incremental matcher cursor (if any) before scrolling, and shows it  
+after scrolling (but only if it still visible)  
+  
+28) Modified CEikChoiceList::DoCreatePopoutL() so that it now calls  
+the recently added function UpdateScrollBarThumbs() of the popout  
+listbox (to avoid the thumbs being wrongly located, in the case when  
+the initial current item index is non-zero).  
+  
+  
+Version 0.01.044  
+================  
+(Made by DavidW, 18 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012  
+  
+Enough is enough!  This is the 26th Eikon release based on E32/054.   
+It will also be the *last* Eikon release based on E32/054.  The next  
+one (whenever it arrives) will be based on E32/056 (or later!).  
+  
+Debug variant only released  
+  
+From Bret:  
+----------  
+1)  The Eikon calendar control now exists, in the new module EIKCAL.*  
+(There are now 65 different *.CPP source files in \eikon\src)  
+  
+2)  CEikCalendar is a very flexible control, imposing little policy  
+decisions in its own right; in general, its behaviour is customized  
+by filling in the CALENDAR struct in a resource file definition  
+  
+3)  For several examples of what's possible, see the new test code  
+TCal (don't be surprised by the fact that nothing apparently happens  
+when you start it up - it's just lacking a "client window" display  
+for now - but press F9 and choose an item from its menu)  
+  
+From Simon:  
+-----------  
+4)  TLBox1 has been converted to use a Directory Contents list box  
+(for its "right hand side" displays) rather than a vanilla one; at  
+present, this listbox only show filenames and a bitmap  
+  
+5)  For now, a directory that has a parent is indicated by the first  
+item in the list being ".."; selecting this will navigate to the  
+parent directory  
+  
+6)  It is now possible to select sub-directories in the DC listbox,  
+which will navigate to them (previously this was only possible from  
+the left-hand side: the hierarchical directory browser)  
+  
+7)  CListBox::ItemSize() now takes a TInt as a parameter - this was  
+needed for hierarchical lists to calculate their sizes accurately  
+  
+8)  Made the bitmap FSELFILE.PBM slightly wider, so it wouldn't be  
+stretched in the DC listbox  
+  
+9)  Removed the events EEikCeItemCollapsed and ...ItemExpanded from  
+EIKEVENT.H, introducing EEikCeHierItemStateChanged instead  
+  
+From Neil:  
+----------  
+10) Fixed a bug in CEikEdwin whereby sizing could go wrong after  
+removing both scrollbars because the scrollbar frame was being  
+destroyed too early; fixed the corresponding bug in CEikListBox  
+  
+11) Fixed bug in CEikMultiColumnListBox::CalcDataWidth() which gave  
+one less than the true value in most cases (remainder was being  
+ignored) which resulted in a misleading horizontal scrollbar  
+  
+12) Fixed CEikListBox::HandlePointerEventL() no longer to ignore most  
+repeat down events  
+  
+13) Improved position and sizing of popout listbox from choicelists  
+(to cope with the presence of a vertical scrollbar in this listbox)  
+  
+14) Added front-end query dialogs to both TScrlB1 and TScrlB2 to  
+determine scrollbar tiling mode (inclusive or exclusive) - to avoid  
+having to exit/change/recompile every time  
+  
+15) Other minor fixes and improvements to scrollbar logic here and  
+there  
+  
+From Siamak:  
+------------  
+16) Moved the "popout listbox" flag out of EIKCTRLS.HRH to a more  
+appropriate place, ie EIKLBX.H  
+  
+17) Made the initial value of the "current item index" be 0 if the  
+listbox has one or more items, and -1 if it is empty; this simplifies  
+various parts of listbox code  
+  
+18) Modified various routines in the listbox control/view so that  
+there are no panics if the listbox model is empty  
+  
+19) Put the color constants used by the listbox item viewer into its  
+own header file so that they can more easily be used by all item  
+viewers  
+  
+From Arwel:  
+-----------  
+20) New public Construct() function in CEikProgressInfo to allow  
+creation of a tailored progress control without using a resource  
+  
+21) New struct SEikProgInfo used in the Construct() function  
+  
+22) Created a private BaseConstruct() function to separate out teh  
+processing which is common to both Construct() and RestoreL().  
+  
+  
+Version 0.01.043  
+================  
+(Made by DavidW, 17 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012  
+  
+For a change (and as a sanity check), both Release and Debug variants  
+are released this time  
+  
+From Neil:  
+----------  
+1)  Converted listboxes to use CEikScrollBarFrame, and as such  
+support auto-scrollbar visibility  
+  
+(this allows pop-out listboxes to display a vertical scrollbar on an  
+auto basis, ie it is shown precisely when it is needed)  
+  
+2)  The former flag EEikListBoxHScrollBar has split in two, ie  
+EEikListBoxFixedHScrollBar and EEikListBoxAutoHScrollBar, and  
+similarly for the vertical direction  
+  
+3)  Upgraded TScrlB2 to test this new implementation of listbox  
+scrollbars  
+  
+From Siamak:  
+------------  
+4)  Modified CEikListBox::HandleListUpdate() so that now upon  
+encountering an invalid top/current item index, it clears the  
+selection and sets the current and top item indexes to zero  
+  
+5)  On a request from Bill, added two listbox events: "enter key  
+pressed" and "item clicked"  
+  
+6)  Fixed bug in CEikListBox::SetListBoxFlags(), which now only  
+creates an incremental match buffer if the incremental match flag has  
+been specified and the match buffer hasn't already been created  
+  
+7)  Added a new (internal) listbox flag, EEikListBoxPopout, which  
+should get set for any listbox that is popped out (this alters the  
+events that it reports to its observer), eg a choice list sets this  
+flag for the listbox it pops out  
+  
+8)  Changed the OfferKeyL() and HandlePointerEventL() functions of  
+CEikListBox so that Interaction Confirmed/ Cancelled events now only  
+get generated for popout listboxes (not embedded listboxes)  
+  
+From Kevin:  
+-----------  
+9)  Various changes to MFNEs, prior to the introduction of the  
+forthcoming combined Date/Time editor (all on one line option, as  
+required in the Agenda):  
+  
+10) New panics added, and more __ASSERT_DEBUGs  
+  
+11) Some functions which could Leave have had ...L added  
+  
+12) Integer editors with only single fields can now be 'bumped' up  
+and down with the left/right arrow keys, and display ears when  
+emphasized  
+  
+13) When typing into a field, the cursor can no longer be moved;  
+attempting to do so moves to the next/previous field  
+  
+From MartinD:  
+-------------  
+14) Upgraded test code TComBox to the CEikDocument architecture, and  
+to the new implementation of combo boxes.  
+  
+  
+Version 0.01.042  
+================  
+(Made by DavidW, 13 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012  
+  
+Debug variant only released  
+  
+"MNT TOOLS" has been upgraded to fetch build 103 of EIKTOOLS  
+  
+The demise of ..\incg:  
+----------------------  
+1)  You should rd /s your ..\incg directories, and be sure you type  
+"MNT TOOLS" (or, more selectively, "MNT EIKTOOLS") to fetch build 103  
+of EIKTOOLS; on careful reflection, ..\incg is a menace, since people  
+can too easily be caught out by having one version of (eg) EIKON.RSG  
+in one of these places, and another version in the other  
+  
+2)  EIKRS.BAT and related batch files now create the generated *.RSG  
+file directly in \e32inc, just as the generated *.RSC is always put  
+direcly in \e32data; this is a much simpler scheme  
+  
+3)  You can edit your System Setup on your PC to remove all reference  
+to "..\incg" from the INCLUDE environment variable (and, if you like,  
+you can remove it from the search path for the preprocessor inside  
+Project Settings for programs - this has been done for all live Eikon  
+test code)  
+  
+4)  While on the subject of MNT.CMD, I modified its GETSRC verb, to  
+make sure that EIKPRG.DEF is always copied from ..\inc to \e32inc  
+  
+5)  Removed all mention of the "old" RCOMP (and the associated "HCIL  
+TOOLS") from MNT.CMD  
+  
+From Julian:  
+------------  
+6)  The code in CEikChoiceList has been moved in part to a new base  
+class, CEikChoiceListBase, from which CEikChoiceList now derives;  
+other subclasses can supply a different kind of "popout"  
+  
+7)  New class CEikGray16Selector demonstrates the use of the new  
+CEikGray16Palette control as its popout, rather than the standard  
+listbox (both these CEikGray16Xxx classes will be used in Paint, and  
+will also be available for use by other applications; their code is  
+in the new module EIKGYSEL)  
+  
+8)  CEikGray16Selector also replaces the DrawContent() function of  
+CEikChoiceList, to pleasing effect (showing a rectangle in the shade  
+of gray to be selected)  
+  
+9)  Changed the Color dialog in TDialg1 to use a Gray16 selector  
+rather than a number editor as before  
+  
+10) Restructured the combo box control CEikComboBox so that it can be  
+used in a dialog (previously it was restricted to custom use by  
+applications in their own views); eg Find dialogs (such as in TextEd)  
+should be able to use it  
+  
+11) CEikComboBox no longer automatically adds new text entries typed  
+by the user, into its associated array, but provides a function  
+InsertTextIntoArrayL() for this purpose; in a dialog, this would  
+normally be called from the OkayToExitL() function; other windows  
+owning a combo box control will have to make their own decisions  
+  
+12) Shoe-horned an example of a combo box in a dialog into the  
+Floating Point editor in TDialg1  
+  
+From Siamak:  
+------------  
+13) Modified hierarchical listboxes to the new listbox model design;  
+TLBox1 is reinstated as live Eikon test code  
+  
+14) Added basic support for bitmap drawing to  
+CBitmapAndTextListItemViewer (not finished yet)  
+  
+15) Fixed HandleListUpdate() in CEikListBox so that it now checks to  
+ensure the current and top items are still valid; if the top item  
+index is invalid, it gets reset to 0; if the current item index is  
+invalid, it gets reset to the top item index  
+  
+From SimonC:  
+------------  
+16) Further internal changes to hierarchical listboxes (however they  
+are a bit fragile at the moment, in the wake of the recent  
+reorganization)  
+  
+17) Started a new module EIKDCLBX.* for the Directory Contents  
+listbox to be used in file selectors (at the moment TLBox1 still uses  
+a standard listbox, pending the removal of bugs in the DC listbox)  
+  
+18) Shrunk the bitmaps used by the sort order buttons in the file  
+selector dialog, and set the dense packing flag for them  
+  
+19) New bitmap FSELFILE.PBM for use in the DC listbox  
+  
+20) Adjusted the drawing code for buttons to reset the font to the  
+system font if necessary on completion.  
+  
+  
+Version 0.01.041  
+================  
+(Made by DavidW, 12 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012  
+  
+Debug variant only released  
+  
+"MNT TOOLS" has been upgraded to fetch build 302 of RC3 and build 102  
+of EIKTOOLS  
+  
+From Siamak:  
+------------  
+1)  The first phase of a set of design changes to listbox model  
+classes:  
+  
+2)  CEikItemList has been split into two mixin classes:  
+MListBoxModel, and MBitmapAndTextListBoxModel (this is only really of  
+interest to people who want to create their own listbox model  
+classes) with consequent changes in API  
+  
+3)  CEikSimpleItemList has been renamed to CStandardListBoxModel;  
+this inherits from CBase and from the above-mentioned two mixins  
+  
+4)  The function List() in CEikListBox, which was used for getting a  
+pointer to a listbox control's model, has been renamed to Model()  
+  
+5)  The ConstructL() functions of all types of listboxes now take two  
+additional parameters: a pointer to a listbox model and a pointer to  
+a list item viewer; you can however simply pass NULL for these  
+parameters and instances of the standard list box model and item  
+viewer will be created for you automatically  
+  
+6)  As can be seen, the prefix "Eik" has been removed from various  
+classes which are actually independent of the core of Eikon (and  
+which could easily be relocated in a separate DLL if required)  
+  
+(Note that these changes haven't been finished yet, particularly in  
+the area of hierarchical listboxes, which has been commented out for  
+the time being - and TLBox1 has been temporarily REMed out of the list  
+of live Eikon test applications in \eikon\tsrc\bld.cmd; various other  
+cosmetic problems are known about and are receiving attention)  
+  
+From Neil:  
+----------  
+7)  Implemented CEikScrollBar::SetLengthAndModel()  
+  
+8)  Added an argument to CEikScrollBar::MoveResizeThumb() which  
+enables the caller to force the shaft and thumb to be completely  
+redrawn (this fixes bugs like the one seen in TScrlB1 when increasing  
+the length of the scrollbar has no effect on the size and position  
+of the thumb and so the shaft wasn't being redrawn - leaving images  
+of the buttons there)  
+  
+9)  Made CEikScrollBar::MinVisibleLength() static, by requiring the  
+flags to be passed in; this is very useful for the scrollbar frame  
+  
+10) Various changes in CEikScrollBarManager to keep things consistent  
+for now (before the eventual demise of this class)  
+  
+11) Rewrote some of the CEikScrollBarFrame code determining scrollbar  
+visibility; storing the scrollbar widths as part of the scrollbar  
+frame, along with CEikScrollBar::MinVisibleLength() being static,  
+means that scrollbar creation/destruction can now be deferred until  
+ALL size/model considerations are taken into account  
+  
+12) Two new flags to prevent the models of the horizontal/vertical  
+scrollbars being modified - useful for wrapping cases in edwins; this  
+code handles "vertical wrapping" (as in snaking column list boxes) as  
+well as "horizontal wrapping" (as in edwins)  
+  
+13) Changed CEikScrollBarFrame to use SetLengthAndModelL() function  
+of CEikScrollBar, for less flickery tiling  
+  
+14) Fixed the edwin code to enable/disable wrapping (which had  
+previously been temporarily commented out)  
+  
+15) CEikEdwin now sets its scrollbar models ignoring scrollbar  
+presence (with its subsequent impact on window size), leaving it up  
+to the scrollbar frame to deal with this epicycle  
+  
+From Natascha:  
+--------------  
+16) Added "preview" controls (using CEikTag) to the Number Format,  
+Time/Date Format, and Currency Format dialogs in the Shell - this  
+takes Eikon dialog technology to a new level of user feedback  
+  
+From Brendan:  
+-------------  
+17) Changed CEikClock family back to the "original" control design,  
+instead of trying to offset Rect() by Position(); changed the way  
+that "dynamic clocks" (currently in TBmp test code) are implemented  
+as a result - now using a container control  
+  
+18) Changed iOffset field in clocks to be a TInt64, so it can hold  
+microseconds  
+  
+19) Changed source to take a TInt32 so that a clock can be offset by  
+the number of seconds in a day  
+  
+From DavidW:  
+------------  
+20) Improved cleanup code after an EditL failed for a sub-document.  
+  
+  
+Version 0.01.040  
+================  
+(Made by DavidW, 11 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012  
+  
+Debug variant only released  
+  
+Uses FONTS 015 for the first time  
+  
+"MNT TOOLS" has been upgraded to fetch build 301 of RC3 and build 101  
+of EIKTOOLS  
+  
+From DavidW:  
+------------  
+1)  Eikon now supports pictures and doors "properly", with the  
+classes CEikPicture, CEikPictureHeader and CEikDoor in the new module  
+EIKDOOR.*  
+  
+2)  The test application Write is currently the only "door  
+container"; use its Insert Picture command, and choose "Object.." to  
+insert (and edit) a glass door of the TEdwin1 type (you'll need to  
+have built TEdwin1 first); inside TEdwin1, you get five one-line  
+editors; when you "close the door" (by Quit-ing TEdwin1) you see the  
+contents of these editors drawn in miniature, in Tiny font, inside a  
+glass door  
+  
+3)  TEdwin1 is currently the only application that *actively*  
+supports drawing a glass door, but all applications inherit a  
+"default" glass door, which is a grey rectangular blob  
+  
+4)  Use the "Change object type" command in the Edit menu of Write  
+(or press Ctrl-Shift-O) to alter the default object type in Write  
+from TEdwin1 to anything else that takes your fancy - eg Paint (if  
+you have built Paint - start from its code from the 004 build) or  
+TEdwin0; each of these applications will allow you to run them up as  
+a sub-application, and will edit the data Write stores on their  
+behalf; it's just that, for now, they won't show any of this data in  
+their glass door  
+  
+5)  New functions in CEikDocument to support doors: DrawAsGlassDoor()  
+and GlassDoorSizeL(); if your application supports these functions,  
+it should draw glass doors properly too; see TEdwin1 as an example  
+  
+6)  Other things your application need to do for this to work: save  
+changes on Exit automatically, and respect any need to draw up a  
+"Title window" (which might have text in it like "Picture in Write")  
+  
+(The "Change object type" dialog in Write is a temporary kludge; a  
+version coming soon will present a list taken from some kind of  
+registry of glass door-supporting applications)  
+  
+7)  Eikon supports both door-pictures and non-door pictures, as can  
+be seen in Write: the "Insert picture" dialog here offers a choice of  
+a "simple" picture, and "bitmap from file" picture, and an "object";  
+the first two involve a dialog to specify them and edit them, whereas  
+the third involves a whole application  
+  
+8)  CEikDocument now inherits from MPictureHeaderFactory (as well as  
+CBase), supplying the function NewPictureHeaderL which creates an  
+instance of CEikPictureHeader; CEikPictureHeader only knows about  
+door-pictures, and applications with non-door pictures have to  
+override the NewPictureHeaderL function to create an instance of an  
+application-specific subclass of CEikPictureHeader (see Write for the  
+details)  
+  
+9)  Once you've inserted a picture, of any type, its type gets  
+remembered automatically, and next time you Edit it (in Write, use  
+Ctrl-E) it will automatically do the right thing - running up a  
+dialog as required, or the applicable application  
+  
+10) The protocol for an application being told about a change in a  
+sub-document has changed: the callback function is now located in  
+CEikAppControl and is called HandleSubDocumentChangeL(); a pointer to  
+the sub-document CEikDocument object is passed as a parameter  
+  
+11) Removed the iProfileChanged TBool field in CEikAppControl, to  
+encourage applications to write out profile changes immediately, as  
+is the new philosophy, rather than hanging on to them until the next  
+Exit command  
+  
+12) Fixed a few old StoreL() and RestoreL() functions that ought to  
+have had their names changed to InternalizeL() and ExternalizeL()  
+ages ago  
+  
+13) Made some more of the functions of TEikDocHeader public, to allow  
+other data to be streamed into the same stream with the  
+TEikDocHeader; for example, this happens with CEikDoor, which stores  
+its own private data in advance of the document header data  
+  
+14) Miscellaneous rationalization of the code in Write  
+  
+From Pieter:  
+------------  
+15) Significant re-write of parts of the console subsystem and its  
+test module TCons0:  
+  
+16) Added Font() method which returns the fontspec of the current   
+console font  
+  
+17) Extended SetScrollBarVisibilityL(TInt aHBarWanted,TInt   
+aVBarWanted,TInt aHBarFlags=0,TInt aVBarFlags=0);  
+   Note the L at the end. It should have been there in the first   
+place)  
+  
+18) Cleaned up the code, made some useful comments, removed two   
+never-used variables, renamed some others to clearer terms  
+  
+19) CEikConsoleWindow (the platformdependent part of the console) now  
+does not subclass HandleRedrawEvent any more, but rather the Draw()   
+methods. It now behaves much more like a window should (i.e. you can   
+use DrawNow, SetExtentL etc.). It will also NEVER invalidate anything  
+(but rather immediately update what it used to invalidate) so that you  
+can now use it with a backed-up window  
+  
+20) Centralized some low-level stuff into UpdateArea, which will  
+adjust the console to the currently visible area, and is called by   
+SetExtentL, SetFont and SetScrollBarVisibilityL  
+  
+21) Cleaned out stuff from TCons0 that had nothing to do with the  
+console. All menu options now have something to do with the console  
+and (mostly) actually do something  
+  
+22) TCons0 now shows:  
+     - claiming a console  
+     - selecting scrollbars  
+     - styles (normal,bold,italic,inverse,underlined   
+               and combinations, or color)  
+     - changing the cursor size  
+     - zoom in, zoom out, switching fonts  
+     - show/hide cursor, track/ignore cursor,   
+     - scroll lock on/off  
+     - print all/print printable  
+     - moving the cursor around (with arrows)  
+     - selecting pieces of text (with SHIFT-arrows), copy, paste  
+     - changing the screen size  
+     - all of the above with or without using a backed-up window  
+  
+From Natascha:  
+--------------  
+23) Improvements to the Number Formats and Currency Formats dialogs  
+in the Shell:  
+  
+24) To constrain and inform the user in choosing decimal and  
+thousands separators, there's now a choice list rather than an  
+editor; if the current value doesn't belong to the set in the  
+original choice list, it gets added on dynamically  
+  
+25) The Currency Format dialog now supports changing the currency  
+symbol (however the E32 routine it calls to effect the change doesn't  
+work).  
+  
+  
+Version 0.01.039  
+================  
+(Made by DavidW, 9 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012  
+  
+Debug variant only released  
+  
+From Brendan:  
+-------------  
+1)  Changed the alarm alert to keep track of its current state, so  
+that drawing is improved; this results in significantly quicker  
+button response time  
+  
+2)  Changed TBmp, TBmpTag and TWldSl to use a container window as  
+their main view, to hold their various controls, rather than  
+subverting the control stack features of the CEikAppControl for this  
+purpose (and getting into trouble as a result)  
+  
+3)  Tidied some aspects of the alarm header files  
+  
+From DavidW:  
+------------  
+4)  Rearranged some of the code in TEdwin0 to bring it more into line  
+with the standard form of an application, ie with the CGlobalText  
+object now being owned by the CEikDocument class, rather than by the  
+CEikEdwin (since in general for this kind of app, the CGlobalText must  
+survive the demise of the CEikEdwin)  
+  
+5)  Added a menubar to TEdwin1, adding (working) commands for  
+FileNew, FileRevert, FileQuitNoSave, EditCut, EditCopy, EditPaste,  
+ProfileOpen, and ProfileSaveAs  
+  
+6)  New utility functions CmdFileRevertL and CmdFileQuitNoSaveL in  
+CEikAppControl, which should be suitable to be called directly by all  
+applications that support these commands (see TEdwin1 for an example)  
+  
+7)  New functions OpenByFileL() and SaveByFileL() in CEikAppProfile,  
+providing the functionality of the ProfileOpen and ProfileSaveAs menu  
+commands in eg TEdwin1, allowing the user to make a new profile file  
+from the current settings, or to switch to using a different file  
+  
+8)  New functions CmdProfileOpenL and CmdProfileSaveAsL in  
+CEikAppControl, which should be suitable to be called directly by all  
+applications that (for test purposes at least) support these commands  
+(see TEdwin1 or TBut0 for examples)  
+  
+(the "Open profile" dialog used here is currently a bit rudimentary,  
+allowing the user to select a profile belonging to an inappropriate  
+application - though no harm comes from this)  
+  
+9)  The "application name" field in the document header now refers by  
+default to a Profile *.APF file, rather than (as before) to a Program  
+*.PRG file - though if no profile with the given name is found, the  
+name is next interpreted as being a *.PRG file after all (this means  
+that the changeover doesn't require existing document files to be  
+trashed)  
+  
+10) For example, you can create more than one different profile for  
+TEdwin1 - eg one with a "gray" background and one with a "white"  
+background - and then assign documents to these two profiles; the  
+dialogs in the Shell will report which profile each document belongs  
+to (and also which program each profile belongs to) and will run the  
+write program (using the right profile) in each case  
+  
+11) Added support for changing profiles to TBut0, via a pop-up menu  
+activated by holding the pointer down and still on the main window  
+for one second; seeing that the contents of the TBut0 profile is the  
+layout of its toolbar, this allows a whole family of different  
+toolbar layouts to be prepared in advance, and then quickly selected  
+(not intended as a realistic application scenario, but rather to  
+exercise the profile technology)  
+  
+12) Split up the EikDll::StartPrgDllL() function, which used to take  
+four parameters, into three different single-parameter functions:  
+    StartPrgFromApfNameL(const TDesC* aApfName);  
+    StartPrgFromDocNameL(const TDesC* aDocName);  
+    StartPrgFromPrgNameL(const TDesC* aPrgName);  
+with the result that there is less code in the Shell dialogs  
+associated with these various "program start" options, and more code  
+in the EikDll class; in all cases, the thread-name is now calculated  
+from the other parameters (by default from the profile name)  
+  
+13) Reinstated some support for sub-applications, ie applications  
+running within each other: Write still can't run Paint  
+sub-applications, but can now run TEdwin1 sub-applications, and the  
+(presently hard-wired) list box of picture types Write supports has  
+been extended to include "TEdwin1"  
+  
+14) TEdwin1 objects don't (yet) show as *glass* doors inside Write,  
+but instead as a shaded rectangle, which you need to "Edit picture"  
+on (or Ctrl-E) in order to see the contents; one *big* change from  
+before, however, is that these pictures handle the document  
+architecture correctly, ie there is a CEikDocument instance for each  
+picture; also there is no longer any memory leak just by virtue of  
+running up the sub-application  
+  
+15) The above has required some clarification in the former CEikDll  
+function "StartLocalPrgDllL", which has itself vanished, being  
+replaced (most nearly) simply by the existing EditL function of  
+CEikDocument; part of its functionality has been taken over by a new  
+EikDll function CreateDocumentL taking a const TDesC* aApfName  
+parameter  
+  
+16) Supporting CEikDocuments created without a corresponding  
+CEikAppControl has shown up one flaw in the overall start-up scheme,  
+which has meant that the VirtualConstructL function of CEikDocument  
+now needs to be called slightly earlier than before; this is now  
+called (as is obvious in retrospect) in all cases when a CEikDocument  
+instance is created, regardless of whether or not it is about to be  
+EditL()ed; at the time when VirtualConstructL was called before,  
+there's now a new virtual call to CEikDocument, called (it turns out)  
+NotifyProfileLoadedL (because that's what it is); most applications  
+won't need to supply a NotifyProfileLoadedL function.  
+  
+  
+Version 0.01.038  
+================  
+(Made by DavidW, 6 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012  
+  
+Debug variant only released  
+  
+From DavidW:  
+------------  
+1)  Many changes to application startup and closedown code, in line  
+with the developments in CONE 068  
+  
+2)  The old module EIKAPF.* has been renamed to EIKAPFHD.*, for the  
+Application Profile File Header class TEikApfHeader, and there is now  
+a new module EIKAPF.* containing CEikAppProfile, the application  
+profile class  
+  
+3)  Note that the format of the header of APF files has changed, so  
+you should delete all \PROFILES\*.APF files (though if you do not,  
+the new profile header loading code ought to give you a reasonably  
+helpful error message as to why an app has failed to start)  
+  
+4)  As the name implies, CEikAppProfile takes over the "profile"  
+parts of the functionality of CEikDocument; note that, in general,  
+the cardinality of CEikAppProfile instances will differ from that of  
+CEikDocument instances, since there can be two (or more) documents in  
+an environment, sharing the same profile (eg an EMail application  
+modelessly editing two different messages at the same time)  
+  
+5)  CEikDocument now defines a new virtual function,  
+CreateAppProfileL(), which by default returns NULL, meaning that the  
+application is too simple to require a profile; replace this function  
+(as in TEdwin1) to cause the system to create a profile object for  
+you when required  
+  
+6)  There's a bit of an asymmetry between the two virtual functions  
+CreateAppProfileL and CreateAppControl in CEikDocument: the former is  
+optional, and Leaves on failure (to allow system code to distinguish  
+an intentional NULL return from an OOM failure), whereas the latter  
+is presently compulsory, and is therefore declared *pure* virtual  
+  
+7)  Note that your application profile can now have a different  
+file format version number from your document files; just supply a  
+GetProfileVersion() function, to override the default behaviour  
+(which uses the same version number for both)  
+  
+8)  Instead of providing an EikonEnvironmentReadyL() function, in  
+your CEikAppControl-derived subclass, you now provide a function  
+named VirtualConstructL(); part of the reason for the name change is  
+that the EikonEnvironmentReadyL callback from CEikAppControl and the  
+ControlEnvironmentReadyL callback from CCoeAppControl have been  
+merged, as a result of general streamlining of the startup system  
+  
+9)  New function CEikonEnv::CustomLeave(TInt), taking a resource ID  
+as a parameter, which is similar to User::Leave(TInt aError), except  
+that in the latter case, the resulting alert dialog shows the system  
+error text for the given error number, whereas in the former case,  
+the alert dialog shows the text of the specified resource TBUF  
+  
+10) As an example of the use of CustomLeave, you should now get a  
+more friendly error message if you try to run a PRG (or PRD) file  
+that hasn't been linked with the latest Eikon, or which doesn't  
+provide the required EXPORT function  
+  
+11) Another consequence of the rearrangement of the startup code is  
+that non-existent applications get reported to the user, eg try  
+clicking on the Data button (assuming you don't have a DATA.PRG file  
+handy, and also assuming you haven't redefined what the Data button  
+means) and there will now be a "File does not exist" alert  
+  
+12) Removed the CPrintSetup* field from CEikDocument, since it is up  
+to applications whether this belongs inside their document class,  
+their profile class, or neither  
+  
+13) Removed CEikDocument::Destruct(); just use the C++ destructor  
+instead  
+  
+14) The beginnings of a CEikProcess class are in place, in the new  
+module EIKPROC.*; CEikProcess contains a pointer to the "main  
+document" of the environment, which it is regarded as owning (whereas  
+other documents in the environment will tend to be owned by objects,  
+such as pictures, inside the first document  
+  
+15) Documents ask the CEikProcess object for the handle to their  
+Profile object, if they are going to need it; eg see the line of code  
+  
+    CEikProcess::GetProfileHandleL(document,&startData->ApfName());  
+  
+from CEikonEnv::ConstructEikonEnvL, where the first parameter is the  
+CEikDocument class in question, and the second is the name of the  
+profile APF file; the CEikProcess class will spot if a CEikProfile  
+with that name is already loaded, in which case that will be used for  
+the new document as well; otherwise the CreateAppProfileL() function  
+of the document will be invoked; in either case, the "access count"  
+of the CEikAppProfile gets incremented  
+  
+16) CEikDocument now contains a CEikAppProfile* pointer; upon  
+destruction of the document, the following code is executed  
+  
+    if (iAppProfile)  
+        iAppProfile->RemoveDoc(this);  
+  
+so that the access count in the CEikAppProfile gets decremented; the  
+CEikAppProfile will auto-destruct on reaching a zero access count:  
+  
+EXPORT_C void CEikAppProfile::RemoveDoc(CEikDocument* aDocument)  
+    {  
+    TInt pos=FindPos(aDocument);  
+    Delete(pos);  
+    if (!Count())  
+        delete(this);  
+    }  
+  
+17) Removed all PNT*.PBM files from \eikon\srcdata, with ownership of  
+these files being transferred to the Paint application (which is  
+renaming them).  You should do a "del \e32data\pnt*.pbm"  
+  
+18) Fixed a bug in CEikEdwin::HandlePointerEventL, which meant that  
+clicking on a Edwin sometimes failed to give it the focus  
+  
+19) Renamed all TXxxData classes in TDialg1 to TXxxModel classes  
+instead, in line with prevailing naming conventions; there's no  
+*single* document model in TDialg1 (though it wouldn't be hard to  
+create one), but many  
+  
+20) Rewrote TEdwin1 substantially, making it fully profile- and  
+document- store-aware; it also has separate "DocumentModel" and  
+"ProfileModel" classes  
+  
+21) Note that system startup involves the creation and initialization  
+of (up to) four key interconnected objects: instances of (subclasses  
+of) CEikonEnv, CEikDocument, CEikAppProfile, and CEikAppControl;  
+there are many "chicken and egg" situations here, with the object  
+creation being separated from the initialization ("construction"),  
+and with the "construction" taking several stages; the four objects  
+get created in the order listed above  
+  
+22) In all four cases, there's a function called VirtualConstructL  
+which is intended for applications to replace, and which gets called  
+at a suitable stage, once that object has already been partially  
+constructed; ignoring the CEikonEnv case (which is primarily for  
+system code), the order in which these callbacks occur is  
+CEikAppProfile first, then CEikDocument, then CEikAppControl; the  
+profile gets loaded from file (if the file exists) in between the  
+VirtualConstructLs of CEikAppProfile and CEikDocument  
+  
+23) System closedown has lots of "chicken and egg" problems in  
+reverse; a particularly thorny problem has been the timing of the  
+destruction of the CEikProcess object (and with it the main  
+document); for now, this is done in the new DestroyScreen() callback  
+from CControlEnv, just prior to the screen device being deleted (but  
+after the AppControl for the document has been destroyed)  
+  
+24) There's no longer a reserved slot in the APF header for a stream  
+ID of toolbar customization data; instead, applications are free to  
+put this data somewhere in their document instead, if they wish (or  
+not to put it anywhere); TBut0 has been revised to show how to put  
+the toolbar customization data in its APF file  
+  
+25) Both TBut0 and TEdwin1 show the mechanism for getting changes in  
+profile data reflected back to the application; after changing the  
+data, they simply call the SaveProfileL function in CEikAppControl  
+(which in turn layers upon a similar function in CEikDocument); in  
+due course the document class receives a NotifyProfileChangedL()  
+message, which by default (as in TBut0 and TEdwin1) just sends on a  
+HandleProfileChangedL() message to the CEikAppControl  
+  
+26) Note that the HandleProfileChangedL() function in CEikAppControl  
+is partnered by a HandleDocChangedL() function, with similar meaning,  
+which can get triggered by the CEikDocument object sending itself a  
+NotifyAppControlNewDocL() message (as in TEdwin1)  
+  
+27) Converted all live test code to the latest software ("live" means  
+its entry hasn't been REMed out of the BLD.CMD batch file for that  
+\eikon\xxx directory), with the exception that there's presently a  
+blocker preventing any attempt to run Paint from within Write (partly  
+because I haven't updated Paint, and partly because the system for  
+running sub-applications is almost certainly broken at the moment)  
+  
+From Siamak:  
+------------  
+28) Simplified and improved horizontal scrolling in MC (multi-column)  
+listboxes; the horizontal scrollbar is now set in terms of columns  
+rather than pixels  
+  
+29) Modified the PgUp/Dn handling code for MC listboxes, to prevent  
+the highlight from disappearing from view  
+  
+30) Modified CEikListBox::SetEmphasis so that it now calls a function  
+RedrawItemsAffectedByChangeInEmphasis() rather than having the effect  
+of drawing all visible items.  
+  
+  
+Version 0.01.037  
+================  
+(Made by DavidW, 4 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/067 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012  
+  
+Uses TBOX 046 and CONE 067 for the first time  
+  
+(It's no longer necessary to copy any file r:\eikon\temp\tboxd.dll  
+into your \e32sys directory)  
+  
+Debug variant only released  
+  
+From Neil:  
+----------  
+1)  CEikScrollBarFrame::Tile() now returns a TBool to tell whether or  
+not the "output rect" was changed  
+  
+2)  Improvements to CEikEdwin::SetScrollBars() to stop the view being  
+reset or the window resized after any key that changes the scrollbar  
+model(s); it now only gets redrawn if necessary  
+  
+3)  Added a CEikEdwin::SetScrollBarVisibilityL() routine to  
+dynamically change scrollbar visibilities  
+  
+4)  Change to CEikEdwin::ResetViewL() to try to workaround various  
+limitations in CTextView - not yet fully satisfactory, though, and  
+new functionality in CTextView is awaited with interest  
+  
+5)  Upgraded TScrlB1 test code Properties dialog to allow  
+manipulation of most of the scrollbar settings  
+  
+6)  Various internal optimizations to scrollbar code  
+  
+From SimonC:  
+------------  
+7)  Added ExpandAllL() and CollapseAll() functions to the  
+hierarchical list box model  
+  
+8)  For consistency with CEikListBox, added ConstructL functions to  
+the directory tree list box  
+  
+9)  Removed the option of specifying only a single drive in  
+CFileSelectorContainer, as there is as yet no suitable way to  
+navigate to the drives choice list via the keyboard; for now, all  
+drives are always displayed  
+  
+10) Improved the handling of errors reported by the file server  
+  
+From DavidW:  
+------------  
+11) Various changes in line with the changes in CONE 067:  
+  
+12) Changed many calls to Exit(0) (eg in test code) to just be Exit()  
+instead  
+  
+13) Parts of the construction of CEikonEnv that presuppose the  
+existence of a root control (as a control stack) have been removed  
+from the ConstructDetailedEnvironmentL() call, and are now deferred  
+until the root control calls SetRootControlL(); in particular,  
+creating the alert window and the "debug keys control", both of which  
+presuppose a control stack  
+  
+14) CControlEnv::AlertWin() has been changed to test for the  
+existence of iAlertWin before proceeding; if it does not exist (as  
+can be the case during environment startup) it now sends an IPC  
+message to the Eikon Server, to display the alert message on its  
+behalf  
+  
+15) Rationalized some of the IPC routing calls between the Eikon DLL  
+and the Eikon Server; also rationalized some of the (rather ancient)  
+code inside parts of the Eikon Server  
+  
+16) Changed the means by which Eikon DLL code knows when it is  
+running on behalf of the Eikon Server (which it sometimes needs to  
+know); there is no longer a flag CEikAppControlIsEikServer - since  
+the root control is now inaccessible to the environment during the  
+early phases of system startup - but instead the Eikon Server  
+provides its own subclass of CEikonEnv (normally applications *can't*  
+subclass CEikonEnv, since they don't control the environment into  
+which they may be launched, but the Eikon Server application is an  
+exception)  
+  
+  
+Version 0.01.036  
+================  
+(Made by DavidW, 3 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/066 ETEXT/029 TBOX/045 PRINT/006 FONTS/013 ALWL/012  
+  
+Uses FONTS 013 for the first time (so degree symbols get displayed in  
+LatLong editors)  
+  
+Debug variant only released  
+  
+From Delma:  
+-----------  
+1)  Supplied simple test code for LatLong editor, in Numbers dialog  
+in TDialg1 (largely by removing comments formerly commenting out code  
+originally written by Kevin)  
+  
+From Julian:  
+------------  
+2)  Buttons now support being dimmed (displaying themselves  
+differently, and refusing pointer events)  
+  
+3)  An example of a dimmed button has been shoe-horned into the  
+Numbers dialog in TDialg1: toggling the "Change Max / Min" tick box  
+has the side-effect of dimming/undimming the "Dummy" button in this  
+dialog  
+  
+4)  Improved the drawing code for the Mover region in dialogs, so as  
+to reduce flicker when the title is dynamically changed (as can be  
+tested using the Buttons dialog in TDialg1)  
+  
+From Brendan:  
+-------------  
+5)  Changed the Alarm Alert to be a container window, rather than a  
+simple control  
+  
+6)  Drag events are now enabled in the Alarm Alert (so that users can  
+"roll off" buttons and see them come up again immediately)  
+  
+7)  The Alarm Alert now interacts more correctly with any other  
+visible dialogs (such as the Task List dialog) displayed by the Eikon  
+Server (change effected by keeping the Control Stack informed as to  
+the state of the Alarm Alert)  
+  
+8)  Added an inline templated function DeleteAndNullPointer<T> to  
+EIKREQD.H, with the contents { delete(aPtr); aPtr=NULL; }  
+  
+9)  Other internal improvements to the Alarm Alert code  
+  
+(As an overall result of these changes, the clock in the Alarm Alert  
+now animates straightaway, and the Silence button visibly dims when  
+required)  
+  
+From SimonC:  
+------------  
+10) Internal changes to the THierListItem struct, for improved speed  
+and reduced storage requirements  
+  
+11) Fixed various bugs in the Add and Remove item functions in the  
+directory browser  
+  
+12) Added a choice list containing available drives to the  
+CFileSelectorContainer (currently living in TLBox1); this doesn't yet  
+have any effect on other controls  
+  
+13) Had to change CalculateRequiredSizeL in eikchlst.h from protected  
+to public  
+  
+From Neil:  
+----------  
+14) Further progress with CEikScrollBarFrame, which now lives in its  
+own new module EIKSBFRM.*  
+  
+15) Converted CEikEdwin to use CEikScrollBarFrame (though there are  
+still some strange effects that will need further attention, and some  
+elements of CEikEdwin function may not fully work for the time being)  
+  
+16) Each former edwin scrollbar flag has now split in two, eg there  
+is now EEikEdwinFixedHScrollBar and EEikEdwinAutoHScrollBar, ie there  
+are both "fixed" and "auto" variants  
+  
+17) Finally renamed the "m" field in CEikScrollBar to "iModel" as per  
+usual naming conventions  
+  
+From DavidW:  
+------------  
+18) Various internal changes, in line with the conversion to CONE 066  
+  
+  
+Version 0.01.035  
+================  
+(Made by DavidW, 2 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/065 ETEXT/029 TBOX/045 PRINT/006 FONTS/012 ALWL/012  
+  
+This is an interim build, with a series of further changes imminent.  
+Only the Debug version EIKOND.DLL is being released; you can easily  
+build a Release version yourself if need be  
+  
+From Brendan:  
+-------------  
+1)  Put in place an alert dialog system, that can easily be made  
+extensible  
+  
+2)  Alert dialogs are derived from the mixin class MEikAlertControl;  
+the alarm alert controller is in a new set of files EIKALMC.*  
+  
+3)  Added the start of the alarm alert, including a plethora of  
+supporting classes  
+  
+4) TWldSl has two new toolbar buttons that allow you to set clock  
+alarms - either for "Now" or for in the near future  
+  
+5) Some internal reorganization and renaming of Eikon Server code  
+  
+6) Made "reset width and pos" public in CEikTagBase  
+  
+The alert dialog system has highlighted a range of problems in  
+various parts of system code:  
+  
+*)  The clocks in the Alarm alert do not start animating until  
+Ctrl-Shift-Alt-R is pressed  
+  
+*)  Buttons cannot be dimmed yet  
+  
+*)  Setting session alarms sometimes panics when the name of the  
+session is fetched  
+  
+*)  Snoozing cannot be properly accomplished at the moment, pending  
+changes in the alarm server  
+  
+  
+Version 0.01.034  
+================  
+(Made by DavidW, 2 Apr 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/065 ETEXT/029 TBOX/045 PRINT/006 FONTS/012 ALWL/012  
+  
+This is an interim build, with a series of further changes imminent.  
+Only the Debug version EIKOND.DLL is being released; you can easily  
+build a Release version yourself if need be.  
+  
+From SimonC:  
+------------  
+1)  The hierarchical listbox now draws lines connecting parent and  
+child/sibling entries  
+  
+2)  Added two new members to THierListItem to facilitate the above:  
+iParentIndex and iItemFlags  
+  
+3)  Improved the file selector container's error handling: it's now  
+much harder to get an alert when attempting to read an empty drive  
+  
+4)  Reduced the public interface of the hierarchical listbox model  
+  
+5)  Several other internal changes to fit in with the new design, eg  
+models are now called Models rather than ItemLists  
+  
+From Natascha:  
+--------------  
+6)  Added various "locale" dialogs to the Eikon Shell, allowing the  
+editing of currency formats, date and time formats, and number  
+formats; altering the settings in these dialogs has an effect on  
+controls such as twips editors or date editors in other applications  
+  
+7)  Made the titles for the Spacing and Indents dialogs dependent on  
+the locale settings for units (imperial vs metric), ie in English  
+either "(in)" or "(cm)" gets appended as required  
+  
+8)  Made a start on indeterminate states being allowed in various  
+other controls, eg choice lists and twips editors display blanks, and  
+if ok'd in this blank state will actually leave the alignment  
+settings as they were for each paragraph  
+  
+9)  Altered the validation routine for twips editors, which normally  
+disallows blank data, to accept it in the case when the twips editor  
+was initially in the indeterminate state  
+  
+From Delma:  
+-----------  
+10) Uncommented the latitude/longitude editor code in EIKNUMED.*,  
+and made various changes to it so that it worked  
+  
+(Test code will be available to demonstrate this shortly)  
+  
+From DavidW:  
+------------  
+11) Converted CEikEdwin to use TBox 045; as a result, among other  
+things edit boxes support underlining again  
+  
+(However for the time being CTextView fails to turn off flashing  
+cursors when required, or displays flashing cursors in the wrong edit  
+box; also CTextView will crash when asked to de-highlight emphasised  
+text - which you can avoid as a temporary measure by copying  
+r:\eikon\temp\tboxd.dll into your \e32sys)  
+  
+12) As a potentially interim measure, made CEikListBox::SetStateL  
+call CreateViewL() before it does anything else, to workaround a  
+problem found by MartinD concerning in-place listboxes in dialogs  
+  
+13) Changed what MNT BLDALL does, by commenting out the lines calling  
+MNT BLDUDEB and MNT BLDUREL, to avoid lots of wasted time (since  
+these variants aren't supported presently) should someone actually  
+invoke the BLDALL verb.  
+  
+  
+Version 0.01.033  
+================  
+(Made by DavidW, 27 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/065 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012  
+  
+Uses CONE 065 for the first time  
+  
+From Natasha:  
+-------------  
+1)  Added the Paragraph format dialogs to Write: Set Spacing, Set  
+Indents, and Set Alignment  
+  
+2)  As would be expected, in Write these dialogs produce paragraphs  
+with varying formats, whereas in TEdwin0 they alter the global  
+formatting  
+  
+From Vipul:  
+-----------  
+3)  TCons0 now optionally runs either with a backed up window or a  
+"normal" window (there's a startup query dialog to specify this at  
+runtime)  
+  
+4)  Altered a few parts of TCons0 code to prevent crashes if an  
+inappropriate function is called on a backed up window  
+  
+(but more work remains to be done, to go beyond avoiding the panic,  
+to achieving the correct screen appearance, eg on pressing Ctrl-F to  
+change the font in the backed up window case)  
+  
+From DavidW:  
+------------  
+5)  Removed all mention of PAINT and TEXTED from Eikon's MNT.CMD; you  
+should rd /s any \eikon\paint and \eikon\texted directories  
+  
+6)  Finally fixed the "non-latching latching buttons" problem in the  
+Write toolbar, by defining separate command IDs numbers for eg the  
+Bold toolbar button and the "Set Bold" menu command itself  
+  
+7)  Fixed the memory leak in Write due to the presence of pictures;  
+the other leak, arising whenever Paint is run up inside Write, will  
+require the *proper* ("no cheating") application architecture, to  
+sort it out.  
+  
+  
+Version 0.01.032  
+================  
+(Made by DavidW, 26 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/064 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012  
+  
+Change in version of resource compiler:  
+---------------------------------------  
+1)  The BLD batch files for Eikon now all presuppose that you have  
+installed RC3.EXE, the "32-bit" version of the resource compiler  
+developed by Martin Willitts  
+  
+2)  Invoke "MNT TOOLS" from Eikon, to cause RC3.EXE plus some  
+supporting files to be placed in your %drv%\tools, and various batch  
+files (EIKRS.BAT etc) in the same place; see the release notes for  
+EIKTOOLS 100 and RCOMP 300 for more details  
+  
+3)  The older MNT verbs TOOLRCOMP and TOOLHCIL are being retained for  
+the moment, but will soon be removed  
+  
+From Vamsi:  
+-----------  
+4)  New CEikEdwin function SetWordWrapL(TBool), to toggle whether  
+word-wrap is on or off: see TextEd for an example of changing this  
+dynamically (see the Preferences dialog)  
+  
+5)  New flag EEikEdwinPartialFormat to cause CTextView to only format  
+the visible portion of the document (as opposed to the entire  
+document); this gets set in TextEd - see how quickly it can now load  
+in a large file such as release.txt!  
+  
+6)  Improvements to the function CEikEdwin::GuessVThumbPos(), used to  
+estimate the position of the vertical scrollbar in the case when the  
+document is only partially formatted (however this area looks like it  
+may need a lot more work done on it)  
+  
+From Neil:  
+----------  
+7)  New header file EIKSBOBS.H containing the scrollbar observer  
+class and the definition of TEikScrollEvent  
+  
+8)  Modified EIKLBX.H, EIKCONSO.H etc to reflect this fact - they now  
+depend just on EIKSBOBS.H and not on EIKSCRLB.H  
+  
+9)  Further progress on the CEikScrollBarFrame class  
+  
+10) Added constructor to TEikScrollBarModel, with some default  
+parameters  
+  
+From Siamak:  
+------------  
+11) Scrolling upwards in listboxes wasn't correctly validating the  
+new text drawn, resulting in a double draw in due course; now fixed  
+  
+12) Fixed some similar validation and drawing problems when scrolling  
+horizontally in some listboxes  
+  
+13) The GetState() function for single-selection listboxes now always  
+returns simply the index of the current item, if any, avoiding  
+complications if the current item isn't selected (according to the  
+strict definition of the term "selected")  
+  
+14) Redefined DrawItem() in the hierarchical view class so that the  
+area preceding the rect for a given item is cleared  
+  
+15) Modified CEikListBox::HandleRedrawEventL() not to re-initialize  
+the brush color in the Gc before proceeding (otherwise occasional  
+black flashes could occur)  
+  
+16) Improved CEikListBox::VScroll() by avoiding calling the Draw()  
+function when you have only scrolled up/down by one item; in such  
+cases, now only the top/bottom item is drawn  
+  
+17) When pressing the arrow or the page up/down keys, only the thumb  
+portion of the relevant scrollbar is now updated, thereby eliminating  
+unnecessary (and potentially expensive) calculations; result - faster  
+scrolling through longer lists  
+  
+From SimonC:  
+------------  
+18) Changed hierarchical listboxes so that nodes can be expanded/  
+collapsed via Tab (+ and - can still be used)  
+  
+19) Fixed bug that was preventing the list item in a hierarchical  
+listbox from being collapsed  
+  
+20) Fixed bug in HandlePointerEventL shown up by clicking below the  
+last item but still inside the listbox  
+  
+21) Other internal file selector changes  
+  
+From Brendan:  
+-------------  
+22) Converted test code TWldSl to the CEikDocument system  
+  
+23) Modified world selectors to optionally set their background color  
+to white and to optionally have a flashing cursor  
+  
+24) New flags are defined in EIKCTRLS.HRH to allow these options to  
+be set for dialog controls  
+  
+25) World selectors are now drawn slightly smaller, by default, than  
+before, with extra space above and to the right of the text so that  
+the text does not touch the borders  
+  
+26) Made a start on the Eikon implementation of the Alert Server, in  
+modules EIKSALRT.* and EIKALRM.*  
+  
+From Julian:  
+------------  
+27) Added Undo and Redo facilities to Paint  
+  
+28) Multi-level Undo turned out to be virtually as easy as  
+single-level Undo; so Paint presently has a ten-level Undo stack  
+  
+From DavidW:  
+------------  
+29) Fixed a bug in TEdwin2 involving ownership of the paragraph and  
+character format layers, that was causing a crash on exit  
+  
+30) Fixed another bug in TEdwin2 causing eg Ctrl-B to set Bold Italic  
+and Underline all at the same time (amongst other problems); this was  
+due to a test for (buttonState&EEikButtonClear) which is, however,  
+guaranteed always to be zero, since EEikButtonClear is zero; better  
+to test against EEikButtonSet instead  
+  
+31) Supplied working Open, Save, SaveAs, and Import functions for  
+TEdwin2, with automatic save of changes on Quit, etc  
+  
+32) Not only is this store and restore of rich text for the first  
+time at the Eikon level, it is also store and restore of pictures for  
+the first time at the Eikon level: all three kinds of pictures  
+("Simple", "Bitmap from file", and "Paint") get stored to file and  
+then successfully restored later  
+  
+(but not without a few hiccups along the way, eg Write will now  
+usually crash on exit with a memory leak - one for each picture, and  
+another one for each time Paint has been visited - but not before  
+saving the document to file; also the picture restoration currently  
+doesn't do quite the right thing as regards scaling)  
+  
+33) Changed the name of TEdwin2.* to Write.*  
+  
+34) On a suggestion from MartinB, slightly altered the meanings of  
+the CEikDocument functions RestoreComponentsL and StoreComponentsL;  
+as it turned out these changes were independently required in order  
+to get picture save and load working inside rich text  
+  
+35) For short-term convenience in CEikEdwin, changed the iSBManager*  
+property in MEikScrollFrameOwner from private to protected  
+  
+36) In line with architecture team recommendations, renamed  
+iOrphanWindow to iCornerWindow in scrollbar frame code  
+  
+37) Added a Wrap on/off setting to the Properties dialog in TScrlB1;  
+TScrlB1 now defaults to wrap off, allowing the horizontal scrolling  
+of edwins to be tested  
+  
+38) TScrlB1 now has an Import Text option, seeded with the *.CPP  
+files from \eikon\src; TScrlB1 now launches this dialog automatically  
+on start up  
+  
+39) On a suggestion from Bill, renamed all Eikon resources from  
+R_EIKON_XXX to R_EIK_XXX  
+  
+Removal of PAINT and TEXTED from the Eikon group  
+------------------------------------------------  
+Please note that this is the last build of Eikon which will include  
+Paint and TextEd as part of the Eikon group.  The source code for  
+these applications will now be moved to their own groups, and they  
+will have their own separate MNT.CMD files, etc.  
+  
+  
+Version 0.01.031  
+================  
+(Made by DavidW, 25 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/064 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012  
+  
+From DavidW:  
+------------  
+1)  Converted TEdwin2 so that it now runs under the CEikDocument  
+scheme; TEdwin2 is a rich-text editor, that supports pictures  
+  
+(However, TEdwin2 is currently a bit fragile, prone to panics on  
+exit, or when a piece of text is highlighted; setting text to be Bold  
+often has the unexpected side-effect of making it italic and  
+underlined as well; etc)  
+  
+2)  Upgraded the piece of code in TEdwin2 that can launch Paint to  
+edit Paint objects embedded in TEdwin2  
+  
+3)  Started changing the name of TEdwin2 to Write (since the intended  
+functionality of TEdwin2 is a reasonable match to that of Windows  
+Write)  
+  
+(There's no Save/Open functionality working in TEdwin2 yet)  
+  
+4)  Up till now, it was impossible to declare a listbox in a resource  
+file with features such as multiple selection or a scrollbar; this  
+was because the list box view was created in the SetParentWindowL  
+function, before the RestoreL function had had a chance to set any  
+internal flags from resource file data; this has been fixed to  
+delaying the creation the listbox view until the first call to  
+SetExtentL(), thereby following the CEikEdwin pattern more closely  
+  
+5)  See the "List" dialog in TDialg0 for a listbox supporting  
+multiple selection and a vertical scrollbar, in a dialog  
+  
+6)  Changed code as required by various name changes in CONE 064.  
+  
+  
+Version 0.01.030  
+================  
+(Made by DavidW, 23 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/063 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012  
+  
+INCLUDES FONTS 012 for the first time  
+  
+Please note this release only contains a Debug variant  
+  
+From Julian:  
+------------  
+1)  Transfered the print setup dialogs out of Paint into the new  
+module EIKPRTDG.* (this now requires EIKON.DLL itself to link to  
+PRINT.LIB for the first time)  
+  
+2)  Modularized Paint by splitting it up into four separate modules:  
+BITMED for the bitmap editor, GRAYSL for the gray color selector,  
+PNTDLG for the dialogs used by the application, and PAINT for the  
+main application  
+  
+3)  Paint now demonstrates saving and loading preference data to its  
+profile file, including the settings of its gray color selector and  
+the print setup  
+  
+4)  The bitmap editor will now only export a bitmap drawing to a file  
+when a region is selected (this feature is the same as in Paintbrush  
+and the MSVC bitmap editor)  
+  
+From SimonC:  
+------------  
+5)  Started work on CFileSelectorDialog, which can be invoked from  
+a toolbar button in TLBox1  
+  
+6)  Fixed a bug that was preventing listboxes with no horizontal  
+scrollbar from scrolling horizontally (ie when Left/Right is pressed)  
+  
+7)  Changed the CalcDataWidth() routine in the hierarchical item  
+list, to try to get a more accurate value (though this now seems to  
+result in the lists scrolling too far!)  
+  
+8)  Renamed CSimpleContainerControl and CFileSelectorContainerControl  
+in TLBox1 to CFileSelectorContainerBase and CFileSelectorContainer  
+respectively, and moved as much code as possible into the Base class  
+  
+9)  Improved emphasis handling in TLBox1 (eg when a dialog is  
+launched or exited)  
+  
+From Natascha:  
+--------------  
+10) Modifications to TEdwin0, giving access to the Paragraph  
+Alignment, Spacing, and Indents dialogs from the menu bar  
+  
+From Neil:  
+----------  
+11) CEikScrollBar now derives from CCoeWinArea instead of CCoeControl  
+  
+12) Scrollbars now use their own observer MEikScrollBarObserver  
+instead of CCoeControlObserver; the callback function is now  
+HandleScrollEventL()  
+  
+13) Renamed SEikScrollBarModel to TEikScrollBarModel  
+  
+14) Started work on the new CEikScrollBarFrame class, in line with  
+recent discussions with Charles  
+  
+15) Interim changes to CEikScrollBarManager and MEikScrollFrameOwner  
+before these finally disappear, to keep the code afloat for now  
+  
+16) Updated CEikEdwin, CEikListBox, CEikConsoleWindow, Paint, and  
+TScrlB0 to use the latest scrollbar code  
+  
+17) Fixed the problem of the non-appearance of anything interesting  
+in TScrlB0 (due to an orphan window being created the size of the  
+whole screen!)  
+  
+From Vipul:  
+-----------  
+18) Enhanced TCons0 test program: Ctrl-F now changes the font.  
+  
+  
+Version 0.01.029  
+================  
+(Made by DavidW, 22 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/063 ETEXT/029 TBOX/044 PRINT/006 FONTS/011 ALWL/012  
+  
+Includes PRINT 006 for the first time  
+  
+From Julian:  
+------------  
+1)  Several dialogs in the Print Setup suite have been created for  
+Paint (and will shortly migrate to Eikon, for use by other  
+applications)  
+  
+2)  The present version of the Print Setup dialogs uses an interim  
+alternative to multi-page dialogs, and will change over to that  
+scheme instead when it becomes available  
+  
+3)  The Print Setup dialogs edit the contents of the CPrintSetup  
+object owned by CEikDocument  
+  
+4)  Added an accessor function CEikDocument::PrintSetup()  
+  
+5)  Paint currently has its own dummy list of printer models; this  
+will be replaced in due course by a list obtained from PDRSTORE  
+  
+6)  Moved some code from CEikButton to CEikButtonBase, to solve a  
+drawing problem for densely packed buttons in some button arrays  
+  
+7)  Changed the call to OkayToExitL in CEikDialog to call the  
+HandleControlFocusLossL function beforehand, for the current item, if  
+the flag is set (see below), before calling the dialog-specific  
+OkayToExitL()  
+  
+From Vamsi:  
+-----------  
+8)  Rewrote the tabs dialog in TextEd, based around storing the  
+tabwidth in character widths, and calculating the value in twips when  
+needed  
+  
+9)  The tabs setting now automatically updates correctly whenever the  
+font is changed  
+  
+From MartinD:  
+-------------  
+10) CEikComboBox now has an iMaxArraySize variable which is set by  
+default to 5 but can be set to any value by the caller; this  
+determines the number of historical items that are stored in the  
+array  
+  
+11) Changed the DesCArray() function in CEikChoiceList from protected  
+to public  
+  
+From SimonC:  
+------------  
+12) Changed the appearance of the "sort order" buttons in TLBox1 to  
+look more like in the Shell spec (ie with bitmaps and text)  
+  
+(This requires the new FSEL*.PBM files which are put into your  
+\e32data directory by Eikon's MNT GETREL)  
+  
+13) These "sort order" buttons now function, to control the order of  
+the displayed files  
+  
+From Siamak:  
+------------  
+14) Speed optimizations in listboxes, eg caching the bottom item  
+index rather than recalculating it each time, to speed up scrolling  
+  
+15) Reducing the amount of item redraws, eg when scrolling  
+  
+16) Added basic support for the PgUp and PgDn keys in listboxes  
+  
+17) First letter matching logic in listboxes now ensures the item  
+found (if any) is made visible  
+  
+18) In order to further improve the flicker-free quality of listbox  
+displays, the flag ECoeWinAreaAutoClearOnRedraw() is now set, and the  
+listbox constructor calls SetBackgroundColor()  
+  
+19) Dragging in a listbox now works again (had got broken recently)  
+  
+20) Eliminated some code duplication in listbox code  
+  
+21) Defined some new generic event types: EEikCeItemDoubleClicked,  
+EEikCeItemExpanded, and EEikCeItemCollapsed; a hierarchical listboxes  
+now report the latter two events to their observers  
+  
+22) TLBox1 no longer creates and destroys a file server session each  
+time it wants to update the file details listbox; instead, it uses  
+the session pointer created by Cone  
+  
+23) As you navigate up/down the directory tree listbox in TLBox1, the  
+file details listbox no longer tries to keep up straightaway, but  
+rather updates itself on the completion of an idle object  
+  
+From DavidW:  
+------------  
+24) Various changes in TextEd, bringing it closer to the design in  
+\design\eon\eon.mdl (eg different data is stored in its profile)  
+  
+25) Added GETPRINT and GETSRCPRINT verbs to MNT.CMD  
+  
+26) The definition of the DLG_LINE resource struct now includes a  
+flags field, with value defaulting to zero; for now, the only bit  
+that can be set in it is EEikDlgLineReportFocusLoss (as is set in  
+some resources for the Print Setup dialogs); more flags will be added  
+shortly  
+  
+27) On account of the above change, I have changed the internal  
+signature number for Eikon resource files, to force all resource  
+files to be recompiled before Eikon will load them.  
+  
+  
+Version 0.01.028  
+================  
+(Made by DavidW, 21 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/063 ETEXT/029 TBOX/044 FONTS/011 ALWL/012  
+  
+Includes CONE 063 for the first time  
+  
+From DavidA:  
+------------  
+1)  Minor change to the ways CEikEdwin's get constructed, to provide  
+more flexibility (and to fix a problem whereby some functions were  
+consulting flags parameters that hadn't been restored yet)  
+  
+2)  There's now a separate function BaseConstructL() which all  
+CEikEdwin construction routes have to pass through; some test code has  
+needed to be modified  
+  
+3)  New flag EEikEdwinNoHorizScrolling, which currently only has an  
+effect for single line editors; by default, these editors get the  
+EEikEdwinNoWrap flag set for them automatically, and the purpose of  
+this new flag is to prevent that behaviour; in turn this can be  
+desirable for a single line editor that happens to be right-aligned  
+(as in the Calculator app), since otherwise TBox calculates the  
+position of the text as being at positive infinity!  
+  
+From Vipul:  
+-----------  
+4)  The various ConstructL functions of CEikConsoleScreen and  
+CEikConsoleWindow now all take one more (optional) parameter, TInt  
+aFlags, defaulting to zero, which gets set into the iFlags field of  
+the console window before the call to its CreateWindowL() is made; as  
+a result, it is now possible to have a console with a backed up  
+window (as required for some uses in Opl)  
+  
+5)  There's also a new CEikConsoleScreen function, ConsoleWin(),  
+returning the handle of the CEikConsoleWindow component  
+  
+From SimonC:  
+------------  
+6)  An array of buttons have been added to the two-list file manager  
+control, to specify sort order (not implemented yet)  
+  
+7)  The file manager no longer occasionally crashes on changing from  
+a longer list to a shorter list  
+  
+8)  Various improvements to the display of entries in the file  
+manager  
+  
+9)  Moved bitmap creation out of the model level into the control  
+level of the directory browser, to remove Cone dependency from the  
+model  
+  
+10) Changed the model to use a file server connection passed in,  
+rather than repeatedly creating and destroying its own connection  
+  
+11) Cut down on the number of functions that are EXPORT_Ced  
+  
+From DavidW:  
+------------  
+12) Changed numerous "iWin." instances to "iWin->", and some to  
+"Window()." instead (where the function called is not defined by  
+RDrawableWindow) - this change is required by the upgrade to CONE 063  
+  
+13) Note that tests for whether a window has already been created  
+change from  
+    if (iWin.Handle())  
+to the simpler  
+    if (iWin)  
+  
+14) Changed CEikChoiceList to have a pointer to an MDesCList, rather  
+than a pointer to a CDesCArray; this makes it presuppose less about  
+the actual array used  
+  
+15) There's also a utility function DesCArray() in CEikChoiceList, to  
+return the CDesCArray* pointer corresponding to the MDesCList*  
+pointer, though needless to say this function should only be called  
+if you are confident this cast can be made; see EIKFNSLWN.CPP for  
+examples  
+  
+16) Similar changes in EIKLBXM.H.  
+  
+  
+Version 0.01.027  
+================  
+(Made by DavidW, 20 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012  
+  
+From SimonC:  
+------------  
+1)  For the first time, TLBox1 now looks seriously like a File  
+Manager, with two list boxes working in tandem: the left list box  
+lists the directory hierarchy, and the right list box shows the files  
+for the current directory; the data displayed is real, ie the  
+contents of the directories on your hard disk and the network drives  
+  
+2)  For now, use the + and - keys to expand or collapse a branch, or  
+double click it  
+  
+3)  Moved THLBX.* into Eikon, as the new module EIKHLBX.* containing  
+the hierarchical list box classes  
+  
+4)  The directory item list now displays bitmaps indicating whether  
+the folders are open or closed, and indents each item a set amount  
+further than its parent (there are still some minor display problems  
+to be sorted out soon)  
+  
+5)  Minor change in EIKCLOCK.CPP so that SetOffset(TInt aOffset) sets  
+an offset in terms of seconds rather than micro-seconds  
+  
+From Siamak:  
+------------  
+6)  More scrolling/ navigation/ display bugs fixed in listboxes  
+  
+7)  Some speed improvements when dealing with long lists  
+  
+8)  Note that the HandleListUpdate() function now does more than  
+before, so list box clients should be sure to call this, rather than  
+just calling eg UpdateScrollBars() by themselves (typically, a call  
+to UpdateScrollBars will be replaced by a call to HandleListUpdate)  
+  
+From Neil:  
+----------  
+9)  Created new mixin class MEikScrollFrameOwner to take much of the  
+common code in setting up scrollbars, managers, visibility etc, away  
+from individual controls  
+  
+10) To use it, controls *must* supply UpdateScrollBars() and  
+SetClientRect() functions, since these are declared as pure virtual  
+at the MEikScrollFrameOwner level.  Also if the scrollbars are to be  
+positioned inside any kind of border (or margin) they should override  
+BorderWidth() declared as virtual at the CCoeControl level  
+  
+11) Any private flags indicating scrollbar/manager presence in such  
+controls should not be used (in eg UpdateScrollBars()) after  
+initializing the scroll frame owner; instead, use the flags from the  
+scroll frame owner, which are kept up to date when scrollbars are  
+destroyed or made invisible etc; see EIKEDWIN.CPP SetScrollBars() for  
+an example  
+  
+12) Converted CEikEdwin to derive from MEikScrollFrameOwner  
+  
+13) Updated TScrlB1 to test the scroll frame owner features:  
+scrollbars in it can now be turned off/on as in TScrlB2; the "visible  
+lines" editor in the properties dialog has been replaced by a height  
+one (in pixels) for greater flexibility  
+  
+14) Internal improvements to TScrlB2  
+  
+15) Removed a few redundant lines from EIKLBX.CPP  
+  
+From Vamsi:  
+-----------  
+16) Supplied code for the "Indentation" (tabs) dialog in TextEd,  
+allowing regular tabstops to be set, in units of character width  
+  
+17) This exposed a bug in CEikEdwin::OfferKeyEventL(), which was not  
+setting the correct character code when trying to insert a tab  
+character into the editable text; now fixed  
+  
+(In turn this has exposed a bug in TBox in which, for mono-spaced  
+fonts, a plus/minus symbol is displayed for the tab character)  
+  
+From Julian:  
+------------  
+18) Another rationalization of button code, visible in the API (and  
+requiring all resource files to be recompiled again!): a button  
+*state* can no longer be initialized via a resource file, which only  
+allows button *flags* to be specified; this results in a reduction in  
+the size of all button structs in resource files  
+  
+19) To set a button state, you need to supply code, either in the  
+application itself, or in a dialog; this brings buttons more in line  
+with other controls  
+  
+20) Variables such as EEikButtonLatchedUp/Down for setting button  
+state have been removed from EIKCTRLS.HRH to EIKBUT.H, and have had  
+their names changed, for safety, to EEikButtonClear/Set, in  
+conformance with tick box and radio buttons; this affects lots of  
+test code, which has all been updated  
+  
+21) The typedef TButtonState has been withdrawn: just use TInt  
+instead  
+  
+22) Fix in Paint for the case when descenders of text could get  
+chopped off when text was input to a bitmap  
+  
+23) Various cases in Paint where the "document changed" flag was  
+failing to be set, have now been fixed (to avoid a loss of these  
+changes when the application quits)  
+  
+24) Changed the implementation of "Import bitmap" to place the new  
+bitmap on a moveable region (as for Paste, etc) to allow it to be  
+positioned appropriately on top of the existing bitmap  
+  
+25) Improved the handling of the case when a Pasted or Imported  
+bitmap exceeded the size of the current bitmap  
+  
+From DavidW:  
+------------  
+26) Changed the HandlePointerEventL function in CEikListBox so that  
+an EEikCeStateChanged event was reported as appropriate.  
+  
+  
+Version 0.01.026  
+================  
+(Made by DavidW, 19 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012  
+  
+From Julian:  
+------------  
+1)  Paint now has the facility to insert text; there is an "Insert  
+text" dialog which has a multi-line editor, as well as a "Font"  
+button allowing the font to be specified  
+  
+2)  After the input text is specified, the bitmap editor  
+automatically goes into "select region" mode, to allow the text to be  
+positioned as the user wishes  
+  
+From Brendan:  
+-------------  
+3)  Removed the test application TDynClk since it has been merged  
+into TBmp  
+  
+4)  Converted TBmp and TBmpTag to the current CEikDocument scheme  
+(both these test programs run, like all the others, equally well in  
+Release mode as in Debug mode)  
+  
+5)  Changes to CEikClock to cope with some of the requirements of the  
+"dynamic clock" uses (as in TBmp and in the TimeW application)  
+  
+6)  New bitmap SMILE.PBM which gives a prettier picture in TBmp  
+(click on the face to make it smile/frown)  
+  
+7)  Internal changes to CEikTag code  
+  
+8)  Changed the EXPORT verb of MNT.CMD to export *.inl files as well  
+  
+From Siamak:  
+------------  
+9)  Fixed various horizontal scrolling problems for both standard and  
+multi-column listboxes; note that the "data size" is now calculated  
+correctly (from, by default, the widest item in the list) rather than  
+being hard-wired to 640 as before; that means the scrollbar thumb is  
+now the correct size  
+  
+10) Fixed bug in hierarchical listbox whereby the control was asking  
+its base class to process left/right arrow events after it had  
+already processed them itself  
+  
+11) Various other internal changes to listbox code (listbox code is  
+still in a state of flux however, with several known problems - both  
+old and new - awaiting attention)  
+  
+From Neil:  
+----------  
+12) Fixed a couple of bugs in scrollbars and the scrollbar manager.  
+  
+  
+Version 0.01.025  
+================  
+(Made by DavidW, 18 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012  
+  
+This build uses FONTS 011 for the first time; there is a richer set  
+of fonts available in the Fonts Dialog (eg in TEdwin0 or TextEd) than  
+ever before, including the "Tiny" fonts intended eg for Print Preview  
+purposes.  
+  
+From SimonC:  
+------------  
+1)  Improved directory browser so that, in TLBox1, it now starts off  
+with all drives listed, rather than from the root directory of any  
+one drive (the test code still provides the option of displaying a  
+list of this latter sort)  
+  
+2)  Removed all known memory leaks from the directory browser  
+  
+3)  Changed the method of storage in THierListItem to use an HBufC*  
+to provide variable length storage, rather thatn a TBuf<256>  
+  
+4)  Removed all knowledge of the method of list storage (ie array,  
+linked list etc) from CDirectoryItemList  
+  
+From Neil:  
+----------  
+5)  The scrollbar manager now takes care of the "orphan rectangle" at  
+the "intersection" of the two scrollbars, so that controls with two  
+scrollbars no longer need to redraw this area themselves (nor will  
+they receive pointer events if the user clicks in this area)  
+  
+6)  Removed the restriction in the scrollbar manager that the  
+"client", had to be non-NULL, and changed the name of this data from  
+iClient to iParentWindow  
+  
+7)  In CEikEdwin, re-introduced the line iWin->SetBackgroundColor(),  
+at MartinB's request, so that a DrawNow() will no longer cause any  
+flicker (this change was possible in the wake of the scrollbar  
+manager now handling the "orphan rectangle")  
+  
+8)  Improved horizontal scrolling in CEikEdwin (but still far from  
+perfect, pending additional assistance from Form)  
+  
+9)  In test code TScrlB2, now keep the number of items in the  
+properties dialog up-to-date, when the scrollbar visibility is  
+changed  
+  
+From Vamsi:  
+-----------  
+10) Fixed the memory leak in a CEikEdwin with line cursor, by creating  
+the line cursor in a different part of code  
+  
+11) Developed the implementation of "Find" in TextEd  
+  
+From Julian:  
+------------  
+12) Further development of the Color Selector control, as seen in the  
+Paint sample app; the keyboard focus can now be moved into this  
+control (in Paint, by using Tab) and the selected color is indicated  
+by an emphasized border  
+  
+13) In Paint, the Color Selector can be placed at various edges of  
+the screen (left, right, bottom) or hidden altogether; when at the  
+bottom of the screen, it has horizontal layout, instead of vertical  
+  
+14) Changed the implementation of buttons, separating the "flags" and  
+"state" variable, to solve the problem that applications calling eg  
+SetControlStateL for buttons can unintentionally remove subsidiary  
+information like the position of a bitmap relative to the text  
+  
+15) Added a new button flag, EEikButtonBehaveLikeRadioButton, which  
+can be used for a set of mutually exclusive latchings buttons, as  
+used in the Paint toolbar, simplifying application code  
+  
+16) Modified various other pieces of code, eg in test applications,  
+and in CEikButtonArray, as required by the separation of button state  
+and button flags; note that all resource files ought to be recompiled  
+  
+From DavidW:  
+------------  
+17) New treatment of paragraph and character format layers in  
+CEikEdwin, with the withdrawal of GetTextFormatLayersL() and the  
+introduction of SetFormatLayers() instead; see the various Edwin test  
+programs for some examples  
+  
+18) Edwin now panics if an request is made to change its char format  
+layer (eg by running the Font Dialog) but that edwin is still using  
+the shared char format for the environment (ie no call to  
+SetFormatLayers, specifying a non-NULL char format pointer, has been  
+made); similarly for a request to change its para format layer  
+  
+19) Shared some code between the RunAlignDialogL, RunIndentDialogL  
+and RunSpaceDialogL functions of CEikEdwin, creating the new utility  
+function ApplyParaFormatL in CEikEdwin  
+  
+20) Moved the Edwin Find dialog into Eikon, in its own module  
+EIKFINDD.*, and created CEikEdwin::Find() from code formerly in  
+TextEd  
+  
+21) New public utility function CEikEdwin::SelectAllL()  
+  
+22) The above developments in CEikEdwin mean that TextEd and other  
+applications with edwins no longer need to subclass CEikEdwin  
+  
+23) Created the new control event, EEikCeFormatChanged, and changed  
+edwin code to report this instead of EEikCeStateChanged whenever the  
+change could require the application *profile* to be saved, rather  
+than the application document  
+  
+24) Changed TextEd so that it now stores its font data, tab settings,  
+etc, in its Profile, rather than in each document file  
+  
+25) Defined a virtual function ConstructL() for CEikDocument, which  
+is called prior to the EnvironmentReadyL() callback to the  
+CEikAppControl subclass; by default this function does nothing  
+  
+26) Upgraded TEdwin0 to work with the latest set of Eikon classes  
+  
+27) A slightly better choice for build settings now means that  
+Eikon.DLL is no longer larger than EikonD.DLL (!)  
+  
+  
+Version 0.01.024  
+================  
+(Made by DavidW, 15 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/029 TBOX/044 FONTS/010 ALWL/012  
+  
+*.PRG files and ... *.PRD files  
+-------------------------------  
+1)  The release of Eikon now fetches EIKOND.DLL and EIKON.DLL, the  
+Debug and Release versions respectively; likewise it fetches  
+SHELLD.EXE and SHELL.EXE, Debug and Release versions of the Shell;  
+note in particular that typing "Shell" will run the Release version  
+  
+2)  SHELL.EXE will try to run *.PRG files as PRoGram DLLs; not so  
+SHELLD.EXE, which will try instead to run *.PRD files; so for example  
+the project settings for the TextEd application have been altered, to  
+build TextEd.PRG in Release build and TextEd.PRD in Debug build  
+  
+3)  Various code flagged as "Unreachable" by the Release build  
+compiler has been commented out  
+  
+4)  Note that the settings in the "Release" section of the Project  
+Settings dialog, for many test programs, were very badly wrong, and  
+have been altered; eg they should Optimize for "Minimum Size" rather  
+than for "Maximum Speed"  
+  
+(The Release build tends to run much faster, anyway, by virtue of  
+missing out floods of __ASSERTs; eg an operation that took 90 seconds  
+for TextEd.PRD took only 25 seconds for TextEd.PRG - this was  
+Importing the file "\eikon\group\release.txt"; too bad that it's  
+still about 24« seconds slower than eg Brief)  
+  
+How to know which test programs have been updated:  
+--------------------------------------------------  
+5)  A much larger number of Eikon test programs have been converted  
+to the new CEikDocument scheme - about 14 in all, including TDialg0  
+and TDialg1; the way you can tell is by looking at the various  
+BLD.CMD batch files, eg in ..\TSRC; the programs that have still to  
+be converted have been REMed out of the build instructions; test code  
+that runs as a .PRD file will also run (rebuilt) as a .PRG file  
+  
+6)  Note that the former program TBitEd0 has been moved out of  
+..\TSRC and into its own new directory \EIKON\PAINT, being  
+rechristened as "Paint" in the process (one consequence of this is  
+that *.PNT files saved earlier will refuse to load inside the new  
+application, since its internal name has changed)  
+  
+From Julian:  
+------------  
+7)  Paint now displays scrollbars, which can be toggled off or on as  
+required  
+  
+8)  Paint now displays its own 16-gray scales color selector (this  
+will display dithered shadings in 4-gray scale mode) down the side of  
+the screen  
+  
+9)  The mechanism for displaying the cursor has changed, so that it  
+no longer disappears when over dark gray (it now gets XORed with  
+"gray level 14", with the result that it always changes color)  
+  
+10) Added a "Quit, lose changes" menu command  
+  
+11) When drawing a line, the end pixel is now included (friendlier  
+for end users)  
+  
+From SimonC:  
+------------  
+12) Converted TBut0 and TLBox1 to the new CEikDocument scheme  
+  
+13) Changed to a new design for the hierarchical list box classes, in  
+which eg the model (array) class no longer knows anything about the  
+control classes  
+  
+14) Created a new module, temporarily named THLBX.* in ..\tsrc,  
+separating out the general hierarchical list box classes, from their  
+original home in test code TLBox1  
+  
+15) Created two more *.PBM files, placed into \e32data by Eikon's MNT  
+GETREL, which will be used shortly to display the open/closed status  
+of branches in a hierarchical listbox (but they are not in use yet,  
+pending further changes in the main list box classes)  
+  
+From Siamak:  
+------------  
+16) Preliminary implementation of horizontal scrolling for both  
+standard and multi-column listboxes  
+  
+(currently the "full width" of any listbox, for scrolling purposes, is  
+hard-wired to 640 pixels; a more flexible scheme will be in place  
+RSN)  
+  
+From Neil:  
+----------  
+17) Converted TScrlB0, TScrlB1, and TScrlB2 to the CEikDocument  
+scheme  
+  
+18) TScrlB2 now has two tick boxes in its Properties dialog, to turn  
+each scrollbar on/off separately  
+  
+19) CEikListBox has a new function SetScrollBarVisibility(), and  
+CEikScrollBarManager has a RemoveScrollBar()  
+  
+From Bret:  
+----------  
+20) Converted TMenuB0 and TMenuP0 to the CEikDocument scheme  
+  
+From DavidW:  
+------------  
+21) Minor alteration to TextEd to provide a setting for whether to  
+restrict the display to a mono-spaced font; this is inside the Set  
+Preferences dialog (but this line of that dialog is the only one that  
+works for now)  
+  
+22) Using the above feature of TextEd, you can see, for the first  
+time, the proposed "EFF Roman" font, as delivered to us by EFF, the  
+Electronic Font Foundry, and included in build 010 of FONTS (used for  
+the first time by this build of Eikon); alternatively you can use  
+TScrlB1 (none of the other "edwin-like" test programs have been  
+converted to the CEikDocument scheme yet); comments about this EFF  
+font to Natascha please  
+  
+23) Changed the names of some CEikDocument functions to exclude  
+"Doc", eg InternalizeDocL() has become InternalizeL()  
+  
+24) Added a CPrintSetup* to CEikDocument  
+  
+25) There is now a default value for the fourth ("flags") parameter  
+to the constructor of the fonts dialog, allowing access, by default,  
+to all fonts.  
+  
+  
+Version 0.01.023  
+================  
+(Made by DavidW, 14 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/029 TBOX/044 FONTS/009 ALWL/012  
+  
+Warning:  
+--------  
+This is very much an interim release, with only four test programs  
+having been converted to the emerging new document architecture  
+contained in Eikon for the first time today.  
+  
+These test applications are:  
+    TCalcUi  
+    TCons0  
+    TLBox  
+    TextEd  
+  
+It's not hard to convert other test applications, so long as they're  
+not "store aware".  (See below for the details.)  
+  
+But if your application supports eg Open, SaveAs commands, the  
+conversion will take longer, and you may wish to keep working with  
+a previous build of Eikon, for the time being  
+  
+Document architecture!  
+----------------------  
+1)  There's now a class CEikDocument, taking over the "document"  
+parts of the functionality from CEikAppControl from before; just as  
+every PRG has to provide a subclass of CEikAppControl, so too must  
+every PRG from now on provide a subclass of CEikDocument  
+  
+2)  A key difference between CEikDocument and CEikAppControl is that  
+an instance of the former can exist without an instance of the latter  
+existing; for example, if one of your documents is being printed from  
+the Shell, searched from the Shell, previewed from the Shell, or  
+displayed as a glass door from inside an enclosing application, the  
+chances are an instance of your CEikDocument will exist, but not an  
+instance of your CEikAppControl; the CEikAppControl subclass only  
+gets created when the user wants to *edit* the document (or, more  
+generally - for read-only documents etc - to *view* the document in  
+a process all of its own)  
+  
+3)  Your EikMain() function, which used to look something like  
+  
+    EXPORT_C CEikAppControl* EikMain()  
+        {  
+        return new CTextEdAppControl;  
+        }  
+  
+should now instead look something like  
+  
+    EXPORT_C CEikDocument* EikMain()  
+        {  
+        return new CTextEdDocument;  
+        }  
+  
+Even if it looked like  
+  
+    EXPORT_C CEikAppControl* EikMain()  
+	{  
+	CEikAppControl* appControl=new CSimpleAppControl;  
+	appControl->SetAppControlFlags(EEikAppControlNoAppResourceFile);  
+	return(appControl);  
+	}  
+  
+it will just just look like  
+  
+    EXPORT_C CEikDocument* EikMain()  
+        {  
+        return new CSimpleDocument;  
+        }  
+  
+and the place where you set the "app control flags" is in the  
+callback CreateAppControl() (see below)  
+  
+4)  Because the signature of EikMain() has changed, the contents of  
+EIKPRG.DEF has changed too (if you look closely, you'll see that,  
+underneath all the hieroglyphics, all that's changed is that  
+"AppControl" has been directly replaced by "Document")  
+  
+5)  CEikDocument declares a function CreateAppControl() as pure  
+virtual, meaning that you are obliged to provide one; at the very  
+minimum, you will end up with a few lines near the end of your *.CPP  
+file, looking something like  
+  
+    class CTestDocument : public CEikDocument  
+        {  
+    private:  
+        CEikAppControl* CreateAppControl();  
+        };  
+  
+    CEikAppControl* CTestDocument::CreateAppControl()  
+        {  
+        return new CTestAppControl;  
+        }  
+  
+An alternative version of CreateAppControl would look like  
+  
+    CEikAppControl* CSimpleDocument::CreateAppControl()  
+	{  
+	CEikAppControl* appControl=new CSimpleAppControl;  
+	appControl->SetAppControlFlags(EEikAppControlNoAppResourceFile);  
+	return(appControl);  
+	}  
+  
+so that, as you can see, what used to be in your EikMain() is  
+essentially now in your CreateAppControl() instead  
+  
+6)  The following functions have moved (sometimes changing their names  
+a bit in the process) from CEikAppControl to CEikDocument:  
+  
+    SetDocNameL();  
+    LoadProfileL();  
+    SaveProfileL();  
+    ParseWithAppName();  
+    GetAppName();  
+    GetAppVersion();  
+    StoreDocComponentsL();  
+    RestoreDocComponentsL();  
+    ExternalizeDocL();  
+    InternalizeDocL();  
+  
+Eg if you used to provide an ExternalizeDocL() function in your  
+subclass of CEikAppControl, you should now provide it in your  
+subclass of CEikDocument  
+  
+7)  The former EIKDOC.*, which contains the document header class,  
+TEikDocHeader, has been renamed to EIKDOCHD.*, and the name EIKDOC.*  
+is now used for the module for CEikDocument  
+  
+8)  CEikAppControl and CEikDocument contain several new utility  
+functions, intended to simplify and unify store-related code in  
+applications (and to cut down on duplication); more details will be  
+publicized shortly, once things have settled down a bit  
+  
+Eikon now runs in release mode(?)  
+---------------------------------  
+9)  Eikon now uses TBOX 044 (and ETEXT 029) for the first time, and  
+as a result can now in principle run in Release mode as well as Debug  
+mode (but not tested yet)  
+  
+(the UTC version of ETEXTD.DLL in R:\EIKON\TEMP is no longer needed,  
+and has been deleted)  
+  
+10) Because ETEXT 029 has its own copy of clipboard functionality,  
+the modules EIKCLIPB.* are withdrawn; instead of #include-ing  
+EIKCLIPB.H, you now #include TXTCLIPB.H; note that the file  
+EIKCLIBH.HRH remains, though, since it defines some Eikon-level  
+clipboard format type numbers (but if you used EClipboardRichTextType  
+before, switch to using EXxxClipboardRichTextType for now)  
+  
+From Neil and Pieter:  
+---------------------  
+11) Added scrollbar facilities to the console window  
+  
+12) Improved various aspects of the console test program, TCons0, eg  
+adding tests for changing the visibility of the scrollbars, and for  
+changing the visibility of the cursor  
+  
+13) Fixed a regression in yesterday's release, in which a listbox or  
+edwin with only one scrollbar could crash  
+  
+From Vamsi:  
+-----------  
+14) Added a new flag EEikEdwinLineCursor to EIKCTRLS.HRH, with the  
+effect that any Edwin can now get a "line cursor" displayed for it,  
+in a left margin region at the side of the editing area; on the S3,  
+this "cursor" is a pointing triangle shape; for the time being, in  
+Eikon you just get a '+' character  
+  
+(unfortunately, in the present implementation, there are memory leaks  
+associated with line cursors, and any application using them will  
+crash during exit)  
+  
+15) Set the EEikEdwinLineCursor flag for TextEd  
+  
+16) Fixed a problem with the Font Selector dialog that was introduced  
+during the merge phase of the previous build, in which the set of  
+font heights shown, on the first display of the dialog, did not  
+always match the set provided for the first font shown  
+  
+From Siamak:  
+------------  
+17) Changed the visuals of the way list boxes highlight the current  
+item and any selected items: they now use inverse video instead of a  
+dotted rectangular outline for the current item, and tick marks to  
+show selected items (somewhat similar to menus)  
+  
+18) The CEikListItemViewer and CEikTextListItemViewer classes have  
+been merged, with the result that CEikListItemViewer is no longer  
+abstract; it can now cope with items that are just text, just a  
+bitmap, or a combination of bitmap plus text  
+  
+19) This new design also makes it easier to create new kinds of list  
+item viewers, and to customize the behaviour of CEikListItemViewer  
+itself (eg via flags).  
+  
+  
+Version 0.01.022  
+================  
+(Made by DavidW, 13 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/028 TBOX/043 FONTS/009 ALWL/012  
+  
+From Julian:  
+------------  
+1)  The toolbar in the bitmap editor now has buttons with icons on  
+them, rather than text (all the icons being, of course, designed  
+using the bitmap editor!); this requires all the PNT*.PBM files which  
+are now placed in your \e32data by Eikon's MNT GETREL  
+  
+2)  The size of a bitmap drawing can now be changed ("cropped") to  
+that of a selected region, by a new menu command  
+  
+3)  The bitmap editor now has a "Show cursor position" option, to  
+provide the user with feedback about the current cursor position, via  
+a series of infomsgs  
+  
+4)  The menu bar now contains all the commands that can be actioned  
+from the toolbar, and uses radio button displays to show which of  
+various grouped items is now current (which drawing mode, and which  
+color); a tick display shows whether "Show cursor" is active; items  
+are displayed dimmed when appropriate (eg for Cut/Copy, and Zoom when  
+already zoomed to extremities)  
+  
+5)  There is now a New File menu command, so that a new blank file  
+can be created at any time  
+  
+From Neil:  
+----------  
+6)  Further improvements to the tiling logic in the scrollbar  
+manager, to cope better with interdependencies between scrollbars  
+when deciding scrollbar visibility; the vertical scrollbar is now  
+explicitly given priority in any case of conflict  
+  
+7)  Improved the MinVisibleLength() function of CEikScrollBar to give  
+a more realistic return value  
+  
+8)  Added a new (private) function AddShaftIfPossible(), called at  
+the end of CalcDisplayFlags() which will recreate the shaft, if  
+necessary, into any excess space obtained by removing pairs of  
+scrollbar buttons in some particularly tight situations  
+  
+9)  Fixed a bug in listboxes whereby paging up or down would have no  
+effect if only one (or less) items was visible  
+  
+10) Improved test code TScrlB1 and TScrlB2 so that if a Properties  
+dialog would result in two separate resize calls to the respective  
+main windows in the application, these are now bundled into one call,  
+lessening the number of visual updates, and demonstrating better  
+coding practice  
+  
+From Vamsi:  
+-----------  
+11) The Fonts dialog now obeys a flag (passed in on construction)  
+saying whether only monospaced fonts should be shown  
+  
+12) The TextEd application calls the Fonts dialog with the "mono  
+only" flag set  
+  
+13) TextEd now initializes its font to be monospaced  
+  
+14) Created some dummy dialogs, for Set Tabs and Set Preferences.  
+  
+  
+Version 0.01.021  
+================  
+(Made by DavidW, 12 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009  
+        CONE/062 ETEXT/028 TBOX/043 FONTS/009 ALWL/012  
+  
+The solution to LNK 4049 warning messages  
+-----------------------------------------  
+1)  (As suggested by Geert) After downloading the build components,  
+edit line 10 of \e32inc\e32def.h, changing it from  
+  
+    #define IMPORT_C __declspec(dllimport)  
+  
+to  
+  
+    #define IMPORT_C __declspec(dllexport)  
+  
+(so that, under MSVC builds, IMPORT_C and EXPORT_C mean exactly the  
+same thing; note that this change has no effect at all on GCC  
+builds).  All linker warning messages should cease  
+  
+2)  However, this change precipitates the need for all PRG files to  
+be linked with an option such as  
+  
+    /DEF:\e32inc\eikprg.def  
+  
+added to the "Project options" box of the Link page of the Project  
+Settings dialog (you simply have to add this in by hand, eg after all  
+the other settings)  
+  
+3)  A copy of EIKPRG.DEF (a plain text file) is zipped up with all  
+the other EIKON "include" releaseables in the INCC zip component;  
+alternatively, just copy it over to \e32inc from \eikon\inc  
+  
+(If you already have another .DEF file of your own, you can keep on  
+using that instead; EIKPRG.DEF presumes that the entry point to your  
+PRG has the function signature "CEikAppControl* EikMain()")  
+  
+(The reason you now need a .DEF file is that defining IMPORT_C as  
+EXPORT_C means that you end up with at least one additional export  
+function, namely a hidden generated function which is a default  
+constructor for TFontStyle, of all things; MSVC generates this  
+function, in Debug builds at least, because the only constructor for  
+TFontStyle - in GDI.H - takes no fewer than three default parameters  
+- violating Code Review Principle HA-44 as it happens!)  
+  
+From Brendan:  
+-------------  
+4)  The control factory now recognizes CEikTag, CTikBufTag,  
+CEikBitmap, and CWorldSelector  
+  
+5)  Added resource reading for tags, bitmaps, and world selectors  
+  
+6)  Changed CEikTagBase so that a minimum width can be set - this was  
+the easiest way to demonstrate centered and right aligned text in  
+dialogs  
+  
+7)  Fixed a bug in world selectors where cities weren't always being  
+found when the selector was locked to a particular country  
+  
+8)  Minor name changes and other improvements to TBMP, TBMPTAG and  
+TWLDSL test code (eg the "Test" buttons now say what they're going to  
+do, instead of just "Test1" etc)  
+  
+9)  New test program TDynClk in which a clock factory and a dynamic  
+clock class are defined, eg the clocks can be seamlessly changed from  
+analog to digital  
+  
+From MartinT:  
+-------------  
+10) Many of the control header files (eg EIKCHLST.H, EIKNUMED.H, ...)  
+have been commented to distinguish functions in controls that get and  
+set the state, from other functions (construct/ destruct, processing  
+required by CONE, internal support functions).  This enables a clear  
+distinction to be made when documenting controls.  When coding new  
+controls, you should try to follow this model  
+  
+11) Note that GetState() and SetStateL() remain non-public functions,  
+and should always be coded in terms of the most common get/set  
+functions in the group above.  This may not be the case for all  
+controls at present.  Future Eikon releases will correct this where  
+necessary  
+  
+12) Internationalized the spelling of the Initialise() function in  
+CEikVerticalRadioButtonsManager, to Initialize()  
+  
+From Julian:  
+------------  
+13) The bitmap editor now supports Cut Copy and Paste; try it and  
+see!  Note in particular that after a Paste, you get put into "Region  
+moving mode" automatically, to allow you to position the new bitmap  
+region where you want  
+  
+14) Several bugs have been fixed in the bitmap editor, eg the cursor  
+and the selected region should now get redrawn properly after a  
+popout menu is removed  
+  
+15) Other bitmap editor code improvements, to make it run more  
+smoothly  
+  
+From Neil:  
+----------  
+16) Improved scrollbar manager's behaviour when resizing windows so  
+that it no longer sometimes obliterates the border of the listbox/  
+edwin (but there still seem to be a couple of problems with very  
+small edwins)  
+  
+17) Extra scrolling functionality is now in place in Edwin, though it  
+waits for new Form functionality to be supplied before it all works  
+as fully intended  
+  
+18) Changed the ResetViewL() function in Edwin to use the Form flag  
+EFViewFillBottomOfScreen which when functional should fix the problem  
+of leaving empty space at the bottom (eg after changing font)  
+  
+From SimonC:  
+------------  
+19) In preparation for making the classes in the hierarchical listbox  
+system more portable (more useable in a wider set of circumstances),  
+moved various code from eg the application control class in TLBox1  
+into the new classes CDesCDirectoryArray and CTreeItemList  
+  
+20) The recent change to info messages had meant that they were no  
+longer being displayed on the first request; now fixed  
+  
+From Siamak:  
+------------  
+21) Implemented basic support for use of all four arrow keys in  
+multi-column listboxes  
+  
+From DavidW:  
+------------  
+22) Converted to the latest build of CLOCK (009), taking advantage of  
+an easier mechanism for defining digital clocks  
+  
+23) Now implement "no wrapping" edwins (such as in TextEd) by calling  
+the CTextLayout function SetToNoWrapping(), rather than specifying an  
+arbitrarily huge width  
+  
+24) All Edwins with just one line now get the "no wrapping" flag set  
+automatically.  
+  
+  
+Version 0.01.020  
+================  
+(Made by DavidW, 11 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/008  
+        CONE/061 ETEXT/028 TBOX/043 FONTS/009 ALWL/012  
+  
+From DavidW:  
+------------  
+1)  Renamed CEikAppControl::HandleNonStandardCmdL to HandleCommandL;  
+note that your applications will fail to receive any commands unless  
+you rename your version of this function  
+  
+2)  CEikAppControl no longer defines CmdFileOpenL() or  
+CmdFileSaveAsL(), and no longer treats the corresponding Cmd numbers  
+as different from any of the others (intercepting them and invoking  
+the above functions automatically); you have to add case statements  
+for these into your HandleCommandL()  
+  
+3)  On the other hand, the set of pre-defined Cmd numbers in  
+EIKCMDS.HRH has been significantly increased; use these numbers  
+(rather than corresponding ones of your own) if in due course you  
+want your toolbar buttons for these commands to automatically pick up  
+the right icon (and there is likely to be other benefits of keeping  
+the same numbers constant across applications)  
+  
+(The set of numbers in EIKCMDS.HRH is of course subject to  
+considerable further evolution)  
+  
+4)  Converted many of the test apps to use the new EEikCmdXxx values,  
+where applicable, instead of their own values; one automatic benefit  
+of this is that commands selected via the sidebar popup menus now  
+often end up doing something meaningful, rather than being ignored  
+  
+5)  Withdrew the special pseudo-Cmd number EEikCmdDisplayMenu (it's  
+no longer needed, now that the sidebar works)  
+  
+6)  Numerous changes inside TextEd application  
+  
+7)  Added a function InsertFromTextFileL() to CEikEdwin, allowing any  
+edwin to import data from a plain text file (however, this can be  
+astonishingly slow for even moderately-sized *.TXT files)  
+  
+8)  Added a new flag EEikEdwinNoWrap to disable word-wrap in an  
+edwin, as is appropriate eg for a program editor  
+  
+9)  As a temporary workaround, added a "Directory" button to the  
+standard File Open dialog, allowing the user to navigate to a  
+directory other than the one initially seeding the dialog (and it is  
+also possible to specify a different wildcard match)  
+  
+10) Removed the aResourceId parameter from all CEikEdwin functions  
+like RunFontDialogL() and RunCharMapDialogL(), with the function  
+supplying the id number internally (so there's no longer any  
+requirement for the caller to know this value).  
+  
+  
+Version 0.01.019  
+================  
+(Made by DavidW, 9 Mar 1996)  
+  
+Uses:   E32/054 F32/018 STORE/009 BAFL/021  
+        GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/008  
+        CONE/061 ETEXT/028 TBOX/043 FONTS/009 ALWL/012  
+  
+From DavidW:  
+------------  
+1)  Converted to E32(054) etc; here, the "etc" was about 90% of the  
+work involved in the conversion; there has been a great deal of new  
+code developed at all levels of EON system software; see the release  
+notes of all these system components for more details  
+  
+2)  Note in particular that you now link with WS32D.LIB instead of  
+with W32D.LIB, that TStream has changed to TStreamId, that E32ADT.H  
+has changed its name to E32BASE.H, that the interface to clocks has  
+been changed, that all TBuf_nn typedefs have been withdrawn, that  
+several StoreL/ RestoreL functions have become ExternalizeL/  
+InternalizeL functions, that various EText enums that used to be  
+global are now scoped, that ServiceL() functions have to move from  
+CServer subclasses to CSession subclasses (sometimes for better,  
+sometimes for worse), and that various sets of header files have been  
+rationalized, so you may find you need to #include different files  
+from before  
+  
+3)  Possibly the best single improvement, arising from the conversion,  
+is that you can now run Eikon programs outside the debugger, eg by  
+just typing "shell" from the CMD line; you can go one stage further,  
+and type eg "shell tbmptag" to start up the Eikon Shell and have it  
+start up, in turn, the *.PRG file you've specified (in this case,  
+TBmpTag.PRG)  
+  
+4)  In case you have any trouble with crashes in the Window Server,  
+Store, or EText, you may find it useful, after installing EIKON 019,  
+to copy the UTC (under-the-counter) files from R:\EIKON\TEMP into  
+your \E32SYS  
+  
+(You should also delete old document files - especially those with  
+global text in them - and start your collection of saved files  
+afresh)  
+  
+5)  All Eikon test code has been converted to the new software, with  
+the exceptions that: THKeys0 and THKeys1 have been deleted (being  
+regarded as superseded by other test code - the only pieces of unique  
+code in them have been moved into a rejuvenated TMenuB1); TCalcBut  
+and TRecLd have been superseded by the new test program TCalcUi (see  
+below); and TEdwin2 will be converted later (it contains instances of  
+CPicture, and its conversion will require more care) - whilst TEdwin2  
+runs and you can do many things with it, you can't insert any  
+pictures  
+  
+6)  Altered the BACKUP verb of MNT.CMD to -x*.NCB files, ie to exclude  
+*.NCB files from the backup zip - which makes a huge difference!  
+  
+7)  Altered the status of *.MAK files in LI.PRJ listings from text to  
+binary, because it seems that they change more often under MSVC4 than  
+under MSVC2, and I'm fed up with vdiff.lis listings being swamped by  
+lists of changes in *.MAK files  
+  
+8)  Altered MNT DELWORK to delete any EIKON*.* files in \E32SYS  
+  
+9)  There's a new system in place for switching to an underlined  
+font: there's no longer any dedicated underlined system fonts;  
+instead, you just call eg SystemGc().SetUnderlineStyle(...)  
+  
+10) As an experiment, hooked the Zoom In and Zoom Out commands  
+selected from the Zoom pop-up menu into the relevant functions in the  
+bitmap editor  
+  
+11) Simplified and tidied a lot of code, all over the place, in the  
+course of making the conversion to the new software componentes  
+  
+12) The SaveAs code for Demo wasn't setting the flag to say that a  
+document was loaded, with the result that the user got queried for a  
+filename again on exit; this bug had been replicated to lots of other  
+test code; all fixed now  
+  
+13) If the text of the info message is changed while the previous  
+info message is still showing, the changeover now happens more  
+prettily (fixes bug HA-78); added test code for this case to TMenuB1  
+  
+From Vamsi:  
+-----------  
+14) The text editor application is now released as part of Eikon, for  
+the time being, in its own new source directory \eikon\texted  
+  
+15) The main view is a standard global text editor; you can type in  
+text, save it (to the native *.TED format), load it in again, or  
+"import" a plain text file, such as a RELEASE.TXT or even a  
+TEXTED.CPP file  
+  
+16) TextEd has a reasonably full menu bar, with most of the items  
+leading for the moment to a "Not implemented yet" info print; dummy  
+dialogs exist for Find, Replace, and Goto  
+  
+17) The Word Count menu item reports the number of words in the  
+document  
+  
+18) Provided a new STRUCT definition in EIKDEF.RH, called  
+TOOLBAR_LABEL, to allow applications to put text labels eg at the top  
+of their toolbars (TextEd is considering putting the name of the  
+current document at the top of its toolbar)  
+  
+From DavidA:  
+------------  
+19) New test code TCalcUi (superseding TCalcBut and TRecLd, which are  
+withdrawn) features a prototype of the top-level calculator view  
+  
+20) This features recursive loading of controls within borders, using  
+classes that will shortly migrate, in part, into system code, where  
+they will facilitate improved dialog geometries  
+  
+21) This also features improved "multi-label" buttons, eg with better  
+text positioning when there is only one line of text  
+  
+From Julian:  
+------------  
+22) The bitmap editor now allows the user to draw filled or hollow  
+rectangles and circles - in any of the "standard" colors  
+  
+23) The bitmap editor is now easier to use from the keyboard; eg when  
+drawing a line, rectangle or circle (or even when selecting a  
+region), pressing Space once will establish the first pointer down  
+position (ie the "anchor") and pressing Space again (with the cursor  
+moved elsewhere) finishes the operation  
+  
+24) Keyboard users can move a selected region by putting the cursor  
+inside the selected region, and then using Shift-cursor keys (or  
+PgUp/ Dn etc)  
+  
+25) Many internal improvements in the bitmap editor code  
+  
+26) Titles of dialogs are now drawn in a larger, bolder font  
+(actually this change was made ages ago, but has been kept commented  
+out of the code, because at the time there were problems with  
+algorithmic bolding); this does, however, mean that a few dialogs  
+which used to fit on the screen are now several pixels too tall  
+  
+From Neil:  
+----------  
+27) Changed both edwin and listbox code to use the new  
+GetClientRect() function in CCoeWinArea (in CONE 061), simplifying  
+various layout calculations; this required providing edwin with its  
+own version of BorderWidth()  
+  
+28) Fixed a listbox bug (similar to an edwin one fixed a few days  
+ago) whereby dragging into the listbox from outside changed the  
+selection  
+  
+29) Extra functionality in the AdjustClientRect() function of the  
+scrollbar manager class, allowing scrollable controls to draw in the  
+area a scrollbar would normally be in, if it wasn't too small to  
+display (some of the interactions here need a bit more debugging)  
+  
+From Siamak:  
+------------  
+30) Modified CEikListBox::HandleListUpdate() to make it simpler and  
+more reusable; the idea now is that when clients of a listbox modify  
+its model (by, say, deleting some items), they should in general take  
+the following steps:  
+    (a) call CEikListBox::ClearSelection()  
+    (b) modify the model  
+    (c) call CEikListBox::SetTopItemIndex()  
+    (d) call CEikListBox::SetStateL() and/or SetCurrentItemIndex()  
+    (e) call CEikListBox::HandleListUpdate()  
+  
+31) Fixed bug in CEikListBox::MatchTypedChar()  
+  
+32) Various internal listbox changes in preparation for horizontal  
+scrolling and left/right navigation in multi-column listboxes  
+  
+From SimonC:  
+------------  
+33) Improved the storage mechanism used by the directory browser for  
+the set of current drive names (replacing a CDesCArray with a TInt32)  
+  
+34) Other internal improvements to directory browser, eg improving  
+the behaviour of the list after directory changes.  
+  
+  
+Version 0.01.018  
+================  
+(Made by DavidW, 8 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+From SimonC:  
+------------  
+1)  Improved TLBox1 to stop the crashes that used to be possible  
+after changing from a longer list to a shorter list  
+  
+2)  Trying to read the directory from eg A: when that drive is empty  
+now produces an infomsg and an empty directory list, rather than an  
+error alert  
+  
+3)  Changed the buttonarray code to allow a spacer to be added to a  
+horizontal array  
+  
+*)  Made some changes to EIKCLOCK.* that Brendan wanted for  
+Time/World, ie added a virtual CEikClock::SetBackgroundColor, and  
+altered the definition of a flag to avoid a clash of values  
+  
+From Siamak:  
+------------  
+4)  Added a new public function to CEikListBox called  
+HandleListUpdate(), which should be called when alterations have been  
+made to the model of the listbox (such as additions or deletions); at  
+present this function will reset the current and top item indices to  
+0 (since the old values may no longer be valid), update the listbox's  
+scrollbars (if any), and redraws the listboxes (by default)  
+  
+5)  Fixed bug in CEikListBox::CalcHeightBasedOnNumOfItems(), which  
+was assuming that the listbox always had a "standard" border; there  
+is now a new listbox function BorderWidth() that returns either  
+EikStandardBorderWidth (whose definition has been added to EIKENV.H,  
+namely 1) or KEikSunkenBorderWidth  
+  
+6)  Fixed the bug in CEikListBoxView::Draw() that was causing  
+multi-column listboxes to draw incorrectly  
+  
+7)  Added CurrentItemIndex() and SetCurrentItemIndex() functions to  
+CEikListBox  
+  
+From Bret:  
+----------  
+8)  The sidebar pop-up menus (eg for Help or Clipboard) are now  
+positioned more appropriately, ie alongside the corresponding sidebar  
+button  
+  
+9)  Altered TMenuB0 to show how, in principle, additional items can  
+be dynamically into a sidebar pop-up menu (such as the Zoom menu);  
+this also tests how the pop-up menu positioning code takes account of  
+the length of the menu  
+  
+From DavidA:  
+------------  
+10) Made some improvements to the multi-label buttons in TCalcBut:  
+  
+11) Eg they are now more robust to some of the text being empty  
+  
+12) They now cope with four separate pieces of text, rather than  
+three.  
+  
+  
+Version 0.01.017  
+================  
+(Made by DavidW, 7 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+NB carefully: the *.MAK files, *.MDP files, and *.CMD files for this  
+release of EIKON all presuppose MSVC 4.0.  
+  
+(Thanks to Brendan for pointing out that you can use MSVC 4.0, even  
+with versions of E32 prior to the watershed 054)  
+  
+From Siamak:  
+------------  
+1)  Fixed bug in the first letter matching logic, which could end up  
+in an infinite loop  
+  
+2)  Simplified the OfferKeyEventL() function in CEikListBox, making  
+it smaller and more reuseable for subclasses; as a result, the  
+corresponding method in CEikMultiColumnListBox is no longer needed  
+  
+3)  As an experiment, defined a flag for list boxes to make them  
+"show list box tips" whenever the current item is changed, which  
+defaults to displaying an info message with the full text of that  
+item; this feature lessens the requirement for a horizontal scrollbar  
+on a narrow listbox  
+  
+4)  Modified CEikListBoxView so that: (a) it now uses its "iViewRect"  
+as its clipping region; and (b) it fills any unused space in the  
+display area with the background color  
+  
+5)  Removed all MFI (multi-field item) stuff from Eikon (since MFI  
+listboxes will not be part of Eikon; a different implementation will  
+be used for eg the "file details" list box)  
+  
+6)  Various other internal changes to CEikListBox  
+  
+7)  Another change to listbox drawing code (made on Simon's PC) for a  
+case when the number of items in the listbox has reduced from what it  
+was previously (however, this change seems to have broken the display  
+of multi-column listboxes)  
+  
+From SimonC:  
+------------  
+8)  Altered TLBox1 to include a drive selector dialog, making the  
+resulting application more closely like the intended directory  
+browser system component (not yet fully functional)  
+  
+9)  Minor changes to EIKBUTAR.* as suggested by Brendan, mainly to  
+improve efficiency  
+  
+From Bret:  
+----------  
+10) Clicking on any of the five sidebar buttons is now effective in  
+launching an appropriate menu or menubar (bear in mind the details of  
+the picture in the emulator aren't quite right)  
+  
+11) The system resource file now has default menus for the clipboard  
+commands, the IR commands, the zoom commands, and the help commands  
+  
+12) EIKCMDS.HRH now contains standard Cid numbers for commands from  
+the above menus  
+  
+13) See TMenuB0 for an example of how an application can use the  
+"Warn" mechanism to alter the contents of, eg, the Help menu  
+  
+From Julian:  
+------------  
+14) Added line-drawing facility to the bitmap editor  
+  
+15) Another enhancement to the bitmap editor, for the case of pointer  
+events dragged outside the bitmap editor's window  
+  
+16) General internal improvements to bitmap editor code  
+  
+From Neil:  
+----------  
+17) Fixed an ancient edwin bug, in which clicking outside the edwin  
+and then dragging onto it could have unexpected results  
+  
+18) Changed the list box draw code in the case of the list box being  
+resized (to prevent unnecessary work being done *every* time the list  
+box is drawn)  
+  
+From MartinD:  
+-------------  
+19) Internal changes to the edit combo box, to prevent it from  
+crashing on destruction (mainly by removing code, and leaving it up  
+to the superclass to do more!)  
+  
+From Brendan:  
+-------------  
+20) Tidied up the CEikBitmap class, making it more extensible (and  
+also fixing a potential memory leak)  
+  
+21) Added another new test program, TBmp, to exercise these extra  
+features in CEikBmp  
+  
+From DavidW:  
+------------  
+22  Converted all system code and test code to run under MSVC 4.0.  
+  
+  
+Version 0.01.016  
+================  
+(Made by DavidW, 6 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+From Siamak:  
+------------  
+1)  Added a ConstructL() function to CEikChoiceList, to make it  
+easier to construct choice lists dynamically (eg outside the context  
+of a dialog)  
+  
+2)  Modified the choice list's key event handling so that it now  
+treats Down as the same as Tab; this makes some sense in container  
+controls other than dialogs, where Tab may be appropriated for other  
+uses; normally it won't make any difference in dialogs, since the  
+Down key won't get passed on to an individual control (but there is  
+an interesting exception when there is only one focussable control in  
+a dialog)  
+  
+3)  Modified CEikListBox::SetExtentL() so that it now "rounds down"  
+(if necessary) the height of the display area of a listbox, to ensure  
+that a whole number of lines is displayed  
+  
+4)  Both standard and multi-column listboxes now have two  
+ConstructL() functions: one to specify sizes in pixels, and the other  
+to specify sizes in terms of items and numbers of characters  
+  
+5)  Provided pointer handling for multi-column listboxes (see TLBox  
+for an example)  
+  
+6)  Started a major extension to TLBox, to make it provide a  
+framework in which more realistic testing of listboxes can take  
+place; currently TLBox subclasses CCoeContainerControl to have a  
+control which will be used for displaying various kinds of listboxes;  
+you can navigate between these controls using the TAB key  
+  
+(The toolbar displayed on the right isn't operational yet)  
+  
+From SimonC:  
+------------  
+7)  Modified the hierarchical list box code in TLBox1 so that it now  
+displays the contents of the current root directory  
+  
+8)  You can press Right (or Enter) on any expandible branch, to cause  
+it to expand one level, and display its contents indented one level  
+  
+9)  You can also press Left, when on the head item of a branch, to  
+collapse that branch again  
+  
+From Neil:  
+----------  
+10) Change to listbox drawing code to avoid junk being left in the  
+margin regions after a listbox has been resized (there's a new  
+function DrawMargins())  
+  
+11) Provided two independent fixes(!) for the problem of the bottom  
+right-hand corner of an edwin not being redrawn, in the case when it  
+has both a horiz and a vert scrollbar; the preferred fix is simply no  
+longer to call iWin.SetBackgroundColor())  
+  
+12) Changing the font or extent of an edwin should now retain any  
+selection region, as well as its position  
+  
+13) TScrlB1 now gets around the problem of requiring the user to type  
+a whole lot of data into its edwin, before it can be meaningfully  
+tested, by dumping a directory reading of the root directory into  
+the edwin on start-up! (this may cause a slight delay)  
+  
+14) Added a horizontal scrollbar to TScrlB2, to test out redraws of  
+resized listboxes  
+  
+From Julian:  
+------------  
+15) Reorganized bitmap editing code to cut down on storage  
+requirements  
+  
+16) Also the code handles interim failures better, by means of a new  
+function HandleUnfinishedOperation()  
+  
+17) A better scheme is in place for when the pointer is dragged  
+outside the visible bitmap editing window  
+  
+18) Replaced some home-grown filename manipulation code with some  
+calls to F32 services  
+  
+From DavidA:  
+------------  
+19) New test code TRecLd.* demonstrating some ideas to be used as the  
+basis for recursive loading of layout information from resource files  
+(such as will allow more complicated dialog geometries)  
+  
+20) TRecLd has its own special subclass of CCoeContainerControl,  
+and parts of it are intended to migrate to CCoeContainerControl  
+itself in due course (this code requires CONE 059)  
+  
+From Vipul:  
+-----------  
+21) Fix to EIKCONSO.CPP to make HideCursor() effective  
+  
+From DavidW:  
+------------  
+22) Changed TEdwin2 to (at last!) allow data exchange between it and  
+a launched TBitEd0 sub-application.  So insert "Paint" style pictures  
+now really does work - and they can be edited again later  
+  
+(caveat: this version of Eikon can't yet use the version of EText  
+that supports persistence of rich text, so you can't save and load  
+your TEdwin2 documents)  
+  
+23) Changed every CalculateRequiredSize() function to have a trailing  
+...L on its name, ie CalculateRequiredSizeL(), as required by the  
+corresponding change in CONE 059  
+  
+24) Simplified some example code in TDialg0 that accesses its toolbar  
+button states, so as not to need to know about the intervening  
+buttonarray object any more (this simplification requires CONE 059)  
+  
+25) Pixel positioning tweak in secret editor code, for slightly  
+improved visuals.  
+  
+  
+Version 0.01.015  
+================  
+(Made by DavidW, 5 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/058 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+From Julian:  
+------------  
+1)  Fixed problem (found by Pieter and diagnosed by DavidA) whereby  
+setting a line in a dialog dimmed or invisible could result in  
+preceding lines also being dimmed or invisiblised (this fix relies  
+upon CONE 058)  
+  
+2)  The same fix also deals with the case of strange effects when a  
+non-focussable line in a dialog has a prompt with a mnemonic  
+  
+3)  Added a non-focussable line to the "Text editors" dialog in  
+TDialg1 to test the above fixes  
+  
+4)  Added File Import and File Export dialogs to the bitmap editor  
+code in TBitEd0, allowing import and export of *.PBM files  
+  
+5)  The bitmap editor now has a permanent bitmap device (instead of  
+frequently creating and destroying one) to deal with all bitmap  
+manipulation, with the result that the drawing process has speeded up  
+  
+From Natascha:  
+--------------  
+6)  New module EIKPARAD.* containing code for three new system  
+dialogs: the Paragraph Alignment dialog, the Paragraph Spacing  
+dialog, and the Paragraph Indents dialog  
+  
+7)  New functions RunAlignDialogL() etc in CEikEdwin, to run eg the  
+Paragraph Alignment dialog for that edwin  
+  
+8)  TEdwin0 now has three new toolbar buttons, allowing access to  
+these three new edwin functions  
+  
+(TEdwin0 already saves its global character and paragraph formats to  
+file, so re-opening an existing TEdwin0 document will reinstate the  
+formatting present in it when it was last edited)  
+  
+From DavidW:  
+------------  
+9)  Converted TBitEd0 to be a document-oriented application, with  
+files with typical extension *.PNT; save a file in TBitEd0 and you'll  
+see it appear in the list offered by the Shell in its Documents  
+dialog (identified as belonging to the TBitEd0 application)  
+  
+10) TBitEd0 is now an auto-saving application, ie saving all changes  
+automatically on exit, S3-style, without prompting the user for  
+confirmation  
+  
+11) More preparation for processing sidebar events other than clicks  
+on the menu button: the code that eventually deals with these has  
+been routed in the first instance through the menu bar, to ensure  
+that these events are treated serially (eg so that you don't end up  
+with two sidebar popup menus active at the same time)  
+  
+12) On the PC, just as F9 is mapped to the menu button on the  
+sidebar, so now is F8 - F5 mapped to the Help, Clipboard, Irda, and  
+Zoom sidebar buttons respectively  
+  
+13) Put a fix in place to prevent the foreground application  
+receiving sidebar events when the Eikon Server has a dialog that is  
+active (eg the Task List dialog).  
+  
+  
+Version 0.01.014  
+================  
+(Made by DavidW, 4 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/057 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+From Neil:  
+----------  
+1)  Added SetXScrollBarFlags() and XScrollBarFlags() (where 'X' is  
+either H or V) in CEikListBox, to enable non-default scrollbars  
+  
+2)  Changed listbox scrollbar flag names from "Style" to "Flags"  
+since they effect functionality as well as appearance (and this also  
+keeps things consistent with eg CEikEdwin)  
+  
+3)  Added similar ScrollBarFlags functions to CEikEdwin  
+  
+4)  Replaced a call to FormatTextL() in the SetExtentL() of CEikEdwin  
+with a call to a new function ResetViewL(), also called from  
+RunFontDialogL().  This function keeps the line with the cursor in  
+the same position on the screen as best as possible, instead of  
+resetting it to the first line (as FormatTextL() did).  To see the  
+effect of this change, eg use TScrlB1 and resize its edwin  
+  
+5)  Changed SetScrollBars() in CEikEdwin to cater for horizontal as  
+well as vertical scrollbars  
+  
+6)  Added a copy of the properties dialog from TScrlB2 into TScrlB1,  
+allowing changes to the number of lines of data (not yet functional),  
+the number of lines visible, and the width of the edwin  
+  
+(it's now clear that both scrollable listboxes and edwins have redraw  
+problems when resizing - these will be addressed soon)  
+  
+7)  Fixed a scrollbar bug (found by SimonC) in which a scrollbar with  
+dimmed button(s) got increased such that new buttons were added, but  
+the new buttons didn't get dimmed as required  
+  
+From Julian:  
+------------  
+8)  In the bitmap editor, the way the focus pixel has been improved  
+(following an idea in Draw), using a "+" cross in "Pixel" mode of the  
+application  
+  
+9)  In "Region" mode, the cross changes to two crossed lines (try it  
+and see), and when the focus pixel is inside the selected region, a  
+"X" cross is used instead  
+  
+From Vasmi:  
+-----------  
+10) Fixed the SetFileNameL() function of CEikFileNameSelector so  
+that, if a specific filename is passed in, that name (if it exists) is  
+the one initially displayed in the choice list  
+  
+11) Made the Edit Picture function in TEdwin2 cope with either the  
+"bitmap" or the "simple" kind of picture, by bringing up the correct  
+dialog in either case  
+  
+From Brendan:  
+-------------  
+12) New module EIKTAG.* containing two new classes, CEikTag and  
+CEikBitmap, each to be used in due course in Alert dialogs  
+  
+13) A CEikTag is like CEikLabel in many ways (a proper analysis of  
+whether the two classes ought to be combined needs to be done); it is  
+a text label that is non-focussable, can change font, can align its  
+text, and does not recognize mnemonics  
+  
+14) There's also a CEikBufTag variant of CEikTag, that does not  
+require memory allocation to alter its text  
+  
+15) CEikBitmap is a simple bitmap control  
+  
+16) See new test program TBmpTag for code that exercises CEikTag and  
+CEikBitmap  
+  
+17) Also made some improvements to TWldSl  
+  
+From Siamak:  
+------------  
+18) More work on MC (Multi-Column) list boxes; currently, keyboard  
+navigation/selection (with no scrolling) works, but scrollbars,  
+pointer events, etc, are not supported yet  
+  
+19) See the latest TLBox for an example of an MC listbox  
+  
+20) Made some internal changes in listbox code to improve reusability  
+  
+From SimonC:  
+------------  
+21) Made some detailed changes to scrollbar positioning code, to try  
+to ensure the borders of their buttons always get drawn properly (this  
+turns out to be quite complicated, as a side-effect of the "dense  
+packing" flag, which in effect allows buttons to lie about the extent  
+of screen space they need to draw over)  
+  
+From MartinD:  
+-------------  
+22) The edit combo box now displays a cursor (see TCombox)  
+  
+23) Other internal improvements to the edit combo box code  
+  
+From Bret:  
+----------  
+24) Changes to test code TMenuB0 in preparation for testing launching  
+pop-up menus on a "pen held still" event  
+  
+From DavidW:  
+------------  
+25) Re-arranged a lot of the code in TEdwin2, to avoid some memory  
+leaks, and to clarify its structure generally  
+  
+26) In TEdwin2, there is now only only one "Insert picture" menu  
+command, that leads onto a dialog with a listbox of four different  
+picture types - "Paint", "Draw", "Simple", and "Bitmap from file";  
+choosing "Simple" or "Bitmap from file" runs up an appropriate  
+dialog; choosing "Paint" now runs up the TBitEd0 test application  
+  
+27) Moved the CEikTitleWindow class out of TEdwin0 test code into  
+EIKAPPC.*, so that it can be used by other applications as well; in  
+particular it is now used by TBitEd0, in the case when it is being  
+run as a sub-program (eg from TEdwin2)  
+  
+28) Provided LaunchPopupMenuL() function in CEikonEnv, which can be  
+called whenever an application desires; changed code in TMenuB0 to  
+give an example of how to call this function; the "return value" is  
+that the HandleCommandL() function of the CEikAppControl subclass is  
+called (the same as for commands chosen from the menubar proper)  
+  
+(in principle cascade sub-menus can be launched from any such popup  
+menu, but for the time being, pen navigation into these sub-menus  
+won't be possible)  
+  
+29) Added a new utility function AddDialogLikeControlToStackL() to  
+CEikonEnv, returning the CCoeControlStack* pointer of the stack the  
+passed control was added to; changed code in eg EIKDIALG.CPP and  
+EIKCHLST.CPP to use this new function  
+  
+30) The "No"/"Yes" pair of buttons in eg the Query dialog now respond  
+to Alt-N and Alt-Y respectively (but not yet to N and Y)  
+  
+31) Fixed a bug in the "copying deferred loaded data" part of Demo,  
+which could cause a crash in the case when no document file had been  
+loaded.  
+  
+  
+Version 0.01.013  
+================  
+(Made by DavidW, 1 Mar 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/057 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+Uses CONE/057 for the first time  
+  
+From Julian:  
+------------  
+1)  Further developments in the bitmap editor, allowing moving and  
+clearing of a select region (ie including "drag and drop")  
+  
+From MartinD:  
+-------------  
+2)  First cut of an edit combo box control, ie an editor with a tab  
+button to expand a list of ready-made choices (such as a history  
+list); implementation in the new module EIKCMBOX.*  
+  
+3)  See test code TCOMBOX.* for an example (early days yet)  
+  
+From SimonC:  
+------------  
+4)  Analog clocks can now have their background color specified.  At  
+present this happens only if the flag EEikAnalogClockSelectBackground  
+is set, because the drawing flickers quite badly and the clock hands  
+are hidden until they are animated.  For demo purposes, all the  
+clocks in TDialg0 behave like this.  Hopefully the CLOCK.DLL can  
+offer some more support here, otherwise the whole feature will get  
+thrown out and the spec team will simply have to do without this  
+particular bell-and-whistle  
+  
+(this new clock feature requires that a pile of new *.PBM bitmaps get  
+placed in your \e32data; this happens automatically inside EIKON's  
+MNT GETREL)  
+  
+5)  Clocks now also have their border drawn by default.  This can be  
+disabled via the flag EEikClockNoBorder.  All toolbars have this set  
+for now  
+  
+6)  Converted the toolbars in the Shell and TDialg0 to be  
+buttonarrays, so that their controls get sized properly (before too  
+long, it's likely that *all* toolbars will convert to this scheme)  
+  
+7)  Buttonarrays have been generalized to allow them to include  
+spacers  
+  
+8)  Other minor internal changes to buttonarray code  
+  
+From Neil:  
+----------  
+9)  Upgraded CEikEdwin to use the scrollbar manager functions for  
+positioning and sizing scrollbars  
+  
+10) Fixed a small bug in listbox code that prevented the scrollbar  
+"snapping" into position on the thumb release  
+  
+11) Fixed a small bug (rounding error) in the calculation of the  
+thumb position in scrollbars  
+  
+12) In TScrlB2, the "number of items" editor in the properties dialog  
+is now functional  
+  
+From Siamak:  
+------------  
+13) Changed CEikListBox::Draw() to draw a 3D border if the listbox  
+flag EEikListBoxSunkenBoxBorder is set  
+  
+14) Started work on multi-column ("snaking") list boxes, as will be  
+used in the (real) Shell; implementing this control requires two new  
+classes: CEikMultiColumnListBox (derived from CEikListBox) and  
+CEikMultiColumnListBoxView (derived from CEikListBoxView)  
+  
+15) Modified the test app, TLBox, to use a CEikMultiColumnListBox  
+(although this still behaves like a standard listbox at the moment)  
+instead of an MFI listbox  
+  
+16) Other internal listbox changes  
+  
+From Bret:  
+----------  
+17) Clicking on sidebar buttons other than the menu button now  
+results in an IPC message to the foreground client (previously, this  
+only happened for the menu button)  
+  
+18) For now, the response to these other buttons is simply to display  
+an info print  
+  
+From Brendan:  
+-------------  
+19) Improvements to world selector drawing code  
+  
+From DavidW:  
+------------  
+20) Renamed the "MDWORK" verb of MNT.CMD to "MAKEWORK", to match E32  
+  
+21) Simplified the forest of listbox classes, by throwing out all the  
+mad mixins (definition: a "mad mixin" is an M class with a Base()  
+function that returns a CBase pointer, clearly showing that the class  
+design is mad :-)  
+  
+22) Various other changes to listbox classes to make them more  
+flexible and easier to use (without having to duplicate lots of code)  
+  
+23) New test program TLBox1, showing the start of a hierarchical  
+listbox, together with various classes that will end up, after due  
+evolution, in Eikon.  
+  
+  
+Version 0.01.012  
+================  
+(Made by DavidW, 29 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/056 ETEXT/026 TBOX/042 FONTS/008 ALWL/011  
+  
+Uses TBOX/042 and CONE/056 for the first time  
+  
+From Brendan:  
+-------------  
+1)  Incorporates first cut of Eikon world selectors; these allow you  
+to select a city or a country, or a city in a particular country  
+  
+2)  The selectors consist of CWorldSelector and CWorldManager; the  
+selectors must be linked to a manager, which keeps track of the state  
+of the "world ID", by reference to the world database  
+  
+3)  A city selector and a country selector can exist as a pair,  
+sharing their world manager  
+  
+4)  Default keyboard behaviour is as follows: Ctrl-L locks the search  
+mode of the selectors (specific text can be displayed for a  
+particular search mode); otherwise incremental matching applies  
+  
+5)  See the new test program TWldSl, in which various world selectors  
+are created in different ways (singly and in pairs); Test1  
+adds/removes a sunken box border; Test2 changes the font; Test3 shows  
+the controls in a dialog  
+  
+From SimonC:  
+------------  
+6)  Defined two new toolbar flags, EEikTBarLeftOfScreen and  
+EEikTBarTopOfScreen; changed TDialg0 to have its toolbar at the left  
+of the screen  
+  
+7)  Changed CEikAppControl::GetClientExtent() to pay closer attention  
+to the position of the toolbar (which side of the screen, etc)  
+  
+8)  Added a new function CreateSecondToolBarL to CEikAppControl,  
+essentially containing the code that used to exist separately in test  
+code like TBut0 and TDialg0, to ease the creation of an auxiliary  
+toolbar (sometimes called "toolband") from a resource file; see TBut0  
+or TDialg0 for how to use this new function  
+  
+9)  In an attempt to prevent the uneven line down the side of  
+toolbars caused by clocks and other controls which don't draw a  
+border, have gone back to having toolbars and button arrays draw a  
+border; clocks at the top or bottom of a toolbar presently cover some  
+of this border  
+  
+10) Various other small changes to the toolbar and buttonarray code  
+in the wake of recent changes to the box layout engine:  
+  
+11) CEikSpacer now has new functions SetSpacerHeight and  
+SetSpacerWidth, so that button arrays can specify eg the height of  
+spacers; currently spacers are set to the same height as the system  
+font, if toolbar buttons are individually stretchable, and (still)  
+the same height as buttons otherwise  
+  
+From Neil:  
+----------  
+12) Started a re-write of the ScrollBarManager class, to add in extra  
+functionality (eg tiling functionality) currently duplicated by  
+different clients of scrollbars (such as edwin and listbox); thus  
+there are new functions CalcClientRect() and TileScrollBarsL()  
+  
+13) The former functionality of AddScrollBarL() has had to be split  
+into a number of different functions, eg CreateScrollBarL() and  
+AddScrollBarToClient() (plus various SetXxxxL() functions), to cope  
+with wider sets of requirements  
+  
+14) Converted list boxes to use the new scrollbar manager functions,  
+instead of positioning the scrollbars manually  
+  
+15) Partially converted edwin to the new scrollbar manager scheme;  
+likewise updated TScrlB0  
+  
+16) In TScrlB2, the visible items and width number editors in the  
+Properties dialog are now functional; this has exposed a couple of  
+bugs in the listbox redraw code and thumb drag scrolling  
+  
+From Siamak:  
+------------  
+17) CEikListBox now has a new ConstructL() function that allows its  
+client to specify the size of the listbox in terms of the numbers of  
+items and the number of character widths per item; the size of any  
+scrollbars to be added on gets taken care of automatically; this  
+simplifies application code such as that in TLBox  
+  
+From DavidA:  
+------------  
+18) One line fix to EIKEDWIN.CPP to prevent a crash when laying out a  
+dialog like the "No buttons" dialog in TDialg0.  
+  
+  
+Version 0.01.011  
+================  
+(Made by DavidW, 28 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/055 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From SimonC:  
+------------  
+1)  Various improvements to the CEikClock classes, eg new flags are  
+available offering a choice of clock styles.  Eg clocks can have  
+shadowed hands/figures and can display a date, and the second hand is  
+optional for analog clocks  
+  
+2)  See the three new dialogs in TDialg0 for many examples of clocks  
+(eg a dialog with no fewer than four clocks in it)  
+  
+3)  New functions SetClockFlags and SetBackgroundColor  
+  
+4)  A CEikClock is now always created in its own window, to prevent  
+problems with the background of the containing window obscuring part  
+of the clock display  
+  
+5)  Clocks in toolbars are once again drawn centred rather than  
+left-aligned  
+  
+6)  The background color is once again drawn throughout the whole  
+size of a toolbar (rather than being missed out from the area around  
+a clock)  
+  
+From Julian:  
+------------  
+7)  Numerous further improvements to the bitmap editor, TBitEd0  
+  
+8)  The individual pixels can now be altered to any one of four  
+colors (black, dark gray, light gray, or white), by clicking on latch  
+buttons in the toolbar  
+  
+9)  To start with, the bitmap editor will create a plain bitmap sized  
+30x30, but this will be sized larger automatically, if the user  
+alters a pixel outside this region  
+  
+10) Started work on Zoom In and Zoom Out feature (the grid won't be  
+drawn if the bitmap ratio is too small)  
+  
+11) Scrolling up/down and left/right is now possible, within the  
+bitmap drawing  
+  
+(as before, some of the problems seen in using TBitEd0 can be  
+attributed to known defects in BITGDI)  
+  
+From Neil:  
+----------  
+12) A few more bug fixes for awkwardly sized scrollbars  
+  
+13) Moved all scroll-bar "move button" code into its own new module,  
+EIKSBMB.*, to allow easier independent access to it by application  
+code (eg code wanting buttons with the Up Down Left or Right  
+triangles drawn on them)  
+  
+14) New testcode TScrlB2 with a listbox with a scrollbar, together  
+with a dialog to change the number of items, number of visible items,  
+and width of the scrollbar (the dialog has no effect yet)  
+  
+From Siamak:  
+------------  
+15) Added more support for horizontal scrollbars in listboxes; in  
+TLBox, you can now see a horizontal scrollbar (though it's not  
+functional yet)  
+  
+16) Fixed a bug in the CreateDefaultModel() function of CEikListBox,  
+which wasn't calling the ConstructL() function for the listbox model  
+it had created  
+  
+17) Fixed a sizing bug that was showing up in TBut0 to do with  
+positioning pop-out listboxes  
+  
+From DavidW:  
+------------  
+18) Converted to the new box layout engine code, from CONE 055; the  
+main change here is that the default alignment flags have changed  
+from EBloAlignTop|EBloAlignLeft (which used to have the value 0) to  
+EBloWholeWidth|EBloWholeHeight (which *now* has the value 0)  
+  
+19) Most of the layout code in Eikon seems to have been converted  
+successfully; a known exception is the "No buttons" dialog in  
+TDialg0, which presently panics (a fix is being undertaken); note  
+that various toolbars and dialogs now look slightly different from  
+before; some of these changes are positive and some are not! (further  
+changes are pending here).  
+  
+  
+Version 0.01.010  
+================  
+(Made by DavidW, 27 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/054 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From Julian:  
+------------  
+1)  Further improvements to the bitmap editor TBitEd0, which now  
+allow the bitmap to be altered and the changes saved to file  
+  
+2)  For now, the only possible change is to set the current pixel to  
+black, which you do by pressing Space  
+  
+(due to a couple of known bugs in BitGdi there are problems with the  
+details of this; the version of BITGDID.* now in R:\EIKON\TEMP fix  
+some, but not all, of these problems)  
+  
+3)  If you make changes and then try to quit the program, you will  
+get an opportunity to save your changes, which will overwrite the  
+original file, in \e32data  
+  
+(you will be able to get back the original *.PBM file, if you need  
+it, from \EIKON\SRCDATA)  
+  
+From Siamak:  
+------------  
+4)  Various bug fixes and improvements to the listbox code  
+responsible for redrawing the selection and/or current item  
+  
+5)  Changed inter-item spacing in list boxes to 2 instead of 4 (so  
+that more items will fit into a given space)  
+  
+6)  Fixed some problems with the TLBox app, eg creation of the  
+listbox with the wrong height, and non-observance of cleanup stack  
+guidelines  
+  
+From DavidW:  
+------------  
+7)  Many changes to storing and streaming functions, in order to  
+support embedded objects and multiple streams more fully  
+  
+8)  Eg the CEikAppControl virtual functions StoreL and RestoreL have  
+split in each case into two: StoreDocComponentsL() followed by  
+ExternalizeDocL(), and InternalizeDocL() followed by  
+RestoreDocComponentsL() - the order being significant!  The  
+...ComponentsL() functions take a store as a parameter, whereas the  
+others just take a stream  
+  
+9)  The end result of these changes can be seen in the latest Demo,  
+which can now launch TEdwin0 (from the Frame | Global Text menu) and  
+which can store and restore TEdwin0 data on behalf of its sub-program  
+  
+(the Demo file format version number has been incremented, and  
+previous *.DEM files will fail to load)  
+  
+10) Corresponding changes also needed to be made to the clipboard  
+class, allowing embedded objects to be streamed to and from the  
+clipboard as well as "standard" streams (again, try Demo as an  
+example)  
+  
+11) Two new classes have been introduced in Demo, which are intended  
+to move to system code in due course (once they have acquired some  
+stability): RTempFile and RDeferredStream  
+  
+12) Changed CReadClipboard not to Leave if there is no clipboard  
+file, but just to put the clipboard into a state whereby all  
+GetReadStream...() calls fail with KNotFound.  
+  
+  
+Version 0.01.009  
+================  
+(Made by DavidW, 26 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/020  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/054 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From DavidW:  
+------------  
+1)  Numerous internal changes as preparation for supporting two  
+applications running inside the same Eikon environment  
+  
+2)  To an extent you can already see two applications running inside  
+the same environment; start up the Demo app, load a file (or create a  
+frame), and then use "Frame | Global text" to run up a copy of  
+TEdwin0 (which you will need to have built first) inside Demo; what's  
+still missing is an actual transfer of edited data between these two  
+apps  
+  
+3)  Changed the TEikDocHeader class so that several of its functions  
+are now static; see eg Demo or TEdwin0 (or TDialg0 or TEdwin1) for  
+how to use TEikDocHeader in its new incarnation  
+  
+4)  Made changes to resource file handling, in line with new builds  
+020 of BAFL and 054 of CONE  
+  
+5)  New functions StoreAppToStreamL and RestoreAppFromStreamL in  
+CEikAppControl supersede and extend StoreAppL() and RestoreAppL(); to  
+use these functions, you will need to have provided your  
+CEikAppControl derived class with GetAppVersion() and GetAppName()  
+functions  
+  
+6)  New function AppObserver() in CEikAppControl, to see (in effect)  
+whether the application is being run as a sub-application by another;  
+this function returns NULL for a "top-level" invocation, and  
+otherwise the handle of the "calling" CEikAppControl  
+  
+7)  See code in TEdwin0 for when an app should be calling  
+AppObserver(), and what to do with the result  
+  
+8)  New data member iTitle in CEikAppControl which, if present, gives  
+the "title text" of this sub-application, as run from the point of  
+view of its caller; again see TEdwin0 for an example  
+  
+9)  Renamed the DoOpenL() functions in test applications to  
+DoFileOpenL(), and likewise DoSaveL() to DoFileSaveL().  
+  
+  
+Version 0.01.008  
+================  
+(Made by DavidW, 23 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/019  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/053 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From Julian:  
+------------  
+1)  Started work on a new test application, ..\tsrc\TBitEd0, which  
+features a toy bitmap editor  
+  
+2)  Currently TBitEd0 displays a hard-wired bitmap, scaled and with a  
+grid drawn on top of it, supporting cursor navigation, but it is not  
+yet possible to alter the drawing displayed  
+  
+3)  Refined the clipboard interface, so that the read and write  
+clipboards are now created by a NewLC() call (formerly NewL()), to  
+give added system-wide protection against the clipboard file being  
+left tied up due to poor application programming; clients of the  
+clipboard now typically call CleanupStack::PopAndDestroy() when they  
+are finished with it  
+  
+4)  Changed the "Double click settings" dialog in the Shell, not to  
+require the use of floating point maths (hence a numeric editor is  
+used rather than a floating point editor)  
+  
+From Neil:  
+----------  
+5)  More of the "weird size problems" with scrollbars at various  
+awkward sizes (and awkward numbers of buttons) should have been  
+resolved now, due to internal changes  
+  
+6)  Some of these internal changes have the side-effect that the  
+SetLength() call to a scrollbar (or scrollbar manager) can Leave on  
+occasion, if a new button should be created, but fails with OOM - so  
+the function changes name to SetLengthL(), and callers may need to  
+take appropriate evasive action  
+  
+From Siamak:  
+------------  
+7)  Made various bug fixes and minor improvements to the listbox  
+code, and to MFI listboxes in particular (but things still aren't  
+quite perfect yet)  
+  
+8)  The main new feature is that MFI listboxes now truncate text  
+fields that exceed the column width, and show a trailing ellipsis,  
+rather than simply relying on GDI to clip the text.  
+  
+  
+Version 0.01.007  
+================  
+(Made by DavidW, 23 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/019  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/053 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+  
+From Julian:  
+------------  
+1)  Converted Eikon code to the new double-click mechanism (present  
+in Wserv 025, superseding the mechanism in CONE prior to 053)  
+  
+2)  The start-up code of the Eikon Server process calls the  
+SetDoubleClick() function of RWsSession to initialize double click  
+parameters  
+  
+3)  Added a dialog in the Shell to allow the user to alter the double  
+click parameters (delay between clicks, and a measure of the distance  
+between the clicks)  
+  
+4)  Altered controls as required to the new scheme (mainly by  
+removing code!)  
+  
+From Siamak:  
+------------  
+5)  Various changes to the MFI (multi-field item) list box,  
+especially its item viewer, which now enforces alignment of fields by  
+clipping each field of an item if it exceeds the column width  
+(currently, all text fields of a MFI have the same max width)  
+  
+6)  The MFI list box item viewer now draws the item's icon (if it  
+exists); see TLBox for an example  
+  
+(Note that this work is not complete and further improvements to MFI  
+listboxes are pending, eg better highlighting of items)  
+  
+From Neil:  
+----------  
+7)  Added draw routines for all scrollbar buttons using new functions  
+DrawArrowInRect() and IconRect(), both in CEikScrollMoveButton  
+  
+8)  Changed the default horizontal scrollbar in TScrlB0 to be long  
+enough to show all buttons, to allow TScrlB0 to test the new drawing  
+routines in both horizontal and vertical cases  
+  
+From SimonC:  
+------------  
+9)  Improved the code in EIKCLOCK.* so that the three sizes of analog  
+clock currently available now have hands more in proportion to their  
+sizes  
+  
+10) Clocks also get positioned correctly now (more often!)  
+  
+11) Added more test cases of buttons with mnemonics, to the dialogs  
+in TBut0  
+  
+12) Fixed a bug in the button code that was preventing a button with  
+a mnemonic on its second line of text from being accessed via the  
+keyboard  
+  
+From Bret:  
+----------  
+13) Corrected a bug in the selection of dimmed cascade menu items  
+  
+14) Changed various menu pane functions to take a TRect& as a  
+parameter, rather than a TRect (the former is almost always more  
+efficient)  
+  
+From DavidW:  
+------------  
+15) Updated MNT.CMD to fetch the latest RCOMP.EXE, v274, which was  
+successfully used to build this release (and all the test code).  
+  
+  
+Version 0.01.006  
+================  
+(Made by DavidW, 22 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/019  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/052 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From SimonC:  
+------------  
+1)  Added OfferMnemonicL() and DrawMnemonic() functions to CEikButton  
+so that dialog push buttons could have a mnemonic key  
+  
+2)  See the "Clocks" button in the Customize Toolbar dialog for an  
+example of a push button that can be actioned by its mnemonic  
+  
+3)  To support mnemonics in buttons with two lines of text (which are  
+drawn in the smaller system font), another system font had to be  
+defined, "SmallerSystemUnderlineFont"  
+  
+4)  Added a version number to CEikToolBarData so that code that loads  
+customized toolbar data from profile files oughtn't to panic if more  
+fields are added later  
+  
+5)  Altered the CalculateRequiredSize of a button array to remove  
+most of the assumptions in it that the array is laid out vertically  
+  
+From Bret:  
+----------  
+6)  Menu panes now always have space for ticks and buttons on the  
+left, and space for cascade symbols on the right, irrespective of  
+whether these items actually appear or nor.  This achieves a more  
+consistent look for all menu panes (as suggested by MartinB) and  
+makes those which had just buttons/ticks of just cascades look  
+visually balanced  
+  
+7)  The width of the space for buttons, ticks and cascades is set by  
+a constant; the above changes not only approved the visual appearance  
+but also allowed coding simplifications  
+  
+8)  Added new function CEikMenuPane::DrawCascadeSymbol(), which is  
+called by CEikMenuPane::DrawItem() and draws a cascade symbol  
+algorithmically (rather than using a character in a font)  
+  
+9)  Set about disabling dimmed cascade items on menu panes  
+(previously if a cascade was set dimmed, it would still launch a  
+cascade if selected); to implement this feature in an application,  
+the cascade items in the menu pane must be given a command ID; with  
+this command ID, the application can call SetItemDimmed()  
+  
+10) Updated TMenuB0.* to toggle and test a dimmed cascade menu item  
+  
+From Julian:  
+------------  
+11) Changed various pieces of text-message preparation code to use  
+Format() instead of eg Append(), so as to be more international  
+  
+12) Renamed the function CEikMenuPane::SetItemText() to  
+SetItemTextL(), in recognition of the fact that it can Leave  
+  
+13) Put a query dialog into TDialg0 before going into an endless loop  
+in response to the "Busy" toolbar button  
+  
+14) Various changes and simplifications to the detailed implementation  
+of the clipboard  
+  
+15) See the latest code in ..\src\eikedwin.cpp or ..\demo\demain.cpp  
+for examples of using the clipboard; note in particular how the code  
+in ..\demo puts *two* data formats into the clipboard: one in its own  
+"native" format, and the other in a kind of "global text" format  
+  
+16) The definition of format types has been separated into its own  
+header file, EIKCLIPB.HRH, leaving EIKCLIPB.H without any specific  
+assumptions about the Eikon environment  
+  
+From Neil:  
+----------  
+17) Further improvements to scrollbar resizing layout logic in  
+EIKSCRLB.CPP; for now, any excess "shaft space" resulting from  
+removing buttons is drawn just as a filled rectangle  
+  
+18) TScrlB0 is now happy with many "too short" scrollbar lengths,  
+though there are still a few strange happenings that are being  
+debugged  
+  
+From Vamsi:  
+-----------  
+19) In TEdwin2, the "Edit picture" dialog is now called when the  
+cursor is placed either before or after a picture  
+  
+20) Stopped duplicating the resource for the "Edit picture" and  
+"Insert picture" dialogs (which differed only in their titles); now  
+re-use the same resource, and choose the relevant title at runtime,  
+using CEikDialog::SetTitleL().  
+  
+  
+Version 0.01.005  
+================  
+(Made by DavidW, 21 Feb 1996)  
+  
+Uses:   E32/053 F32/017 STORE/008 BAFL/019  
+        GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007  
+        CONE/052 ETEXT/026 TBOX/041 FONTS/008 ALWL/011  
+  
+From DavidW:  
+------------  
+1)  First released compatible with the above versions of E32 etc:  
+  
+(The API to the Clock DLL has changed fundamentally, and the code in  
+EIKCLOCK has only been partially converted to this new API.  So don't  
+be too surprised if, for this release, you see clocks badly drawn!)  
+  
+2)  Programs that linked with FBSD.LIB now have to link with  
+FBSCLID.ZIP instead  
+  
+3)  All "RGroupWindow"s become "RWindowGroup"s  
+  
+4)  As an experiment, renamed the GETJBLD verb of MNT.CMD to GETCOMPS  
+(for "get components").  Thus  
+    GETBLD = GETSRC + GETCOMPS  
+  
+  
+Version 0.01.004  
+================  
+(Made by DavidW, 21 Feb 1996)  
+  
+Uses:   E32/052 F32/016 STORE/007 BAFL/017  
+        GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006  
+        CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010  
+  
+From Julian:  
+------------  
+1)  Converted the cliboard code into something much closer to the  
+scheme described in the latest minutes of the Architecture Team  
+  
+(an enum for the format type is still being used for the time being,  
+though, pending the arrival of UUID technology)  
+  
+2)  CEikClipboard has gone, being replaced with CWriteClipboard and  
+CReadClipboard (both derived, behind the scenes, from CClipboard);  
+the lack of "Eik" in these class names reflects the desire to move  
+this class out of Eikon altogether (Store is a possible new home)  
+  
+3)  CEikonEnv no longer creates any clipboard instance during  
+application startup, but leaves it to software components to create  
+transient clipboard instances as and when needed  
+  
+4)  A single line editor now will only paste in text data in the  
+clipboard up to the first paragraph delimiter in it (to avoid a  
+single line editor ending up with multiple paragraphs in it!)  
+  
+5)  For the time being, picture characters in clipboard text are  
+excluded during a paste operation, to prevent random damage  
+  
+From KevinD:  
+------------  
+6)  Added support for on-the-fly changing of maximum and minimum  
+field values in MFNEs: use UpdateMinAndMax() - any out-of-bounds  
+values are reset within the new limits  
+  
+7)  Updated TDialg1 so that the Number Editor dialog has a tick box  
+toggling the max/min values of the CEikIntegerEd from +/- 1600 to +/-  
+999  
+  
+8)  Changed the color of MFNE prefixes to that of the digits  
+  
+9)  Tweak to alignment of MFNE digits, post-fixes and pre-fixes  
+  
+10) Fixed bug where two pointer clicks on the start of a MFNE field  
+did not display the cursor  
+  
+From Siamak:  
+------------  
+11) The vertical scrollbar for listboxes is now operational, ie it  
+can be operated via the pen, causing scrolling  
+  
+12) Fix to bug whereby listbox heights were sometimes leaving space  
+for a horizontal scrollbar, even though none is present (resulting in  
+partially visible items)  
+  
+13) Fix to bug whereby a flashing cursor in an incrementally matching  
+listbox could get temporarily separated from the highlighted item  
+  
+From SimonC:  
+------------  
+14) Customizable toolbars can now have the order of their buttons  
+specified; as usual see either TBut0 or Demo  
+  
+15) This new "order" information is saved to the application's  
+profile file automatically (in the absence - yet - of internal  
+versioning numbers for toolbar customization data, this means that  
+old *.APF files will fail to load properly, and indeed had better be  
+deleted, to avoid panicking the app on startup)  
+  
+16) Altered the dimming code for radio button groups, by providing an  
+explicit SetDimmed() function, thereby avoiding the need to call  
+SetDimmed() on individual radio buttons inside any Draw() function  
+  
+From Vamsi:  
+-----------  
+17) The Edit Picture dialog in TEdwin2 now successfully edits  
+pictures of the "simple" kind, provided the cursor is positioned just  
+in front of one beforehand; their height can be altered, or their  
+"brush" attribute  
+  
+18) Changed CEikEdwin::NotifyForwardChangedL() from protected to  
+public, to allow it to be called from outside (as required by TEdwin2  
+code)  
+  
+From Neil:  
+----------  
+19) Internal preparation for allowing scrollbars to be dynamically  
+resized, and still cope with all their buttons (not fully working  
+yet)  
+  
+From DavidW:  
+------------  
+20) Converted Demo to the scheme of automatic saving of any changes,  
+on exit, and gave it an explicit "File save" menu command to boot  
+  
+21) Converted the "Scale bitmap" dialog in Demo to use the new  
+UpdateMinAndMax() function to set the bounds for the MFNE there  
+dynamically, thereby reducing application-specific code (and  
+improving the UI of this dialog)  
+  
+22) Put a few new text messages into EIKON.RSS, eg "Saved" and  
+"Nothing to save".  
+  
+  
+Version 0.01.003  
+================  
+(Made by DavidW, 20 Feb 1996)  
+  
+Uses:   E32/052 F32/016 STORE/007 BAFL/017  
+        GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006  
+        CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010  
+  
+From Bret:  
+----------  
+1)  Change to the way the menubar code deals with hot keys of items  
+that are dimmed: it is now clearer that cooperation from the  
+application is required here; the application control should supply a  
+CheckHotKeyNotDimmedL(TInt aSelection) function, and return EFalse if  
+the selection is dimmed  
+  
+2)  According to the return value from this function, the menubar  
+code called either HandleCommandL or HandleAttemptDimmedSelectionL;  
+the default implementation of CheckHotKeyNotDimmedL (in the class  
+MEikMenuObserver) always returns ETrue  
+  
+3)  Modified TMenuB0 to provide an example of the above  
+  
+4)  Also modified TMenuB0 to provide an example of hot-key tables  
+changing when the menubar changes  
+  
+From Neil & Siamak:  
+-------------------  
+5)  List boxes now support having scrollbars, if flags  
+EEikListBoxVScrollBar or ...HScrollBar are set  
+  
+6)  See the latest TLBox for an example of a listbox with a vertical  
+scrollbar; this scrollbar moves automatically when the list is  
+scrolled on account of the highlight moving (though the reverse does  
+not yet happen, ie user interaction with the scrollbar has no effect  
+at present)  
+  
+(one side-effect of this change in list-box code, strangely, is that  
+it seems that "simple" listboxes can show parts of list items, rather  
+than just whole numbers of them)  
+  
+From SimonC:  
+------------  
+7)  Horizontal groups of radio buttons can now be drawn dimmed if  
+required  
+  
+8)  In the absence of forthcoming dialog technology like multi-page  
+dialogs, split the Customize Toolbar dialog into two, with the part  
+specifying the clock (if any) being accessed via a tab-out button  
+  
+9)  The "spacer" option in the Customize Toolbar dialog is now  
+(partially) functional: checking this box gives a spacer after the  
+button if it is visible  
+  
+10) Added a "button order" field to the Customize Toolbar dialog, but  
+this isn't functional yet  
+  
+From Neil:  
+----------  
+11) Fixed a bug with let a scrollbar's button animate if the user  
+clicked on the bottom pixel of its border, but without the event  
+being recorded  
+  
+12) Added a new scrollbar member data iMinReqLengthToDisplay, which  
+gets updated during CreateComponentsL() and will be used in resolving  
+layout problems if a scrollbar isn't long enough for all its  
+requested components  
+  
+From Vamsi:  
+-----------  
+13) Started work on "Edit picture" functionality in TEdwin2; the  
+application can detect if the cursor is positioned just before a  
+picture  
+  
+14) An appropriate "Edit picture" dialog is presented on demand,  
+though this isn't functional yet  
+  
+15) Added an inline function Text() to CEikEdwin, returning the  
+CGlobalText pointer to its editable text object  
+  
+From DavidW:  
+------------  
+16) TEdwin1 now auto-saves changes to its "settings" (ie the width of  
+its edit windows) on exit, to a profile file  
+  
+17) Brought TEdwin0 into the twentieth century, by giving it a menu  
+bar  
+  
+18) TEdwin0 is now store-aware, with a File menu with Open and SaveAs  
+commands; TEdwin0 reads and writes *.ED0 files, which contain its  
+formatting information (ie, which font it is using) as well as text  
+  
+19) For the first time in a test application, TEdwin0 also has a  
+"Save" command (as opposed to just having a SaveAs command), and  
+tracks whether any changes have been made to its contents; these are  
+automatically saved to file on exit  
+  
+(there's clearly a lot of similarity between the File SaveAs (etc)  
+commands of all the different test apps; the scope for additional  
+code-sharing and design-sharing, with new functions in Eikon, will be  
+explored shortly)  
+  
+20) CEikEdwin wasn't reporting EEikCeStateChanged to its observer on  
+a format change (eg a font change); now fixed.  
+  
+  
+Version 0.01.002  
+================  
+(Made by DavidW, 19 Feb 1996)  
+  
+Uses:   E32/052 F32/016 STORE/007 BAFL/017  
+        GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006  
+        CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010  
+  
+EIKMAIN.* is no more  
+--------------------  
+1)  EIKMAIN.* has been split into EIKENV.* and EIKAPPC.*, containing  
+the classes CEikonEnv and CEikAppControl respectively (also, a small  
+part of EIKMAIN.* has been relocated as BNDARRAY.* in CONE)  
+  
+2)  Most application *.CPP files simply change from #including  
+<eikmain.h> to #including both of <eikenv.h> and <eikappc.h>  
+  
+3)  However, there are significantly fewer inter-dependencies between  
+different Eikon source modules (which, among other things, can result  
+in faster incremental builds of Eikon source code)  
+  
+From Vamsi:  
+-----------  
+4)  Further pushed back the boundaries of pictures in rich text, with  
+developments in the test application TEdwin2:  
+  
+5)  The "Insert bitmap" dialog now allows the filename of the *.PBM  
+bitmap to be specified  
+  
+6)  The "Insert picture" dialog now allows the "brush style" of the  
+centre of the picture to be specified (eg forward diagonal,  
+cross-hatch)  
+  
+From SimonC:  
+------------  
+7)  The Customize Toolbar dialog now automatically saves its settings  
+to file on exit; this file is also automatically loaded the next time  
+the app is started, thereby achieving seamless persistence of toolbar  
+  
+8)  Applications no longer need to provide two different (but  
+related) resource structs, defining a toolbar - one to define the  
+toolbar itself, and the other providing the choice list of button  
+names for the Customize Toolbar dialog; instead, in effect the second  
+list is automatically generated from the first  
+  
+9)  The hard-wired width in the CalculateRequiredSize of the digital  
+clock was too small (because of changes in the font a while back?);  
+changed this to a larger hard-wired value for now(!)  
+  
+From Bret:  
+----------  
+10) Fixed a bug pointed out by MartinB, namely if the app called  
+ChangeMenuBarL() with "aDisplayNow" set to EFalse, eventually  
+oversized menu panes would be drawn  
+  
+11) Modified the test code TMenuB0 to exhibit the above case  
+  
+12) Tidied up ChangeMenuBarL() generally  
+  
+From Julian:  
+------------  
+13) Further modifications in CEikClipboard (not documented in detail  
+here since yet more changes are pending)  
+  
+14) Provided the sample app ..\demo\demo with clipboard functions,  
+cut copy and paste  
+  
+15) If text is pasted into a edwin, the edwin will no longer allow  
+its maximum character limit (if any) to be exceeded  
+  
+From Siamak:  
+------------  
+16) In order to test the reusability of the listbox code, and as a  
+step towards one of the file selector views, work has started on  
+"multi-field item" (MFI) listboxes  
+  
+17) Relatively few changes were needed to the listbox control and  
+view classes to support this new style of listbox, which you can get  
+in your programs by setting the EEikListBoxMultiFieldItems flag  
+  
+18) See the TLBox test code for an example of an MFI list box  
+  
+From DavidW:  
+------------  
+19) Added "EXPORT" verb to MNT.CMD, with the following effect  
+        copy ..\inc\*.h \e32inc  
+        copy ..\inc\*.rh \e32inc  
+        copy ..\inc\*.hrh \e32inc  
+        copy ..\incg\eikon.rsg \e32inc  
+to make it easier for applications writers making changes in EIKON,  
+to get the EIKON header files they change into the correct system  
+includes directory (whilst they wait for an official release)  
+  
+20) Provided CEikHotKeysTable with a Reset() function, to fix a bug  
+when a change in the menu bar involved a change in the set of hotkeys  
+available  
+  
+21) There's a new flag CEikAppControlCustomizableToolbar, which can  
+be set in your EikMain() function (see Demo or TBut0 for examples) to  
+allow system code to make various simplifications on your behalf -  
+such as allowing a simpler definition of your toolbar resource in the  
+resource file  
+  
+22) Application profile files (.APF files) now have much more support  
+in system software than before: there's a new class TEikApfHeader, in  
+a new module EIKAPF.*  
+  
+23) For now, the only two test applications that save/load profiles  
+are TBut0 and Demo; in each case the saving/loading happens  
+transparently, without any user control over the matter (yet)  
+  
+24) Any application that runs the Customize Toolbar dialog will have  
+a profile file generated automatically for it (if none existed  
+before), containing a persistent version of the toolbar preferences  
+selected  
+  
+25) In addition to generic profile settings (of which a customized  
+toolbar is the first example), applications can add their own  
+specific profile information, by overriding the CEikAppControl  
+functions StoreProfileL() and RestoreProfileL(); this happens in  
+Demo, which records its "auto-zoom new pictures" setting in this way  
+  
+26) An application can in principle call CEikAppControl::SaveProfileL  
+at any time, to cause a complete *.APF file to be written up,  
+containing the latest values  
+  
+27) CEikDll::StartPrgDllL() now takes one more parameter, giving the  
+name of the profile file to be used (it will be NULL by default, in  
+which case code inside CEikAppControl can generate a default name, if  
+there is data to save to the profile)  
+  
+28) The Shell's "Profiles" menu command now works, for the first  
+time, giving a file selector of all \PROFILES\*.APF files (as usual,  
+the file selector will fail, if the specified directory fails to  
+exist); go into either TBut0 or Demo and customize the toolbar, and  
+then there will be \PROFILE\*.APF files for the Shell to view  
+  
+29) App name comparison inside TEikDocHeader testing (and now also  
+inside TEikApfHeader testing) is no longer case-sensitive, thereby  
+removing a few anomalies.  
+  
+  
+Version 0.01.001  
+================  
+(Made by DavidW, 16 Feb 1996)  
+  
+Uses:   E32/052 F32/016 STORE/007 BAFL/017  
+        GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006  
+        CONE/050 ETEXT/025 TBOX/040 FONTS/007 ALWL/010  
+  
+From DavidW:  
+------------  
+1)  Contains all EIK*.* files, and other associated files,  
+transferred from their home since 11 Dec last year, in \CONE  
+  
+2)  Also contains files in ..\TSRC, ..\SHELL, and ..\DEMO directories  
+  
+3)  As will be expected, EIKON's mnt.cmd includes GETCONE and  
+GETSRCCONE verbs (and also calls these from inside GETJBLD and  
+GETSRCALL as appropriate)  
+  
+4)  CONE.RSS, CONE.RSG, and CONE.RSC become EIKON.* instead  
+  
+5)  Note that you have to add \e32sys\eikond.lib to the set of  
+libraries linked with your test application (in the Project |  
+Settings | Link dialog)  
+  
+***** The following added later *****  
+  
+6)  The code was still trying to open CONE.RSC as the system resource  
+file, instead of EIKON.RSC - now fixed  
+  
+7)  MNT GETSRCCONE was deleting \bafl\*.* - now fixed