Version 3.1.

Build# Date Updates
3.1.1.39 05-10-2006
  • Fixes in <htmlarea> (behavior:htmlarea), in particular AV while pasting HTML from clipboard.
  • Update in <select> (behavior:dropdown-select). Alphanumeric character pressed will cause popup of the list.  
3.1.1.38 04-10-2006
  • Improvements (various) in drawing of transparent popups.
  • Fix of [BUG] Cloning tables - crush.
  • Fix of HTMLayoutSelectElements function. Being called on "super-root" element it used to match elements in contained <frame>s.
  • New API function HTMLayoutRender(HWND hWndHTMLayout, HBITMAP hBmp, RECT area ). This function allows to draw HTML on 32bpp surfaces with alpha transparency. This is (partial?) solution of Rendering with alpha channel problem.
3.1.1.37 28-09-2006
  • Fix of AV while reading (narrating) documents that contain <iframe>s by JAWS application.
  • New, behavior:shell-icon , simple behavior allowing to show system shell icons registered for files in system. Source is in include/behaviors/behavior_shellicon.cpp and sample is in html_samples/behaviors/shell-icon.htm.
  • New, HTMLayoutSetHttpHeaders API function implementation. Allows to set additional http headers while sending http requests. Demo is under menu Tests -> Test of SetHttpHeaders function.
3.1.1.36 25-09-2006
  • Fix of [3.1.1.35] browse.exe crashes w/ custom-dropdown-selects.htm
  • Fix of byte-order-mark parsing in fragments loaded by <include> meta tag.
  • Fix of misspelling in htmlayout_controls.hpp described here Stable 3.1.
  • Update of FOCUS_PARAMS structure (htmlayout_behavior.h). It got new field cancel allowing to cancel set focus operation during FOCUS_LOST event handling.
3.1.1.35 11-09-2006
3.1.1.34 02-09-2006
  • Update. Intrinsic hyperlink behavior handles RETURN key press - it used to handle only spacebar click.
  • behavior_accesskeys.cpp update - hidden IFRAMEs are not used in accesskey lookup now.
  • behavior_tabs.cpp update - it now supports behavior event/command DO_SWITCH_TAB to do switch programmatically. select_tab method does not require previous tab be selected.
  • Fix of border-color default value assignment. If border defined as border:1px solid; it shall be drawn by using color (text color) value.
  • Fix. Memory consumption optimization of basic DOM structures. It shall take less memory to render average html/css constructions.
  • Fix related to static data initialization. Chris, this is #785459 of yours.
3.1.1.33 27-08-2006
  • Fixes in HTMLayoutScrollToView function. It properly scrolls to span elements. Change: from now on it will not try to scroll blocks with overflow:hidden set in scrolling direction. Only overflow:auto and overflow:scroll blocks will be affected.
  • Optimization and fix of dynamic resolution of "deep state selectors" like "element1:state element2". It used to take too much processor power to be resolved. That issue arised in <select>s and grids with large sets of options/rows in them.
  • Fix of [3.1.1.27] Scrollbar in RTL layout misdrawn
  • Fix of [BUG] Table view after row modification-
  • Fix of resizing issues of intrinsic frames - behavior:frame / <frame>.
  • Fix of possible AV when HTMLayoutSetInnerText[16] is getting garbage text (probably binary data casted to utf8/utf16 sequence of code units). That not happen in real life but mighty Symantec QA managed to get it. My honest thanks to them for that.
  • Fix in behavior_tabs.cpp - to better style in-focus state. See /html_samples/forms/tabs.htm.
  • Update in /html_samples/stress/ folder. I've added there animation.htm file showing big transition:blend areas.
  • Implementation of simple color transformations of images.
    [back/fore]ground-image-transformation: color-schema(...)
    allows to use single source image for rendering it in different visual states. Here is a screenshot for the same element and image on it in two different states (second - on hover). Please see html_samples/css-plus/color-transform.htm for more details :). color transformations was planned feature for 3.1 and here is it.

ATTN: This is last build of 3.1.*.* series having something new in it. All further 3.1.*.* builds will contain only critical bug fixes. Amen!
3.1.1.32 24-08-2006
  • Fix of HTMLayoutDeleteElement
  • Fix of Bouncing buttons
  • Update in colors table: invert pseudo color. Use it in e.g. outline:... to draw focus rect - dotted inverted rectangle.
  • New CSS state flag :tab-focus and STATE_TABFOCUS state bit. This flag is active if element got focus only by tab traversal. Engine will set it together with :focus. In Windows UI focus rectangle is being drawn on buttons only if focus was set by tab traversal. :tab-focus allows to style this situation properly. I've updated Master style sheet accordingly.
3.1.1.31 23-08-2006
  • Fix in animation module. It works and works better a bit.
  • By request of one gentlemen from Japan IME composition window position was updated again.
  • More hearings of MS Narrator.exe. This guy is dubbing DOM elements marked as OFFSCREEN... Now it should be silent on those.
  • More fixes in dynamic measurement module.
  • Fix in HTMLayoutUpdateElement function for cases when element is located inside <frame>.
  • Fix in themes module - it supports now change of OS theme on fly.
3.1.1.30 22-08-2006
  • Better mouse events handling while popup is visible.
  • Fix of drawing issues in scrollables (overflow:auto).
  • Better IME composition window positioning.
  • Better handling of IAccessible::get_accFocus, IAccessible::get_accRole and IAccessible::get_accState.
  • After call of FreeLibrary for HTMLayout it frees all allocated memory.
3.1.1.29 21-08-2006
3.1.1.28 21-08-2006
  • Critical fix in HTMLayoutGetElementHtml/HTMLayoutGetElementInnerText - it used to be memory leakage there. Great thanks to Brian and Chris and their team.
  • Optimization of HTMLayoutUpdateElement - dynamic updates should work faster now.
  • Fix of [v3.1.1.18] Key handling . Joel thanks a lot.
  • Implementation of "All children" ideom for sorting
  • More memory management fixes related to dynamic freeing of the library.
3.1.1.27 18-08-2006
  • Fix of [PRB] Rendering of an image with rounded corners
  • Fix of [PROBLEM] element of class "sidebar" changes posit . To avoid problems like this (call EnsureVisible) I suggest to use explicitly overflow-y and overflow-x rather than just overflow. Another thing here: remember that LI has by default display:list-item - its visible shape includes bullet so I recommend to define display:block for cases when LI is not supposed to use bullets.
  • Better handling of my internal FinalizeLibrary function (called by ::FreeLibrary). It clears also some static references to DOM elements I have. For those who are using tools like dll2lib - please verify your code.
  • Fix of compatibility with Windows 98/NT4.0.
  • Fix of compatibility with Windows CE5.0.
3.1.1.26 18-08-2006
  • Implementation of non-rectangular menus and popups in general. See /html_samples/menus/non-rectangular-menu.htm , /html_samples/tooltips/titles.htm and this screenshot: http://www.terrainformatica.com/htmlayout/images/tooltip-balloon.jpg
  • Fix of the bug in rendering /html_samples/tooltips/titles.htm, float:left/right was not propely wrapped by surrounding text.
3.1.1.25 17-08-2006
  • Implementation of stock context menus for input type="edit". These menus are customizeable - you can provide your own HTML for them, for example to translate them to different languages or change default menu item icons.
  • context-menu CSS attribute now accept two forms:
    1. context-menu: selector( menu-selector );
    2. context-menu: url( url-of-menu-html );
    use second form if you need to generate menu on the fly. You need to process HLN_LOAD_DATA for url-of-menu-html appropriately.
  • Update of HLN_LOAD_DATA structure. It has now new field: HELEMENT principal. This field contains reference of DOM element for which data was requested. For context-menus this is a reference to the element with context-menu defined.
3.1.1.24 15-08-2006
  • Update of HTMLayoutDialog API function. Parameter alignment accepts also -9..-1 range of values allowing to align dialog relative to its parent window.  See: htmlayout.h or documentation.
  • Optimization of HTMLayoutInsertElement/HTMLayoutDetachElement functions. They should work significantly faster for tables/rows/cells now.
  • Fix in slider behaviors, see: Trackbar bugs
  • Fix of NT4/Win98 compatibilities. Use of functions mentioned in Dependencies and some others are optional.
3.1.1.23 13-08-2006
New. Initial Menus implementation, see H-SMILE core. Popup and context menus (HTMLayout and Sciter engines)
New. :not CSS3 selector support. See: Negation selector specification.
Update in popup block management. If popup block is shown and is getting new dimensions during update()  window resizes accordingly. Should help to implement collapsible menus in MS Office style.
Fix of follow up on HTMLayoutGetElementHtml() and '-0' inside html
Fix of <include> bug
Fix of [BUG] cannot retrieve selected item from a dialog . Joel, thanks a lot.
3.1.1.22 05-08-2006
  • Update. <table fixedlayout> calculation algorthim was changed and time needed to show/resize fixedlayout tables significantly improved - near the order of magnitude. The price of this is that fixedlayout tables will have all rows calculated having the same height equals to the height of first non-fixed row. This limitation is not so critical for most "grid" cases though. I've added also stress sample html_samples/stress/grid-fixed-10000.htm demonstrating of what timing you should expect for loading and showing recordsets with 10,000 records. fixedlayout also allows to implement virtual grids now.
  • New. Support of IAccessible interface. Such accessibilty tools as Narrator use it for presenting UI to people with vision impairments.
  • New API function HTMLayoutTraverseUIEvent (htmlayout_dom.h)- allows you to send sinking/bubbling mouse and key events. One of possible use of this function it to automate testing of UI.
  • New API function HTMLayoutSetMediaType (htmlayout.h) - allows to change default value of media type ("screen") of window based html views. I've added method SetupMediaType into wtl_htmlayout.h - use it as an example.
  • Fix of  AnimateWindow API, and Windows NT problem.
  • Fix of Problem with STATE_SYNTHETIC issue.
