--- /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