3.1.1.21 30-07-2006
  • RTL fixes:
    • RTL editing in behavior:edit ( <input dir="rtl" type="text" /> ).
    • Proper handling of '(' ')' in RTL texts.
    • "text-align:left; direction:rtl" aligns text to the left now.
  • New, behavior:edit got simple undo implementation. Not perfect but at least something.
  • Fixes in <table> layout module. In particular margin:0; is not required anymore in cases like Layouting questions.
  • Fix of Odd background-color gradient issue.
  • New "secret" CSS selector :synthetic and state flag STATE_SYNTHETIC. I am marking by this flag some synthesized elements. For example: I am creating empty TDs to cover table "holes". All such synthesized elements are getting this flag. You can use this flag for your own purposes too - element is getting this value in parse time and after that engine is not touching it.
  • Public version of the engine is compiled now with Optimization for Speed rather than Optimization for Size. This increases size of the dll but improves speed too - up to 10%. (Retail build is still using Optimization for Size).
3.1.1.20 20-07-2006
3.1.1.19 19-07-2006
"Middle East build", RTL support, phase I:
  • Engine renders pure RTL texts written in Hebrew, Arabic, N'ko, Syriac, Thaana/Thana with correct word order.
  • dir=ltr/rtl HTML attribute and CSS direction attribute are recognized now by the engine for all elements.
  • direction:rtl overflowed elements shows vertical scrollbar at the left side.
  • direction:rtl list elements (ul and ol) shall show bullets on the right side.
  • direction:rtl block elements shall properly allign text on the right side.
This is an initial implementation and I expect some problems when mixed rtl/ltr text is used in the same paragraph. Let me know if you will find problems here.

I am publishng this build in hope that it will help stop somehow that brainless cauchemar happening on the Middle East now. Cradle of the Civilization, peoples with deepest history on the Earth and such ... Are we human or what?

3.1.1.18 08-07-2006
  • New. <frameset> and <frame> support ( behavior:frame-set and behavior:frame accordingly).
  • <frameset>

    • implements splitters. Supports multiple elements in the row or column.
    • supports either cols or rows attributes (but not both).
    • can be placed in any arbitrary place where block elements are acceptable. behavior:frame-set can be applied to any div alike element. Even to <td>.
    • can contain any arbitrary blocks inside (not only frames). See: html_samples/frames.

    <frame>

    • is a div alike block element.
    • close to standard HTML frame.
    • src attribute if provided will cause loading of referred document into the element. After loading the frame will contain single child - <html> element (root) of the loaded document. So you can access its DOM from the <frame> element.
    • Styles and images loaded for the document will not affect parent DOM. Reloading such document will free its resources. So if you need isolated HTML islands - here they are.
    • The frame can appear in any place where block elements are allowed (not only in <frameset>). From this point of view <frame> and <iframe> are equivalents but IFRAME is reserved for HWND based frames.

    behavior:hyperlink implemented internally now. Reason is simple - to support <a target> attribute with the frames. And you have two options with hyperlinks:

    1. If you are not going to use <frame>s you can use implementation of behavior:hyperlink from SDK - it works now and beyond.
    2. If you are going to use <frame>s then simply remove behavior_hyperlink.cpp from your project. Thus you will enable internal implementation. Internal implementation posts bubbling BEHAVIOR_EVENT/HYPERLINK_CLICK as old one.

  • New, support of border-spacing CSS attribute [description] with following differences from standard:
    • Only single value supported, border-spacing:2px 4px; will set spacing 2px in both directions.
    • border-spacing applies not only to tables but to all div alike elements. For such elements it establishes minimum margin value between children of such elements.
  • New, support of <select editable>. If dropdown select element will have editable attribute defined then its caption will have behavior:edit applied - will be editable. Thing is known as combobox in Windows.
  • Update of behavior:edit. GOT_FOCUS event selects whole text in the element.
  • Fix of table-in-scrollable-div problem, George and Oliver, thanks for report.
  • New, support of misterious WM_UNICHAR message [discussion].
  • New API functions:
    • HTMLayoutAttachEventHandlerEx - allows to assign event handler with event group subscription flags.
    • HTMLayoutWindowAttachEventHandler
    • HTMLayoutWindowDetachEventHandler - these two allow to install permanent event handler on the window. Such handler being set once will work for all documents loaded cosequently in the window. Consider it as a "surface" or "ground" permanent handler.
  • Fix of absolute positioning of children of flow:horizontal containers. [description]
  • Update of scrollbar styling. It is possible now to define width of vscrollbar and height of hscrollbar. Sample is in /css-plus/ folder.
RTL implementation was not included in the build - still have things to do there.
3.1.1.17 01-07-2006
  • Update of behavior:select. Key handling was changed according to [discussion].
  • Fix of TAB navigation handling in empty IFRAMEs.
  • Various minor layout fixes.
  • Fix of AV in fixedlayout tables [description].
  • Update. Max length of paragraphs (max number of characters paragraph can contain) was increased from number close to 10000 to 0xFFFFFFF (268435455). Please pay attention that limitation of number of <spans> paragraph can contain still exist - only 6400 first level spans per paragraph please.
  • Fixes of DOM manipulation functions related to adding cells in tables. Insertion of cells in rows is still only possible in disconnetcted rows though.
  • New behavior:scroller. Sample in html_samples/behaviors/scroller.htm. It is better to load it to get an idea.
3.1.1.16 25-06-2006
  • Fix in animation module. In some circumstances it could produce AV.
  • Update of behavior:grid. It is generating TABLE_ROW_DBL_CLICK event on double click on the row.
  • New API function: HTMLayoutSortElements, it allows to sort children of some element by sorting rule provided by application.
  • New behavior:sortable-grid in file behavior_grid.cpp. Its sample is in html_samples/grid/sortable-grid.htm
3.1.1.15 23-06-2006
  • Fix in get_value() function (in htmlayout_controls.hpp), thanks to Leon & the crew. This was causing AV in bahaviors/test-form.htm sample (click on Reset).
  • Fix WM_CHAR handling - it used to return 0 as LRESULT and bHandled == TRUE in all cases. Now it returns 0/bHandled(TRUE) only if character was really consumed. Chris, thanks.
  • Fix of HTMLayoutCloneElement for table rows. Thanks go to Zverok this time.
  • Fix in behavior:select. <options> elements having children are getting either one :expanded or :collapsed flag set while parsing. <options> without children (caption is not included here) will have both :expanded and :collapsed flags reset. You can use this fact for proper styling of tree views. <options> having no leafs should not show +/- icon. Joel, thanks.
  • Update of behavior:check and behavior:radio. They now DO_CLICK (change value) when assigned accesskey pressed.
  • New CSS feature - named style sets. Style set is a set of style definitions applied as a whole system. Notation is as:
    @set name
    {
    selector1 { ... style attributes... }
    selector2 { ... style attributes... }
    }
    There are many cases where sets are needed. The first one is:

  • New. Styleable scrollbars. Example:

    Scrollbar style definition is made by named style set and applied to the particular element by using new CSS attributes:
    • vertical-scrollbar: name-of-style-set;
    • horizontal-scrollbar: name-of-style-set;
    Please see sample of styleable scrollbar in sdk/html_samples/css-plus/scrollbar-styling.htm
3.1.1.14 20-06-2006
  • New,  support of IME - input method used in China, Japan and some other countries.
  • Fix of the problem. Rainer, danke.
  • Fix of HTMLayoutMinWidth/HTMLayoutMinHeight computation when document dimensions defined explicitly. Chris, thanks.
3.1.1.13 19-06-2006
  • New CSS attribute selector: [attr=="value"] - case insensitive string match. Given selector will match elements having attr="Value" or attr="vALUE" defined.
  • behavior:acesskeys was updated to use case insensitive string match above so now value of accesskey attribute is case insensitive: accesskey="^m" and accesskey="^M" will trigger on Ctrl-M.
  • Fix of CSS parser hanging problem. Thanks, Alex.
  • New SDK sample: skin - an example of window styling using solely HTML/CSS/behaviors:
3.1.1.12 17-06-2006
  • Fix of the problem loading images from styles referred by <link>. [description]
  • One more fix of @media rule parsing [description]
  • Update of behavior:accesskeys. Now this behavior does deep search including content of possible <iframe>s.  I also have updated Master CSS with the line: html { behavior:accesskeys; } so all documents will have this behavior by default.
  • New behavior:decimal and behavior:currency and correspondent <input type="decimal" /> and <input type="currency" />. Details are here. See: html_samples/forms/form.htm for example.
  • New API functions HTMLayoutIsElementVisible and HTMLayoutIsElementEnabled - detectors of deep visibility and enabled state.
3.1.1.11 15-06-2006
  • More fixes in CSS parser, in particular problem of parsing @media section.
  • Fix in behavior:hyperlink - now it clicks only on left mouse button.
  • Update of behavior:tabs - it generates now bubbling notifications ELEMENT_EXPANDED/COLLAPSED on tab switch.
  • Fix in behavior:button. It clciks now on ENTER too.
  • Fix of HTMLayoutHttpRequest function - POST requests.
  • New behavior:form - support of submit / reset buttons. This is a template behavior - you should override on_data_arrived to do something usefull. Currently it popups HTML dialog with server answer. See: html_samples/behaviors/form-test.htm
  • browse.exe updated. It popups now debugging console window in case of CSS parsing errors.
Mobile version was updated too in this build.
3.1.1.10 11-06-2006
  • Fix of problem in CSS parser causing parser to hang up while loading document.
  • behavior:grid fix.
  • New. C++ comments in CSS.
    Being caught once again writing C++ comments ( from // and up to the end of the string ) in CSS files I decided to implement them in CSS parser. Please be aware - they are non-standard. But convenient.
    Probably it's time to use name  CSS++ for what is used in HTMLayout?
  • New behavior:path. One more drawing behavior sample. This behavior:path renders content of the element with DT_PATH_ELLIPSIS style. Sample is in sdk/html_samples/behaviors/path-behavior.htm.
  • Added '/' and '\' characters to the list of symbols where text can wrap.
  • New API function HTMLayoutHttpRequest. It allows to send HTTP GET/POST requests with collection of parameters. ATTN: not tested yet at all.
3.1.1.9 10-06-2006
  • CSS parser was completely redesigned in this build. It is more stable and maintainable and fixes this bug among other things. This version also allowed to implement:
  • New API function HTMLayoutSetupDebugOutput. This function allows to setup debug output stream for HTMLayout. When it will be set HTMLayout will report there parsing problems (only CSS parsing for a while).
    See file browse.cpp, it has following declaration:
  • #ifdef _DEBUG
     // enable debug output
    htmlayout::debug_output _debug_stream;
    #endif
    This installs debug output stream for HTMLayout. This stream uses Visual Studio output panel for showing debug messages. Pretty convenient - I immediately found one CSS bug in file /behaviors/more_tabs.htm sample.
  • Fix of css selector specificity calculation for pseudo-classes nth-child and nth-last-child.
Gentlemen, this is pretty significant change, so please test first your projects in debug mode. Praemonitus - praemunitus.
3.1.1.8 06-06-2006
  • Update of behavior:grid (behavior_grid.cpp) - made it compileable by VC 2003.
  • Fix of behavior:textarea and behavior:htmlarea - now they correctly handle readonly and disable attributes and state flags. Rainer, your case should be fixed now, thanks.
  • Update of behavior:textarea, it supports maxlength attribute now. See Behaviors, Event Handlers and builtin HTML Controls
3.1.1.7a 05-06-2006
  • Update of behavior_grid.cpp. Now it supports multiple row selection. Thanks to Andrey Kubyshev for the updates. html_samples/grid/scrollable_grid.cpp has been updated too. Use CSS to style :checked rows.
  • Added CSS support of :anchor state flag (STATE_ANCHOR). Typically used to mark anchor element in multiple selection lists.
3.1.1.7 02-06-2006
  • Fix <input type=button> rendering when it is in disabled sate.
  • Fix in behavior_hyperlink.cpp, on_focus return TRUE now.
  • Fix, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_SYSCHAR handling so now is possible to handle Alt-A for example.
  • New, engine interprets characters -,?,!, ], ) as wordbreaks now [ source ].
  • <textarea> is in feature complete state.
  • Fix of CSS nth-child selector handling, now it correctly selects first 3 children by :nth-child(-n+3).
  • Other fixes in CSS parser.
3.1.1.6 01-06-2006
  • Fix of focus event propagation. GOT_FOCUS/LOST_FOCUS | EVENT_SINKING is sent now to the element itself [problem definition].
  • Fix of bgcolor attribute parsing - it accepts color names in upper case too now. Mark, this is yours, thanks.
  • Fix of programmatic insertion of <options> element [problem definition].
  • HTMLayout_Use/UnuseElement is thread safe now.
  • New behavior:scroll-bar and <input/widget type="vscrollbar"> / <input/widget type="hscrollbar">. Useful for creation of virtual lists or grids. See html_samples/forms/scrollbar.html
3.1.1.5 30-05-2006
  • Redesign of <table fixedlayout>. Table fixed layout principles:
    • All rows will have height of first non-fixed row.
    • Columns will have widths determined by width of cells in fixed rows and in first non-fixed row. Rule is first-definition-come-first-used.
    • All cells in fixed table behave as if overflow:hidden set to them.
    • Main goal of the fixedlayout is to support behavior:grid alike use cases. fixedlayout significantly improves speed of layout (e.g. due to resizing) of tables having more than 5.000 of rows or so.

      Two **-fixed-**.htm files were added into html_samples/stress/ folder.

  • WM_ERASEBKGND - fix of fix :) For child HTMLayout windows it just returns TRUE as it was before.
3.1.1.4 29-05-2006
  • Fix of problem with table vertical adjustment.
  • Fix of <table fixedrows> problems (AV and row resizing) described here. Now if there is overflow-y set to the table its rows are not expanded to fit the whole table height.

Updated Sciter to version 3.1.1.4. Tests like dynamic DOM manipulation are more convenient to write using its scripting.
3.1.1.3 28-05-2006
  • Fix in HTMLayoutDialog function. [problem definition]
  • Fix of AV in call of HTMLayoutInsertElement( EMPTY ROW);  [problem defintion]
  • New behavior:accesskeys. Support of accesskey html attribute, format:
    • "^keyname" - press of CTRL + keyname;
    • "!keyname" - just keyname press (without any modifier);
    • "keyname" - press of ALT + keyname;
    See source in /include/behaviors/behavior_accesskeys.cpp and /html_samples/behaviors/accesskeys.htm
  • New behavior:actions. It is pure demo behavior. Now it allows to declare some actions directly in HTML. In fact this behavior should use some interpretter (see question on forum).
3.1.1.2 27-05-2006
  • Fix of parsing of erroneous html tables. Previously parsing of <table>hi!</table> was skipping "hi!" at all. Now parser is trying to do its best to place such erroneous content somewhere in table structure. Mark, this is yours, thanks.
  • Fix in HTMLayoutCloneElement. [problem definition]
  • Fix of empty <option></option> tag rendering. [problem definition]. Comment: to calculate height of <select size=4> element (its height/min-intrinsic) uses first option' height for calculations. Empty <option> has 0 height so total height evaluated to zero too.
  • Fix of latent bug may cause segmentation fault while measuring some documents. Thanks, Chris!
  • Fix of vertical alignment calculation of blocks containing float elements for typical use cases. Use of floating elements and elements having vertical flex'es (%%) in the same container is still a gray area - logical conflicts. Anatoly, this is yours, thanks.
  • Fix of rendering when htmlayout is attached to frame window (not a child window). Moving other windows over such window used to create artifacts - non-painted areas. This can be observed in Sciter now.
  • Fix of repainting of bulleted lists. Anatoly, this is also yours.

Mobile version: it was also updated in this build. I switched back to eVC4 (couple of last builds were made using VC2005). Let me know if you will find any problems with this.
3.1.1.1 24-05-2006
Updates of SDK source files:
  • htmlayout_dailog.hpp:
    • Made it compileable under VS 2003.
    • Use of files from /xool/ folder was eliminated. The whole /xool/ folder has gone from SDK.
    • new method group htmlayout::dialog::input(html, named_values) - allows to show input dialog and set/get input values in single function call. Forget about DDX.
  • browse sample: added new menu item Dialogs/Input Dialog to demonstrate new dialog::input methods.
  • htmlayout_aux.h file got new helper classes a2w, w2a, utf2w and w2utf.
HTMLayout.dll has no new features or major fixes in this build.
  Version 3.1.1.1 of HTMLayout SDK is also available here: HTMLayoutSDK.3.1.1.1 as a separate distribution.
3.1.1.0 23-05-2006
  • Final fixes in printing module, in particular bug "same line of text can appear as last and first line on two consequent pages" was fixed.
  • New API function: HTMLayoutDialog. It allows to show HTML based dialogs. See file (also new): htmlayout_dialog.hpp
3.1.0.72 19-05-2006
  • More fixes in printing module (pagination). In particular problem mentioned here.
  • Fix of <img width="nn">. It used to be impossible to set width of the image less than its intrinsic width.
  • New <table fixedlayout > attribute. Works close to rules of table-layout:fixed CSS attribute. Remeasures table faster. Consider this as an experimental feature for a while.
3.1.0.71 18-05-2006
  • Fix in printing module (pagination). String between pages get lost on output.
3.1.0.70 17-05-2006
  • Fix. Support of SOH_REPLACE, SOH_INSERT_BEFORE, SOH_INSERT_AFTER operations in HTMLayoutSetElementHtml function.
  • Fix of parsing of @import url(...) statements in CSS. Thanks Heinrich.
3.1.0.69 16-05-2006
  • New API function HTMLayoutCloneElement.
  • Added support of SOH_REPLACE, SOH_INSERT_BEFORE, SOH_INSERT_AFTER operations in HTMLayoutSetElementHtml function.
  • Fix of the bug: problem of applying behavior:edit to block element .
  • sdk/read.me file was updated according to the License.
These features should not affect any existing code. Probably this is last intermediate build before 3.1.1.0.
3.1.0.68 13-05-2006
  • Fix in Window Classis theme images. Mixed state of checkbox will be rendered properly now.
  • Fix of word wrapping bug. Thanks, Charles.
  • Fixes in HTMLayoutGetStyleAttribute() function. Now it returns values of all supported "terminal" CSS attributes. Pay attention that shortcut attributes like background or font are not supported by design.
  • Fixes in HTMLayout CSS support map documentation. Now it reflects currently supported set in full.
    ATTN: attribute icon-cursor was renamed into foreground-image-cursor. Sorry for any inconveniences.
3.1.0.67 08-05-2006
ATTN: License terms of HTMLayout has been changed. Public version of HTMLayout is free of charge for commercial and non-commercial use. Guarantied Technical Support is a subject of separate license/agreement.
3.1.0.66 07-05-2006
3.1.0.65 04-05-2006
  • Fix of rendering issue: http://terrainformatica.com/bb/viewtopic.php?t=155 . Thanks ayk. Chris, this should solve also your problem with rendering.
  • Fix of <option selected> in dropdown lists. Chris, this is also yours.
  • Fix of animation in remotely downloaded GIFs. Anatoliy, this is for you from sunny Vancouver.
3.1.0.64 28-04-2006
3.1.0.63 10-04-2006
3.1.0.62 08-04-2006
  • Some minor fixes in position:relative/absolute/fixed.
    New sample: sdk/html_samples/abs/menus.htm - pure CSS menus, see: screenshot.
3.1.0.61 06-04-2006
  • Fix of <input type="radio"> behavior.
  • Polishing of position:relative/absolute/fixed stuff.
  • Fix of html { overflow:hidden } rendering. Chris, this is yours, thanks.
3.1.0.60 05-04-2006
  • Fixes of bugs introduced in previous build. Joel and Chris, thanks.
  • New, support of stretchable images with alpha channel for WinNT and Win98.
3.1.0.59 04-04-2006
  • New: position:relative/absolute/fixed initial implementation. Added folder html_samples/abs/*.htm all positioning samples will go there.
  • Fixed bug in SetElementState. This fix increases responsiveness of UI events. Added sdk/html_samples/stress/grid-1000.htm as a stress test (it is not that stressful now).
  • Fix: bug with multiple event handlers assignments. Victor, thanks.
3.1.0.58 01-04-2006
  • Fix of line-height CSS attribute interpretation.
  • New: automatic tooltip generation for elements having text-overflow:ellipsis (not perfect but works),  text-overflow:ellipsis works better now in cells of tables (fix).
  • New: event codes in BEHAVIOR_EVENTS:  POPUP_REQUEST, POPUP_READY, POPUP_DISMISSED. They notify host about lifecycle of popup element.
  • Fix of scrollbar appearance when HTMLayoutSetMode( m_hWnd, HLM_SHOW_SELECTION ); used.
3.1.0.57 30-03-2006
  • Fix of expandable bitmap drawing. Some areas can appear black.
  • Fix in behavior_command.cpp. Element shall receive both MOUSE_DOWN and MOUSE_UP to generate notification message.
  • New API function: HTMLayoutSelectParent it allows to 1) find nearest parent by given CSS selector and 2) test if particular element matches given CSS selector.
3.1.0.56 30-03-2006 Fix of the issue introduced in build #55. This build is a candidate for version 3.1.1.0 (stable milestone)
3.1.0.55 29-03-2006
  • Better support of tab navigation among child controls for the cases when one HTMLayout is hosting another HTMLayout(s). See sdk/html_samples/generic/iframe.htm. wtl_htmlayouthost.h has been updated to handle src attribute in <iframe>.
  • Fix of visual state of <option select> - just updated master CSS.
  • Fix of tab out from dropdown select.
  • Critical. Fix of AV while parsing <td background=url>. Thanks Rainer.
  • Implementation of support of display:none for <tr>s. Zverok, today's special, for you.
3.1.0.54 27-03-2006
  • Fix of the issue with tree-view-checks.htm introduced in build #53. This is not only about particular tree-view-checks.htm but about all cases when multiple instances of HTMLayout used in the same application (process).
  • Fix of SELF_RELATIVE issue.
3.1.0.53 26-03-2006
  • Fix of behavior:command issue.
  • Fix of popup placement on dual monitor systems.
  • Improvement. Animations works better. They are using multimedia timers now. But please read this.
  • Fix of flex calculation of width:100%% of inline elements.
  • Fix of element tr.append(td); explained here. Zverok, could you verify it?
  • New back/foreground-image-transformation: color-schema(color) . This is not complete yet. See: sdk/html_samples/css-plus/color-transform.htm for an idea.
3.1.0.52 23-03-2006
  • Fix of HTMLayoutGetElementHtml / dom::element::get_html. On empty elements it used to return wrong HTML. Now it correctly returns empty string.
  • Fix of (yet another attempt to fix in fact) "missing horizontal scrollbar" issue.
3.1.0.51 21-03-2006
  • Fixes of http://terrainformatica.com/bb/viewtopic.php?t=27
  • New behavior - addin behavior for select - select-checkmark - tree-view with check marks. See: htmlsamples/forms/tree-view-checks.htm and behavior_select_checkmark.cpp.
  • htmlayout_behavior.hpp has been updated. New set of event handler methods - better scalable.
3.1.0.50 16-03-2006
3.1.0.49 13-03-2006
  • Fixes in HTML parser. Joel thanks.
  • New API function:
    HLDOM_RESULT HLAPI HTMLayoutShowPopupAt(HELEMENT hePopup, POINT pos, BOOL animate)
    It allows to show any block element at arbitrary position on the screen. Positioning is not tested - Andrey (Borodaev) this is for you, could you verify it and let me know?
  • ATTN! HTMLayoutSetState( STATE_CHECKED ), behavior was extended. This method being applied to <option> in <select type="select-dropdown"> will set also caption portion. In single select <select type="select"> will reset current item too.
    Therefore to set value of <select> it is enough to call HTMLayoutSetState( heOption, STATE_CHECKED ) to correspondent option element. Keith, Joel and George please pay attention.
    htmlayout_controls.hpp was updated correspondingly.
  • BTW: forum was moved to new location, please update your links.
3.1.0.48 09-03-2006
  • Fixes of problems with text rendering (wrapping) and interpretation of <br> and <br/>.
  • New theme images:
    • theme:v-progress-back, theme:v-progress-chunk,
    • theme:h-progress-back, theme:h-progress-chunk
      see: sdk/html_samples/css-plus/theme-images.htm
3.1.0.47 08-03-2006
  • Fixes of HTML parser focused on handling "dirty html" - erroneous html or not an html at all.
  • Fixes in printing module - pagination of big objects. Bob, these all yours, thanks.
3.1.0.46 07-03-2006
  • New, scrollable tables . To define scrollable table it is enough to declare in CSS overflow:auto for some table.
    Attribute fixedrows=n defines number of fixed rows (column headers) for the table.
  • New behavior:grid in /include/behaviors/behavior_grid.cpp - simple scrollable recordset view.
  • Fix (rollback in fact) of table layout changes made in 3.1.0.45.
  • New. Initial implementation of text-overflow:ellipsis attribute. Consider it as experimental (sometimes it does not show ellipsis when needed).
3.1.0.45 01-03-2006
  • Critical fixes of 1, 2
  • Fix in table layout algorithm.
  • New API function HTMLayoutRequestElementData allows to request data for particular DOM element. Behavior attached to the element can handle arrived data. See HANDLE_DATA_ARRIVED entries in htmlayout_behavior.hpp.
    Default implementation replaces content of the element by arrived HTML data.
    See: sdk/html_samples/sort-of-frames folder for samples.
3.1.0.44 28-02-2006
  • :animating, :focusable read-only state flags and pseudo classes.
  • Fix of text selection bug.
  • Added new sample html_samples/forms/custom-dropdown-selects.htm.
3.1.0.43 25-02-2006
  • Fixes: 1, 2, 3
3.1.0.42 22-02-2006
  • New. Support of <input type="password">
  • Tuning and optimization of CSS engine. Style resolving should work faster now. This is about computational complexity of CSS selectors.
  • Fix of behavior:select, it posts now SELECT_SELECTION_CHANGED properly when keyboard is used for navigation.
  • Fix of text selection mode rendering. Now HTMLayoutSetMode API function just sets behavior:htmlarea to the body element of the document.
3.1.0.41 17-02-2006
3.1.0.40 13-02-2006
  • Fix in single-element/multiple-behaviors handling.
  • More fixes of animated GIFs rendering.
  • behavior:editor, still under construction.
3.1.0.39 11-02-2006
  • Fix of float:right element positioning. Previous implemenation placed element with one pixel gap from container right border.
  • Fix of animated GIF rendering. Support of Netscape GIF extensions (number of iterations) was added in this build.
  • Update of behavior:edit (single-line editor), it can be attached now to, for example, table cell. So text content of such cell will be editable.
3.1.0.38 09-02-2006
This build has pretty
substantial changes in
HTML parser code.
Please verify first
before incorporating it.
  • New behavior:editor is an implementation of WYSIWYG editor (both: plain text and html). This behavior is not complete yet. Just basic editing functions implemented: typing, deleting and undo/redo.
    behavior:editor in HTMLayout plays pretty much the same role as a contenteditable attribute in IE but slightly differently.
    The plan is to have also set of public "buddy" behaviors - standard editing toolbar with those famous B, I, U, etc. buttons defined of course by HTML/CSS.
  • New API functions HTMLayoutGet/SetElementInnerText16. They are equivalents of HTMLayoutGet/SetElementInnerText but accept UTF16 (LPWSTR on Windows) strings.
  • Fix of <select role=option> feature. If select contains more than 10 elements it was rendering content with errors.
  • Fix of dynamic rendering of flow:h-flow/v-flow layouts.
  • Fix of empty paragraphs (<p></p>) parsing. Now they appear in the DOM. And before HTMLayout was just ignoring them.
3.1.0.37 25-01-2006
  • Fix of text-align:justify, now it is a bit more accurate. George, thanks.
  • Fix of <nobr> issue.
  • New. behavior:select now allows to to use any element having role="option" attribute defined as an <option>. See: html_samples/forms/table-select.htm
  • New API function HTMPrintGetRootElement. It allows to get access to the DOM in print engine.
    Note: you may use now print API as HTML parser producing DOM. Rainer, this is for you.
  • New sample: html_samples/css-plus/table-of-content.htm. Take a look on it and you will get an idea.
3.1.0.36 21-01-2006
  • Fix of AV while parsing empty select element.
  • Fix of keyboard navigation in text selection mode.
  • New CSS pseudo-class :incomplete and correspondent state flag STATE_INCOMPLETE. Element is in incomplete state when it has back/fore/bullet image requested but not delivered yet.
  • SDK has been splitted into two separate HTMLayoutSDK and HTMLayoutMobileSDK. Added Q&A sections in the online documentation.
3.1.0.35 17-01-2006
  • Fix of text-decoration issue II . I think that now it is implemented as it should be.
  • Fix of <u> element handling - its definition was missed in intrinsic style table.
3.1.0.34 16-01-2006
  • Fix of text-decoration issue
  • Fix of scrollbar issue .
  • New behavior editable-list also known as pick-list. User can modify items in <select> element. It is not complete as functionality is application specific - consider it as mockup. Files: sdk/include/behaviors/behavior_editable_select.cpp and demo in  sdk/html_samples/behaviors/editable-select.htm
3.1.0.33 07-01-2006
  • Fix of HTMLayoutSetElementHtml function. It now correctly handles set_html for paragraphs and tables. Types of content shall match type of element. Thanks, Heinrich.
  • Good examples:
    • div.set_html( "<p>one</p><p>two</p>" );
    • p.set_html( "one<span>two</span>three");
    • table.set_html( "<tr><td>one</td><td>two</td></tr>");
    Bad examples:
    • p.set_html( "<p>one</p><p>two</p>"); // wrong, paragraph cannot contain block elements.
    • table.set_html( "<p>one</p><p>two</p>"); // wrong, table cannot contain paragraphs out of cells.
  • Fix of text-decoration CSS attribute handling. It was implemented as an inheritable CSS atribute but it is not. Now it works properly. Thanks, Brian.
  • Update. HTMLayout now supports <text> element. It is exactly <p> but with margins set to zero by default - <text> is a <p style="margin:0">. So <text> as <p> is a block element.
  • Update. New sample in SDK: mfc/mfc_browse. It contains class CLayoutView : public CWnd - simple MFC wrapper for htmlayout.
3.1.0.32 05-01-2006
  • Update of intrinsic behavior:select (<select> and <widget type="select"> ). It now supports three modes:
    • <select> - single select, standard LISTBOX mode.
    • <select multiple> - standard multiple select LISTBOX mode. CTRL+click - select/deselect item. SHIFT+arrows - select/deselect ranges. Now it does not show checkbox icons. See master style sheet where it is defined.
    • <select multiple="checks"> - multiple select mode. Only in this mode it shows checkbox icons. Click on check box icon - set/reset check mark. Click on item caption - makes item current. Up/Down Arrows- set currrent item. SHIFT+arrows - set/reset checkmarks in ranges. Space - set/reset checkmark on current item.
  • Update. CSS attribute behavior now supports multiple values:
    #mybutton
    {  
    behavior: button some-other-behavior;
    }

    behavior names in the list must be white space separated.
  • New behavior in sdk/include/behaviors/ named select-buddy.  It allows to declare "Select All" and "Clear All" buddy buttons for <select>s and to define item chooser based on two selects. Just load /html_samples/behaviors/select_buddy.htm in browse.exe to get an idea.
  • This behavior also demonstrates concept of grouping behaviors. Such behaviors orginize elements in some logical groups of controls - compound controls.
  • Fix. Default styles for <s>, <strike> and <del> were added to intrinsic style table. Thanks, Brian.
  • Fix. visibility:hidden CSS attribute works now. Thanks, Chris.
  • Removed smooth scrolling by MOUSE_WHEEL. Unexpected results, in accelerated mode especially.
3.1.0.31 29-12-2005
  • File htmlayout.h was updated. Renamed field reserved1 in notification structures NMHL_LOAD_DATA, NMHL_DATA_LOADED to dataType (see: enum HTMLayoutResourceType). And enum HTMLayoutResourceType got new value: CURSOR_DATA - HTMLayout uses it for requesting cursor data (only CUR and ANI formats supported so far).
  • Fix of CSS parsing of CSS3 selectors like [attr^="substring"].
  • Fix of scrolling issues introduced in 3.1.0.30.
  • Fix of http://www.terrainformatica.com/forum/entry.php?show=9844 . Thanks Anatoly.
HTMLayout.dll packaged as http://terrainformatica.com/htmlayout/HTMLayoutDLL.zip . It will be updated synchronously with main SDK distribution.
3.1.0.30 23-12-2005
  • Implementation of custom and animated cursors. Now in style sheets you can define cursor:url(something.cur) or cursor:url(something.ani).
  • Scrolling was redesigned to support any scrollable elements. Now even elements with transparent and fixed backgrounds are smoothly scrollable.   
3.1.0.29 22-12-2005
  • Implementation of PageDown/Up, Down/Up and Home/End functions for scrollable elements. Scrollable element sends scroll events upon receiving VK_NEXT, VK_RIGHT, etc.
    ATTN: Scrollable block must have focus to be scrollable by keyboard. If it is not a control then you may use tabindex=0 HTML attribute to make it focusable.
  • Fix of "root element is not mouse wheel scrollable". Dennis, thanks.
  • Update of behavior_hyperlink.cpp. Hyperlink now a) posts clicks (was sending them before) and b) uses heSource parameter in post_event.
3.1.0.28 22-12-2005
  • Fix of HTMLayoutSendEvent. And parameters were renamed:
    HTMLayoutSendEvent( HELEMENT he, UINT appEventCode, HELEMENT heSource, UINT reason, /*out*/ BOOL* handled)
    Here he is a target element. Event will be sent to it (with sinking/bubbling) and heSource is an optional parameter - source of the event or element causing the event.
  • New API function: HTMLayoutPostEvent (and dom::element::post_event) - asynchronous send. Now HTMLayout posts secondary(logical) events like BUTTON_CLICK, EDIT_VALUE_CHANGED, SELECT_SELECTION_CHANGED and SELECT_STATE_CHANGED.  
  • New API function: HTMLayoutGetFocusElement. Returns current focus element.
3.1.0.27 21-12-2005 Smooth scrolling implementation for elements other than root. If element has solid and non-fixed (to the view) background it will be scrolled smoothly by scrollbar and mouse wheel.
3.1.0.26 17-12-2005
  • Fix of HTMLayoutClassNameW. Second invocation of this function was causing message box "Unable to register class...".
  • Fix of various issues related to WM_SETFOCUS handling.
3.1.0.25 14-12-2005
  • Implementation of dynamic updates of padding and border CSS attributes while applying styles  in :hover and :active state. Master style sheet was updated for buttons. Now button in :active state shifts its content left and bottom by one pixel. In active state paddings are set to different values:
    • button { padding:4px 8px; }
    • button:active { padding:5px 7px 3px 9px; }
  • Correction. Right mouse click is also causing set focus event now.
  • Documentation has been updated. Started http://www.terrainformatica.com/htmlayout/behaviors.whtm document.
  • Mobile version is now compiled by using VC++ 2005 to support Windows Mobile 5.0.
3.1.0.24 13-12-2005
  • Fix of transition:blend rendering. Discovered when tried to apply this transition to tab buttons in html_samples/forms/tabs.htm
  • Fix of WM_SETFOCUS handling under MFC causing GPF in some circumstances.
  • Fix of problems in set_html( ... , SIH_APPEND_AFTER_LAST ) introduced in one of the latest builds. Alexander, thanks.
  • Correction of disabled attribute and :disabled state flag interpretation. Now if some element is placed in container having disabled attribute defined or element by itself has such attributes then it is treated as disabled. Such disabled elements and their behaviors will not receive focus, mouse and keyboard events. See html_samples/forms/form.htm for an example.
    ATTN: this also apply to hyperlinks.
  • By multiple requests TAB and SHIFT-TAB implemented as closed cycle. TAB from last element will move focus on first focusable. Potential problem here: if you have htmlayout window and other controls on the form they will not be tab traversible as htmlayout will cycle tab inside. Probably htmlayout needs additional flag to switch this. Let me know.
  • Correction of MOUSE_UP handling by root element. Now default processing of right click (MOUSE_UP/PROP_BUTTON) happens only after all custom behaviors and event_handlers.
3.1.0.23 12-12-2005
  • Fix of <img align> attribute interpretation. Thanks, Joel.
  • Correction of set_select_value function - now it correctly sets caption of dropdown select. Also mouse click on caption area of the select drops down popup window (drops down popup - not bad, eh?) Dennis/Mike thanks.
  • Correction of reaction on WM_SETFOCUS message. htmlayout tries to restore previously saved focus when it gets WM_SETFOCUS.
3.1.0.22 11-12-2005
New API function HTMLayoutCallBehaviorMethod. As name states it allows to call behavior methods. Currently behavior:text and behavior:number support methods like get/set_text, get/set selection. Custom behaviors can also use this mechanism. If some element has several behaviors attached then all of them will be called until someone will not return true (processed).
For an exampe see implementation of dom::editbox class in htmlayout_dom.hpp. browse.exe also got few new related items under Tests menu.
  • HTMLayoutGetElementHtml was fixed. Now it returns correctly content of elements added in runtime through Create/InsertElement.
  • Context menu normalization. If element/behavior does not provide any items ther it will not appear. In this case you will receive WM_CONTEXTMENU in WndProc. Keith, Thanks.
3.1.0.21 06-12-2005
Support of horizontal sliding animation. See animation/h-sliding-bar.htm
  • Fix of GPF when CSS contains behavior:none
  • MFC compatibility issues related to popup windows. Thanks to Joel for test case.
  • WM_SETFOCUS handling fix.
  • Proper handling of STATE_DISABLED in controls.
3.1.0.20 03-12-2005 SDK distribution contains now Mobile version too.
3.1.0.20 03-12-2005
  • Fix of HTMLayoutSetCSS function.
  • Fix of the problem of rendering of some animated gif formats.
  • New API function: HTMLayoutDataReadyAsync.  
3.1.0.19 01-12-2005
  • Fix of "Character insertion in text field shows non-printable characters". Alexander, thanks.
  • Fix of "Erroneous paragraph height calculation when it contains inline-blocks". Joel, it is yours.
  • Fix of tooltip problems introduced in 3.1.0.18.
3.1.0.18 01-12-2005
Animated GIFs implementation. Image animation is a part of transition effects engine and is driven by transition attribute. See /html_samples/goodies/gifs.htm for how to start/stop image animations. There is also sample of animated images on popup windows :)
  • Fix of unicode class registration in HTMLayoutClassNameW(). It should work now as designed.
  • Fix of PrintEx engine, it properly shows pages now and used to show only first one.
3.1.0.17 26-11-2005
  • Fix of GDI resource leak under Win98. GDIUsage utility from MSDN was proven to be very helpful in solving this problem. Links are GDIUsage98 and GDIUsageNT . Problem with animations on Win98 was related to this. Keith, thanks, this is yours.
  • Fix of HTMLayoutSetElementState( STATE_FOCUS ). Use this to set input focus on element.
3.1.0.16 22-11-2005
  • Fix of <option select> issue. Now existence of select attribute properly translates into value of :checked flag. Dennis, this is yours.
  • set_values in htmlayout_controls.hpp implementation + fixes and add-ons from Joel. htmlayout_value.hpp was also updated. Added new item into browse.exe/Tests menu.
  • Fix of number editor intrinsic behavior. Spin buttons and set_text functions in particular.
  • Fix: working with tables and setting “colspan” with “-1” will cause HL to lockup.
  • Fix: transitions using blend effect will not update to the normal state image if a user quickly clicks on multiple buttons.  Usually the button will remain in the “focused:active” state.
  • Fix: reloading a page while the mouse is hovering over an element with a blend transition behavior will causing HL to crash. Note that the page reload is done while the transition is still running.
New API functions:
  • HTMLayoutSetMasterCSS - set default master style sheet. This is is default style common for all HL instances of the process.
  • HTMLayoutSetCSS - reset styles of current loaded document from new source.
Last two functions are not verified yet. I would like all interested parties to verify them. Thanks in advance.
3.1.0.15 15-11-2005
New:
  • HTMLayoutSendEvent API function and dom::element::send_event method. It allows to send event using SINKING/BUBBLING builtin mechanism. Any element (event_handler to be precise)  in child/parent chain is able to handle it in on_event "port". behavior_hyperlink.cpp was updated to support this and as a demo of the approach.
  • <option> element can support now any arbitrary markup - it used to support only text and inline blocks. Not anymore. See html_samples/stress/select-with-1000-tables.htm - <select> element with 1000 <option>s where each option contains <table>. Joel, this is yours.
Fixes:
  • Old problem with scrollbars has been fixed now I hope. Dennis, this is yours.
  • Scrolling of big documents had delays between action and rendering. Fixed. George, thanks for pinging me :)
I left Win98 animations problems for the next week - will be busy doing Windows Mobile port. Hope to have it next Monday.
3.1.0.14 13-11-2005
Finished event_handler/behavior implementation:
  • New API functions HTMLayoutAttach/DetachEventHandler. They allow to attach event_handler to any element in the DOM. Element can have multiple event_handlers. And behavior is a named event_handler assigned through CSS.
  • Event handlers are capable to catch also synthetic (logical, secondary) events from intrinsic behaviors like BUTTON_CLICK, NODE_COLLAPSE, etc.
  • Browse.exe sample has been updated. HtmlBar.h file in particular. It shows how to setup your own event handler and attach it to the root node (in this case). Also it shows how to handle synthetic events and catch other types of events (e.g. VK_RETURN press in child controls).

flow:v-flow implementation - similar to h-flow but flow is in different direction.

Fixes:

  • Windows 98 compatibility fixes. Popup windows in particular. Animations on w98 are not good due too big granularity of system timer.  Will try to do somenthing here.
  • theme support for tabs on Windows 98 and Windows Classic theme. Not perfect but close to look-n-feel of the tabs on XP (e.g. light background).
  • Fix of mouse click / popup windows bug.
Bugs left for the next build: scrollbars sometimes not shown properly and drawing of some expandable images on Win98 needs to be fixed.
3.1.0.13 10-11-2005
Url is still : http://terrainformatica.com/htmlayout/PandoraHTMLayoutSDK.zip At the end of this week I am planning to move Pandora builds to mainstream distribution.
3.1.0.12 07-11-2005
  • New: now behaviors can draw and handle timers.
  • Cool stuff:) There is a new behavior in behavior_clock.cpp - real time clock implementation.
    See: screenshot #1 and screenshot #2.  file is html_samples/behaviors/live-clock.htm.
  • updated: HTMLayoutGetElementLocation() has been updated. (But its binary interface was not changed). It allows now to get margin, border, etc. boxes of the element. See: htmlayout_dom.h. Alexander, thanks, it is yours.
  • new: function HTMLayoutSetTimer(HELEMENT, UINT milliseconds)  - allows to set/remove timer for the element.
  • new/old: function HTMLayoutSetElementInnerText(). It was declared but not implemented. Keith, thanks.
3.1.0.11 06-11-2005
  • transition:slide has been implemented. See /html_samples/animation/sliding-bar.htm and  /html_samples/animation/sliding-list.htm. Thanks to Evan and the whole team for motivation.
  • new behavior:expandable-list. It expands current item (only one) from the list. If you will add transition:slide process of expanding/collapsing will be animated. See /include/behaviors/expandable_list.cpp
  • Fix of popup windows hiding and new API function HTMLayoutHidePopup because of that- sorry.
  • Fix of memory leak in transition:blend
3.1.0.10 02-11-2005
  • HTMLayout is getting animation. See /html_samples/animation/blend.htm and screenshots.
    To define animation effect use transition css attribute.
  • All buttons in master css have transition:blend by default. See: master_ss.css
  • I have updated HTMLayout CSS support map . transition attribute and additional pseudo-classes.
3.1.0.9 31-10-2005
3.1.0.8 30-10-2005

Url : http://terrainformatica.com/htmlayout/PandoraHTMLayoutSDK.zip

New kids in the block:

  • static dom::element::create(tagname,...)  / HTMLayoutCreateElement - creates new element;
  • dom::element::insert(element, index) / HTMLayoutInsertElement - insert element into container;
  • dom::element::detach() / HTMLayoutDetachElement - takes element out from its container (and from the DOM tree).

These methods are fast and useful for dynamic updates e.g. of list controls. browse.exe sample got new test items in menu demonstrating insertion/removal of items in lists. To test them load /html_samples/forms/selects.htm

Updated implementation of themes for versions prior XP (or Windows Classic theme):

  • Basic controls now use primordial Ctl3D look on these OS'es. Don't know good it or bad - seems like people get used to this look. Who wants them flat - draw/define your own.
  • More theme images implemented for "Theme95": spin buttons (input type=number) and tree-view-glyphs for trees.
  • Still don't know of how to draw tabs in Theme95 which will match ThemeXP. Standard tabs in W2K remind me turret of WWII German Tiger Panzer . I don't like them to be short. Need to design something else. Ideas are welcome.

Fixed htmlayout_values.hpp - due to new state flags and selectors (:checked, ...).

Tomorrow: notification from internal behaviors - button clicks, value changes, etc. and set_values implementation.
Upcomming week: frames and state transition animation effects - blending, collapsing/expanding.
3.1.0.7 29-10-2005
Nothing spectacular in this build, just bug fixes and optimization:
  • Added two new files into /html_samples/stress/. table-10000.htm and select-10000.htm. Table and select with 10000 rows/options. HTMLayout handles tables definitely better than other engines. Keeping in mind that HTMLayout's <select> is fully styleable DIV with paragraphs - options, then it is also not bad.
  • Fix: GPF on click on <a href="">something</a> when it was inserted dynamicly using set_html.
  • Fix: <PRE> does not always preserve whitespaces.
  • Fix: some images loaded using http: protocol are not shown.
  • Fix: calculation of borders given in metric units was wrong.
  • htmlayout_value.hpp was fixed to be VC7 compileable.

New selectors and correspondent element state flags:  :checked, :disabled, :expanded, :current. These were added during optimization from CSS3 set. Behaviors are responsible for setting them. I'll expalin them in separate document tomorrow. For a while you may use http://terrainformatica.com/htmlayout/master_ss.css  as a reference.

Plans for tomorrow: will write htmlayout::select and co. classes/wrappers to manipulate controls in more accustomed way ( methods htmlayout::select::add, htmlayout::select::remove and so on. )

3.1.0.6 26-10-2005
  • Proper interpretation of  css::margin attribute for popup elements. For such elements margins define distance from "anchor" element. Thanks to Alexander from Belorussia for the bug report.
  • htmlayout_value.hpp has been splitted into two: htmlayout_value.hpp (value_t definition) and htmlayout_controls.hpp. All control related stuff will be there.
  • get_values is finished now. It handles <select>'s too. On multiselects it returns array of values packaged into single value_t. value_t was also updated to be able to hold array of values.
/* DISCLAIMER: this code (htmlayout_value.hpp) is using primitives from std:: namespace probably in non-efficient manner. (Personally I am not using std:: anywhere beside of this file) Feel free to change it. Would be nice if you will drop me your updates. */
 
/include/wtl_value.h will dissapear in the next build. "Sic transit gloria mundi...". If you are using it - copy it out of the distribution.
3.1.0.5 26-10-2005
Url the same: http://terrainformatica.com/htmlayout/PandoraHTMLayoutSDK.zip
  • Fix of "incorrect scaling of metric units". Dennis it is yours.
  • Fix of "MOUSE_LEAVE is not catched when cursor leaving layout window". Alexander, thanks.
  • browse.exe, menu Test -> Fetch controls values redesigned to use windowless controls. Implementation is not complete (gathering values from <select> left unimplemented so far. Next build, sorry).
New hpp file - htmlayout_value.hpp, this is simple variant, aka discriminated union. Also this file contains two functions:
  1. get_values( std::map< string, value >& all )
  2. set_values( std::map< string, value >& all )
These functions allows to gather values of inputs in some container in one shot.
3.1.0.4 24-10-2005
  • New. Support of <select multiple> - multiselect list box. See: /html_samples/form/selects.htm. By default I am using standard checkmarks for items. You may override this by CSS to make standard LISTBOX view.
  • New. Support of title and titleid attributes for any elements. Titles are also known as tooltips. See /html_samples/goodies/titles.htm.
  • Fix of "scrollbar does not appear after set_html() call".
  • Fix of "scroll position is not 0,0 after loading new document".
  • Various other issues related to input behaviors - <select> and <button> in particular.
3.1.0.3 22-10-2005
  • New input field <input type="number">, shows spin buttons if element has numeric step attribute.
  • Critical bug fix:
    e.set_html( (unsigned char *) str.data(), str.length(), SIH_REPLACE_CONTENT );
    causes GPF. Fixed now. Thanks to Dennis and his team from St. Peterburg, Russia for reporting it.
  • Fix of <select> behavior inconsistencies. Keith, these are yours, thanks.

Started implementation of <textarea> and <htmlarea> behaivors. In fact these two will use the same physical behavior.

<htmlarea> is a WYSIWYG "richtext" editor capable to edit html and wiki/blog markups.

You may consider <htmlarea> (to be precise - its behavior) as contentEditable attribute in IE. The difference is simple - content of <htmlarea> can be submitted as any other input element. There are other ideas, I hope that finally we will have practical (simple, fast, predictable) WYSIWYG editor as form input element.

More on the subject: http://lists.w3.org/Archives/Public/www-style/2005Sep/0240.html

And about our old friend <textarea>. I am going to implement there support of syntax highlighting. Idea is to have something like <textarea syntax=".../cpp.stx">...</textarea> where *.stx is some simple file describing syntax rules and CSS class names. This file plus some CSS will give us simple to use and configure source code editor. It will not be a Scintilla but rather something simple.

Does anybody know good format for describing syntax rules?

3.1.0.2 20-10-2005
Small fixes and work on HTML samples:
  • /html_samples/forms/tabs.htm - system style tab bar;
  • /html_samples/css-plus/theme-images.htm - list of all currently supported OS theme images.
See updated screenshots page.
3.1.0.1 19-10-2005
Url: http://terrainformatica.com/htmlayout/PandoraHTMLayoutSDK.zip
  1. Behaviors moved into new model. Now behavior is just one function:
    BOOL CALLBACK ElementEventProc(LPVOID tag, HELEMENT he, UINT evtg, LPVOID prms );
    This is first phase of active_element implementation.
    See files /include/htmlayout_behavior.h and /include/htmlayout_behavior.hpp
  2. Fixed bug with sidebars.htm rendering. Thanks to Joel for reporting it.
  3. Theme support of W98..W2K and XP Classic Theme. Tested only on XP with XP Classic Theme by now. Testing on other systems will be made tomorrow. I do not expect any issues down to W98. Only W95 as it has no ::MonitorFromPoint API so I need to load it dynamicly with checks.
    Screenshot: http://terrainformatica.com/htmlayout/images/selects2k.jpg - Windows XP Classic Theme.
3.1.0.0 18-10-2005
Url: http://terrainformatica.com/htmlayout/PandoraHTMLayoutSDK.zip
 
Main features in this Alpha/Beta/Preview/Demo release:
  1. Windowless controls:
    • <input type=edit>
    • <input type=button>
    • <input type=radio>
    • <input type=checkbox>
    • <button>..</button>
    • <select size=1> - dropdown list
    • <select size=n> (or better <widget type="select">...</widget>) - plain list and tree view
  2. HELEMENT now is LPVOID - now it is a direct pointer to internal html dom element.
  3. If you are storing it somewhere between notifications you *must* use _Use and _Unuse pair - reference counting is in effect.
  4. External behavior API was not yet changed but definitely will.
---- Please don't treat this release as something complete ----
 
Known issues:
  • <textarea>/<htmlarea> are not implemented yet.
  • Edit box - double click (word selection) not implemented.
  • Selects - arrow keys navigation through <option>s and tabbed elements is not ready yet.
  • HWND based controls positioning is not tested yet - expect some inconsistency here.
Any comments and proposals are appreciated.

Version 3.0:

Build# Date Updates
3.0.2.3 02-10-2005
  • Fixed GDI resource leakage while drawing <fieldset>. This one critical, sorry.
  • Fix in table layout engine. Mix of percent and auto width columns was not properly calculated.
3.0.2.2 30-09-2005
  • Table layout engine was significantly redesigned. Should work faster than before. Many fixes also here including assigning width through CSS.
  • Smooth scroll implementation. If scrollable block/document does not contain child controls and has not transparent background then it will be scrolled smoothly. I am using ScrollWindowEx when it is possible. Example when ScrollWindowEx is not used is http://www.w3.org/TR/CSS21/ . This page contain static background image and cannot be scrolled using ScrollWindowEx.
  • Various fixes and optimizations in control positioning.
  • Proper detection of MOUSE_LEAVE.
  • HTMLayoutSetElementHtml issue was fixed.
3.0.2.1 26-09-2005
  • Fix of "hyperlinks were not working in some cases" critical bug. Sorry for any inconveniences.
  • Scrolling optimizations. Now, if HTML/CSS allows, HTMLayout uses ::ScrollWindowEx Windows API functions. Otherwise it just does full redraw of scrollable area.
  • tabs behavior has been finished. Tabs behavior now allows keyboard navigation. The tabs can be used as an example of keyboard events handling in behaviors.
3.0.2.0 25-09-2005
New features:
  1. Foreground images in CSS. See updated HTMLayout CSS support map foreground-* attributes.
    Idea of foreground images is simple - same features as background but they are rendered on top of everything. Useful for many purposes. See updated samples: /html_samples/behaviors/more_tabs.htm (tab strip focus indicator) and html_samples/css-plus/back-fore.htm ( glow effects )
  2. Outlines implementation. See also css map. Used primarily for focus indication.
Version number reflects CSS feature complete state of HTMLayout.

New API function HTMLayoutLoadHtmlEx - has additional parameter baseURL used for resolving relative links while loading from memory buffer.

3.0.1.38 23-09-2005
  • New API function HTMLayoutShowPopup - shows block element as a popup window.
  • New behavior: behavior_dropdown.cpp: dropdown and popup behaviors. These allow to declare elements as dropdown buttons, HTML menus and tooltips. See: screenshots
  • Fixes of redrawing problems - dynamic updates of element content optimization.
3.0.1.37 16-09-2005
  • Rendering fixes. Sometimes scrollable content of the element overlap on the screen with content of siblings.
3.0.1.36 14-09-2005
  • More fixes in CSS parser.
  • New behavior implementation: tabs. This behavior allow to switch multiple views by tabs. Tab stripe position and tab shapes are limited only by your imagination which is more important than knowledge as Albert the Great said once. See http://terrainformatica.com/htmlayout/screenshots.htm and tabs.htm sample in html_samples/behaviors.
3.0.1.35 12-09-2005
  • Fix of <textarea> tag parsing. Bug introduced in 3.0.1.33.
  • Fix of bug in CSS engine. In some cases calculation of specificity selectors was wrong.
3.0.1.34 07-09-2005
  • New: Element UID support. Element UID is an identifier of DOM element suitable for storage it in the lifetime of HTML document. It is not recommended to store HELEMENTs out of function calls as HELEMENT table is limited by 4096 simultaneously existing locked handles. Two new functions added for UID support:
    • HTMLayoutGetElementUID and
    • HTMLayoutGetElementByUID
    See their inline documentation in file htmlayout_dom.h . htmlayout_dom.hpp was accordingly updated.
  • New function HTMLayoutSelectElements also introduced. It allows to enumerate elements by CSS selector(s).
    Example:  HTMLayoutSelectElements( callback_fcn, "tr:nth-child(3n+1)" ) will call callback_fcn for each third row in all tables of the document. See also element::select_elements method in htmlayout_dom.hpp.
    List of supported CSS selectors is available here.
3.0.1.33 04-09-2005
  • Fix of <textarea> tag parsing. Now text in between <textarea>...</textarea> appears in the control.
  • HLN_DATA_LOADED and HLN_DOCUMENT_COMPLETE notification fixes.
Updated Embedding principles page. Explantation of <input> versus <widget> and integration details.
3.0.1.32 31-08-2005 Implementation of basic controls styling. Editboxes, Combos and Lists reflect now background-color, font and color CSS attributes. See html_samples/generic/form.htm for example.
3.0.1.31 30-08-2005
  • Fix of "When using the collapsible_by_icon behavior, opening or closing an item does not affect the scrollbar if one is present".  This fix also repairs problem with "white stripes in place of scrollbars". See http://www.terrainformatica.com/forum/entry.php?show=9931 for details and illustration.
  • Fix of metric values of length units (cm, mm) calculations.
3.0.1.30 28-08-2005
  • File behaviors/behavior_splitter.cpp was slightly redesigned to avoid unnecessary redraws.
  • Fixes of focus state renderings. Sample html_samples/generic/tabindex_navigation.htm works properly now.
3.0.1.29 26-08-2005
  • Fixed broken samples html_samples/behaviors/scrollbars.htm and html_samples/editor/index.htm.
  • Fixed GetSelectedHTML function. It used to return selection first made.
  • Proper handling of MOUSE_LEAVE event. Some hyperlinks may be affected.
  • More drawing optimizations.
  • Sample html_samples/stress/complex_tables.htm has been added.
3.0.1.28 25-08-2005
  • Fix of issues with refreshing scrollable blocks;
  • Update of <filedset> <legend> elements, their styles and rendering methods. See: html_samples/generic/form.htm
3.0.1.27 23-08-2005
  • Layot fixes related to controls positioning.
  • Further htmprint.h updates. It got C++ class PrintEx which is drop-in equivalent of old printex. printex WTL sample was also updated to use new class.
3.0.1.26 20-08-2005
  • Fix of mouse over event handling.
  • Added new header file htmprint.h. This is pretty much reformulation of the PrintEx API. I made it in plain Windows API style too. For the sake of .NET interop.
    Old interface based implementation will be declared obsolete in version 3.1.0.0 .
3.0.1.25 18-08-2005
  • Various layout bugs fixes.
  • Added support of non-standard Internet Explorer specific character codes in range U+0080 - U+009F. See http://www.bbsinc.com/iso8859.html for more detalis.
3.0.1.24 11-08-2005
  • Implementation of resource loading callbacks. Now PrintEx engine properly calls HTMLAYOUT_PRINTING_CALLBACK::loadData callback method.
  • Various fixes of erroneous HTML files parsing. Now HTMLayout is more tolerant to structure of input HTML.
3.0.1.23 09-08-2005
  • Implementation of adjacent sibling selectors.
    Record:
    H1 + P { color:red; }
    means that all P's having previous sibling element H1 will have red color. See SDK/html_samples/generic/selectors.htm
  • Fix of HTMLayoutGetSelectedHTML function. See wtl_demo.exe, menu Edit and Selection mode/Copy.
3.0.1.22 29-07-2005
New features:
  • Implementation of &shy; HTML entity support. &shy; is a soft hyphen - symbol invisible in the middle of the line and visible when it is last symbol in the line.
  • New HTMLayoutFindElement API function. It allows to find DOM element by position. See Show probe on menu and its implementation in browser.exe.
3.0.1.21 26-07-2005 Fix of WM_VSCROLL handling with SB_BOTTOM parameter.
3.0.1.20 22-07-2005
Fix of CSS level 3 selectors.
 
Now it is possible to say:
 
each odd row is yellow:
tr:nth-child(odd) { background-color:yellow; }
 
each even row is yellow:
tr:nth-child(even) { background-color:yellow; }
 
each third row is yellow:
tr:nth-child(3n+1) { background-color:yellow; }
 
tr:first-child { background-color:yellow; }
tr:last-child { background-color:yellow; }
 
see SDK/html_samples/generic/selectors.htm
3.0.1.19 21-07-2005

Dependency from ::RealGetWindowClassA win32 function was eliminated. This function does not exist on Win98 without Unicode Layer installed. This dependancy appeared in 3.0.1.17.

AxHTMLayout SDK was also updated by implementation of FormValues method and collection.

3.0.1.18 18-07-2005
  1. Restored sample RSSComposer. Its UI is working now as designed.
  2. Optimization of DOM massive updates.
Typical example:
 
There is HTML32.htm file in html samples folder of the SDK.
It is HTML 3.2. Specification. I've updated its style element by
following line:
 
<STYLE>
/* it is here for the update demo test in browser.exe
   all elements with attribute 'updated' equals 'true' will have this: */
[updated="true"] { background-color:yellow; border:1px solid red; }
</STYLE>
 
Thus, if we will add attribute updated with value true to some element it will be rendered with yellow background and red border. Due to border appearance document will also change its dimmensions - will be remeasured.
 
Following function (available in browser.exe, menu Test) sets attribute updated with value true to all header elements in the loaded document - H1 ... H6. Load to HTML32.htm and press Menu/Update all... to see the effect.
 
LRESULT OnTestUpdate()
{
  // test example - enumerate all headers and add attribute 'updated' to them
 
  htmlayout::dom::element root = htmlayout::dom::element::root_element(m_view);
 
  struct enumerator: htmlayout::dom::callback
  {
    virtual bool on_element(HELEMENT he)
    {
      htmlayout::dom::element el = he;
      el.set_attribute("updated", L"true");
      el.update(false); // just invalidate DOM element
      return false; // continue enumeration
    }
  };
 
  enumerator cb;
  // enumerate all headers - calls enumerator::on_element
  // for each DOM element from the list
  root.select(&cb,"H1,H2,H3,H4,H5,H6");
 
  // massive update was made - refresh the whole window
  m_view.Invalidate();
  m_view.UpdateWindow();
 
  return 0;
}
 
3.0.1.17 17-07-2005 Fix of involuntary :) button resizes.
3.0.1.16 30-06-2005
Fixes:
  1. HLN_CONTROL_CREATED notification,
    NMHL_CREATE_CONTROL.helement field was in wrong state in this notification.
  2. Size of <SELECT size=1> dropdown window was not set properly causing it to appear with zero height.
3.0.1.15 19-06-2005
Export names of functions:
  • HTMLayoutClearAttributes
  • HTMLayoutGetElementHtml
  • HTMLayoutGetElementInnerText
  • HTMLayoutScrollToView
have been fixed
3.0.1.14 12-06-2005
Fixes of bugs: