Build# Date Updates 18-08-2013
  • fix of json parsin issue: http://www.terrainformatica.com/forum/read.php?3,425,425
  • sync with Sciter @image-map { ... }  feature. See: @image-map sample in sdk/html_samples/
  • fix of element::get_style_attribute("content").
  • fix of <a href=... target="name"> handling.
  • fix of issues in csss! animation.
  • fix of @novalue handling in <textarea>.

Builds: win32, win64 15-02-2013
  • [graphin] fix in graphics_blit_image ( appreciation goes to Netsesame )
  • Fix of <text> parsing model. It is forced to be para always. See: http://www.terrainformatica.com/forum/read.php?3,144
  • Fix of possible AV in behavior:tree;
  • Fix of '+'/'-' tree-view renderings on surfaces with alpha-channel.
  • input type=date, fix of 2010 months view rendering
  • behavior:date | calendar + firstdayofweek=1..7 attribute
  • fix of @src handling in <picture> when src points to non-recognized image.
  • IAccessible fix for <select>
  • Fix of behavior:data initialization after cloning.
  • proper access key handling on button[type=menu]
  • [richtext] image load fix
  • Fix of dynamic  dynamic float:left | right.
  • [CSS] new property mapping, useful for RTL support to mirror images, margins, borders and paddings. See cssmap.htm document.
  • other minor fixes.

Builds: win32, win64
  • fix of full-width interpunction (ideographs) in plaintext, see http://terrainformatica.com/forums/topic.php?id=2018
  • [HTML parser], fix of H1..H6 elements parsing when they contain block sub-elements.
  • fix of second issue here http://terrainformatica.com/forums/topic.php?id=1997 (:tab-focus/:current)
  • fix of <select> issue: http://terrainformatica.com/forums/topic.php?id=1995
  • fix of AV in behavior:htmlarea (selection) on some peculiar markups.
  • fix of WinInet handle leakage, credits go to 王高全
  • behavior:time, generation of EDIT_VALUE_CHANGED for the element itself instead of its <caption>
  • [RTL]
    • fix of behavior:progress rendering.
    • fix of scrollable RTL tables rendering.
    • proper handling of windows having WS_EX_LAYOUTRTL flag set initially.
  • Use of SystemParametersInfo( SPI_GETWHEELSCROLLLINES ) suggestion in MOUSE_WHEEL handlers.
  • + sdk/samples/themes sample.
  • [CSS] Fix of dynamic flow:"template" change.
  • [CSSS!] Fix of dip units handling.
  • [richtext]
    • various fixes.
    • sdk/samples/richtext/spell-check.htm sample
    • + richtext.doSpellCheckHighlighting(validWord) - highlights misspelled words. See sample doc above.
    • replaceBy(text) preservs character formatting now.
  • aux-cvt.h UTF-16 related fixes.
Builds: win32, win64 13-08-2011
  • [richtext] Fix of AV in HTML pasting with tables.
  • [richtext] Fix of inline 32bpp image parsing and saving.
  • [richtext] fix of editing registers update after VK_BACK
  • [RTL] fix of behavior:progress rendering in RTL environments.
  • Fix of <picture> default dimension calculation.
  • Fix, behavior:time , generation of EDIT_VALUE_CHANGED with proper target reference.
  • Fix in behavior:htmlarea, high CPU consumption on some non-trivial markups.

Builds: win32, win64 24-06-2011
  • [printing] more pagintation fixes.
  • text-align:justify, more liberal threshold value.
  • Fix of bullet positioning in case of <li><p>text</p></li>.
  • Fix of background-image-transform:none handling.
  • [CSSS!] new "str".compare(false|true) - lexical string compare.
  • [CSSS!] handling of DIP units.
  • Fix of <include> parsing for span elements.
  • [richtext] Fix of first whitespace handling in paragraphs.
  • [richtext] Fix of attributes handling in richtext.xcall("setBlock",tag,attributes) call.
  • [richtext] Fix of <img> emission of IE content. See: http://terrainformatica.com/forums/topic.php?id=1866&replies=5
  • [richtext] Fix, <!—StartSelection--><!—EndSelection--> emission in empty paragraphs.
  • Fix of AV while parsing http://files.rsdn.ru/96414/example1.html
  • Fix, <img width=xx> , min-width/max-width handling.
  • Fix of flow:"template" dynamic update, see: http://terrainformatica.com/forums/topic.php?id=1868
  • Mouse wheel handling uses SPI_GETWHEELSCROLLLINES.

Builds: win32, win64 24-04-2011
  • [printing] another pagintation fix.
  • HTMLayoutScrollToView()/ element::scroll_to_view (horizontal scroll) fixes for tables with fixed rows.
  • [CSS+] fix of dynamic switch of flow:"template".
  • Fix of rendering artefacts in w7aero sample (HTMLayoutSetOption/HTMLAYOUT_TRANSPARENT_WINDOW).

Builds: win32, win64, win-mobile. 10-03-2011
  • [CSS+] New, support of :root style block in style sets defining scrollbars. :root defines rendering of scrollbar background itself.
  • Fix of sizeof(wchar_t) == 16 in aux-cvt.h
  • Fix of http://terrainformatica.com/forums/topic.php?id=1770
  • Fix of a crash in flow-template layout
  • New HTMLayoutEnqueueMeasure() API function - allows to defer measuring of scrollable elements. See: /htmlayoutsdk/include/behaviors/behavior_splitter.cpp and /htmlayoutsdk/html_samples/behaviors/splitters.htm
  • [richtext], + support of 'background' css property.
  • Fix of HTMLayoutSetMediaType()  - it used to drop all default MT variables.
  • [print-ex] Fix of "1000 pages" generation in some circumstances.

Builds: win32, win64, win-mobile.

Builds: win32, win64, win-mobile. 23-01-2011

Builds: win32, win64, win-mobile. 05-12-2010
  • New, CSS, @const are allowed inside @set {} blocks now. Inner @const declaration does not affect set of constants defined in outer scope.
  • Fix of the case when events are passed to disconnected event_handler.
  • Fix of shadow rendering on popup windows http://terrainformatica.com/forums/topic.php?id=1619
  • Update, WM_CREATE received by HTMLayoutProcND with WPARAM == WPARAM_DISCARD_BUILTIN_DD_SUPP0RT discards internal support of IDropSource/IDropTarget.
  • New, event_handler::handle_exchange(EXCHANGE_PARAMS) method - system DnD support.

Builds: win32, win64, win-mobile. 21-11-2010
  • New feature: support of gesture events on devices with touch screen.
  • New feature: support of IDropTarget/IDropSource on HTMLayout windows. So it is possible to drag text out of <input>,<textarea>,<richtext> and behavior:htmlarea to other windows on desktop, e.g. to Microsoft Word or WordPad.
    Note: GUI thread shall invoke OleInitialize, OleUninitialize in order drag-n-drop to work.
  • Update, support of tri-state checkboxes <button type=checkbox mixed> , see: htmlayoutsdk/html_samples/forms/tristate-checkbox.htm
  • Update, support of CSS text-transform property in <input type="text">
  • Fix in loading some BMPs using RLE encoding.
  • Fix, correct interpretation of background-image:none.
  • New in CSSS!, self.update() function - does the same as element.update(true) in script.
  • Fix of margin interpretation in :popup elements. See: http://terrainformatica.com/forums/topic.php?id=1641
  • Fix of hang-up in HTML parser on erroneous <table> inputs. See: http://terrainformatica.com/forums/topic.php?id=1640
  • Fix, rendering speed up of long paragraphs. Especially for scrolling. See: http://terrainformatica.com/forums/topic.php?id=1638

Builds: win32, win64, win-mobile. 23-10-2010
  • New API function: HTMLiteRenderEx() - rendering of fragments in HTMLite.
  • Update, <richtext> support of <widget>s inside.
  • Fix of MOUSE_CLICK event generation ( under behavior:button ).
  • <richtext>-fix, pasting images. See: http://terrainformatica.com/forums/topic.php?id=1608
  • Fix of the issue with deleted rows + animation inside them.
  • Fix (printing, pagination) of the issue with pagination of documents having empty elements.
  • Update, elements with overflow:auto|scroll are not tab-traversable by default now. But MOUSE_DOWN on elements with overflow:auto|scroll will set focus on them. To declare element focusable use either one of these:
    • explicit @tabindex >= 0
    • or in CSSS! define focus-on! handler.
  • Fix of regression issue with intrinsic dimensions of <richtext>, see: http://terrainformatica.com/forums/topic.php?id=1617
  • Fix of async image loading in frames when they are used in host document too: http://rsdn.ru/forum/htmlayout/3978537.1.aspx

Builds: win32, win64, win-mobile. 26-09-2010

Builds: win32, win64, win-mobile. 05-09-2010 Builds: win32, win64, win-mobile. 21-08-2010
  • Fix of transition:none handling on elements inside popups and tabs.
  • Fix, support of canceling of remote document loading in <frame>. It is enough to call frame.clear() or to load another document in it to cancel loading of previous one.
  • Fix of :empty/richtext issue, http://terrainformatica.com/forums/topic.php?id=1520
  • Fix of initialization of <select>s with custom structure.
  • Fix of keyboard layout switch in built-in dialog implementation.
  • RTL fix: <input type="hslider">, support of direction:rtl.
  • HTTP client fix, level of allowed 301 redirects increased from 1 to 6.
  • Fix of last test case in htmlayoutsdk\html_samples\tooltips\titles.htm - tooltip with opacity.

Builds: win32, win64, win-mobile. 15-08-2010
  • Fix of mouse handling in HTMLite.
  • Fix of AV in <input type=masked> on DoubleClick if it has no @mask set.
  • Fix of cursor appearance in <frameset> without <splitter>.
  • Fix of background-image-transformation: opacity(0.5) handling.
  • Fix of popup dimensions in dropdown select.
  • Fix of handling mouse moves with dynamic visibility:visible|hidden changes.
  • Fix of keyboard handling in scrollable elements with behavior:htmlarea.
  • Fix of HTMLayoutTrackPopupAt() function.
  • Various RTL related fixes.
  • New behavior:tree; and behavior:tree-checkmarks; see: html_samples/forms/tree-view.htm and http://www.terrainformatica.com/wiki/h-smile/built-in-behaviors/tree
  • Fix of :empty state flag interpretation by behavior:richtext and behavior:plaintext.

Builds: win32, win64, win-mobile. 07-08-2010
  • Update, Ctrl+Insert handling in behavior:htmlarea;
  • New, support of Vista/W7 explorer list view item styles:
    • theme:list-view-item-normal
    • theme:list-view-item-hover
    • theme:list-view-item-selected
    • theme:list-view-item-selected-not-focus
    • theme:list-view-item-disabled
    • theme:list-view-item-selected-hover
      See sample: /html_samples/css-plus/theme-images.htm - in win32.exe or in win64.exe or w7aero.exe on Vista/W7. These images work only if Aero DWM is in effect.
  • New, detection of Vista/W7 Aero DWM in Media Queries ( composition-supported variable ), see samples:
    • /html_samples/css-plus/theme-images.htm
    • /sciter/sdk/samples/mediaq/list-of-all-mediaq-vars.htm for the list of all MQ variables.
  • Fix of FORM_SUBMIT/RESTORE, events, target is a form and source is a submit button caused the event.
  • Fix of behavior:select, intrinsic height calculation.
  • Fix of copy-image-paste in behavior:richtext. See: http://terrainformatica.com/forums/topic.php?id=1474
  • CSSS! fix of conflict between CSS content property and CSSS! assigned! { ... } handler.
  • Fix of first VK_DOWN handling in behavior:select-dropdown.
  • Fix of MOUSE_WHEEL handling in behavior:select-dropdown when its <caption> has tooltip shown.
  • Fix of the issue Tooltips are buggy.
  • New <splitter> element, like a <div> so may have children inside. See: html_samples/frames/frameset-splitter.htm

Builds: win32, win64, win-mobile. 02-08-2010
  • Fix of cursor handling on popup windows.
  • Fix of popup windows size handling when dimensions of DOM element change dynamically.
  • Fix of smooth scrolling in <select>s when current item is last/first visible item.
  • Fix of AV in behavior:htmlarea on some markups.

Builds: win32, win64, win-mobile. 31-07-2010 Builds: win32, win64 and mobile. 27-07-2010
  • Fix of rendering elements with opacity: < 1.0.
  • Fix of scroll handling of elements that have positioned overlays on top them.
  • CSS, new, support of #RRGGBBOO format of colors, where 'OO' is a hexadecimal representation of opacity in the range 00..FF
Builds: win32, win64 and mobile. 25-07-2010
  • Fix of AV in HTMLayoutGetElementHtml[CB](element,true, ...) when the element is root element.

Builds: win32, win64 and mobile. 24-07-2010
  • New, CSS support of background-attachment:local; See: http://www.w3.org/TR/css3-background/#the-background-attachment
  • New, behavior:path-select and so <input type="file-path" /> and  <input type="folder-path" />, see: path-select
  • Update, behavior:richtext|plaintext and behavior:htmlarea:
    • DoubleClick - selects current word.
    • Ctrl+DoubleClick - selects current paragraph.  
    • DoubleClick, DoubleClick - (two consecutive DoubleClicks) - selects current paragraph.
  • RTL fix, rendering of lines starting with digits.
  • Fix of rendering of elements with opacity: < 1.0 on layered windows (like skin.exe).
  • Fix of "data:..." urls handling in <img>es.
  • Fix of popup positioning in CSSS! el.show-popup() function when popup uses margins.
  • Fix of position:absolute calculations when on right:XXpx is used. See: http://rsdn.ru/forum/htmlayout/3884345.1.aspx
  • Fix of width calculation of elements with display:inline-block, float: left|right and position:absolute | fixed.

Builds: win32, win64 and mobile. 09-07-2010

Builds: win32, win64 and mobile. 03-07-2010
  • New, CSS, flex() function - additive flexes;
  • New, behavior:marquee, see /html_samples/effects/marquee.htm
  • New methods in behavior:form : submit() and reset().
  • New CSS feature: media vars, new API HTMLayoutSetMediaVars() function.
  • behavior:htmlarea :
    • support of methods selectAll() , copy(), canCopy();
    • better handling of RTL selections.
  • Fix of horizontal-align:right handling ( RTL ) in overflow: auto | scroll containers.
  • Fix, faster RTL texts handling.
  • Update, CSS uses "lazy" image loading schema: images defined in CSS get loaded only if there is at least one DOM element using them.
  • Update, CSS border-spacing property is a shortcut of  two new properties border-spacing-x and border-spacing-y

Builds: win32, win64 and mobile. 15-05-2010
Sync with Sciter
  • Fix HFONT handle leak in HLN_CREATE_CONTROL (when windowed ctls are used)
  • Fix of transition: parser. For example:
    transition: margin-top(back-out,0.4s, 0.1s, cubic-in)
    defines transition that starts after 0.1s delay and lasts 0.4s.
  • New, transition: x-back-in, x-back-out and x-back-in-out function added.
  • Fix of table scrolling (border-spacing:-1 case) and dynamic updates in tables.
  • Tweaks of text selection in RTL text.
  • Fix of animation steps computation when multiple animators with different step times running.
  • Fix of nested <tbody> parsing.
  • Fix of CPU spike when element refreshed while it is covered in full by other window.
  • Fix of "Japanese: Text is distorted when user tries to type in any of the widgets and text automatically disappears when user clicks on next place to type and also random copying pasting is being done without any user intervention."
  • Fixes of animated GIF renderings.
  • Fix of specificity calculation in CSS selectors.
    Following two selectors:
    1) button:checked > text
    2) button > text
    used to have the same specificity. That is wrong, #1 has greater specificity than #2 because of :checked.
  • Fix of initial popup windows rendering (it might draw first time on hdc(0) - on desktop).
  • Fix of incident "the engine isn't rendering mixed English / Hebrew characters in the correct order."
    Engine is using three distinct RTL/LTR modes now:
    1. @dir undefined:
      <text> rtl/ltr mix </text>
      automatic directionality algorithm used (first char with strong directionality defines default order of text block)
    2. @dir defined and is "ltr":
      <text dir="ltr"> rtl/ltr mix </text>
      default is LTR order
    3. @dir defined and is "rtl":
      <text dir="rtl"> rtl/ltr mix </text>
      default is RTL order.
  • Fix of table intinsic height calculation when @cellspacing is present. See: http://rsdn.ru/forum/htmlayout/3776906.1.aspx
  • Fix of flow:vertical-flow layout calculation when a) clear is used and b) width of child is in flex.
  • Update, CSS property clear accepts 'before' and 'after' values that are synonyms of 'left' and 'right'.
  • Update, optimization of dynamic change of top/left CSS attributes for position:absolute|fixed elements. See: last comment in http://terrainformatica.com/forums/topic.php?id=1285&page&replies=11
  • New, CSS property horizontal-align, see: htm_samples/horizontal-vertical-align/
  • Fix, proper handling of vertical-align for elements with overflow:hidden when content overflows, see: htm_samples/horizontal-vertical-align/
  • Fix of :drop-marker state flag handling (D&D)
  • Fix of Japanese full stop (period) and comma characters wrapping.
  • Fix of grayscale JPEG files loading.
  • Fix of highlighting rendering in edit widgets.
  • New events:
    • MOUSE_EVENTS::MOUSE_CLICK event generation (mouse events group) - pair of MOUSE_DOWN/MOUSE_UP is detected on some element.
    • BEHAVIOR_EVENTS::CLOSE_POPUP - close popup request, returning TRUE will prevent popup element to be closed.
    • BEHAVIOR_EVENTS::REQUEST_TOOLTIP - request tooltip request, to provide your own tooltip element provide your own value of BEHAVIOR_EVENT_PARAMS::he - is the tooltip element.
    • BEHAVIOR_EVENTS::ANIMATION, animation started on the element (reason == TRUE) or stopped (reason == FALSE).
  • Fix of "Focus rectangle remaining on disabled links".
  • Fix of "Disappearing text in a button" in some circumstances.
  • Fix of "Drop down box navigation" in <select>.
  • Fix of scrollable menu rendering issue.
  • Fix of rendering artefacts around scrollable tables.
  • Update: IME handling is redesigned - it shows candidate IME string in place (used to be separate window).
  • Fix, BMP files, support of 1, 4, 8, 16bpp + RLE4,RLE8 encodings.
Builds: win32, win64 and mobile. 10-03-2010
  • New, support of sounds in transitions: transition: sound(in:url(...wav),out:url(...wav)) See: html_samples/transitions/margin-animation.htm
  • CSS, fix of content:"new-text" handling.
  • Fix of flex heights handling in flow:horizontal/overflow-x:auto containers.
  • Fix of doubled SELECT_SELECTION_CHANGED events in <select type="select-dropdown">, see: http://terrainformatica.com/forums/topic.php?id=1242&page&replies=2
  • Drag & drop fixes.
  • New, support of CSS3 property text-wrap, see: http://www.w3.org/TR/css3-text/#text-wrap
  • Fix of W7/LAYERED_WINDOW/theme rendereing, http://www.rsdn.ru/forum/htmlayout/3717661.1.aspx
  • Fix of MOUSE_DOWN + SHIFT handling in behavior:edit
  • New, reflection effect, See: html_samples/effects/reflection.htm
  • Fix of empty inline-block measurement and updates.
  • Fix of infinite recursive call for some combinations of vertical aligns in display:inline-block elements.
  • Fix of clipboard copy in richtext.
  • New, <input type="file"> support and multipart/form-data uploading in <form>/behavior:form, see: /html_samples/communication/file-upload.htm
  • behavior:htmlarea; fix of Hebrew & Arabic in text selections.
  • New, CSS, support of text-selection-color, text-selection-background-color and text-selection (shortcut of previous two). So <input> elements, <plaintext>, <richtext> and <textarea> can have customizable selection colors.
  • Fix of popup rendering having border-radius.
  • Fix of scroll-while-selecting in behavior:richtext|plaintext;
  • VISUAL_STATUS_CHANGED and DISABLED_STATUS_CHANGED are now posted events rather than synchronous.
Builds: win32, win64 and mobile. 08-02-2010
  • New feature: transition CSS attribute supports now animations of CSS attributes using various easing functions (around 30 in total). Transitions defined this way support automatic and configurable rollbacks of animations.
    • htmlayoutsdk/html_samples/transitions/ folder contains various samples of the transition,
    • htmlayoutsdk/html_samples/transitions/!transition-doc.htm is a specification of the transition feature.
    This implementation of the transition is close to http://www.w3.org/TR/css3-transitions/ module proposed by Apple but is different in a) syntax and b) in feature set, e.g. H-SMILE transitions support declarations of animations in both directions, not only one.
  • Fixes of custom scrollbar rendering.
  • New CSS property size that is just short form of width and height pair.
  • Fix of <include> parsing , http://terrainformatica.com/forums/topic.php?id=1229&page&replies=2#post-5863
  • Fix of <link media="..."> and <style media="..."> parsing.
  • Fix of behavior:form value handling. Values of <input type=radio> and <input type=checkbox> in particular.
  • Fix of position:relative | absolute | fixed elements repainting. Speed up of rendering of DOM tree having position:relative | absolute | fixed elements.
Builds: win32, win64 and mobile. 16-01-2010
Builds: win32, win64 and mobile. 09-01-2010
  • New in CSS, one more layout manager: flow:stack. It's main purpose to handle cases when a container has children with visibility:hidden and only one of them has visibility:visible. Dimension of the element with flow:stack is a dimension of its widest/tallest children. See: http://terrainformatica.com/forums/topic.php?id=1174&page&replies=2 for the idea.
  • One more fix of border-radius artifacts on dark backgrounds.
  • Update of behavior:file-icon, it supports now special values of the filename attribute:
    • filename="." - generic folder icon
    • filename=".."  - generic drive icon.
    • filename="\\"  - computer icon.
  • Optimization of rendering of expandable images (***ground-repeat:expand) . If some section of the image contains only pixels of the same color it's rendering is as fast as a call of ::FillRect() in GDI. For cases like  sciter/sdk/samples/ideas/virtual-list/ scrolling is less CPU consuming.
  • Fix of outline rendering for zero-height elements, see:  http://terrainformatica.com/forums/topic.php?id=1181&page&replies=3
  • CSS, fix of the calc() issue mentioned here: http://terrainformatica.com/forums/topic.php?id=1185&page&replies=1
  • behavior:masked-edit:
    • fix of VK_BACKSPACE handling;
    • hatch fill for empty fields was removed.
  • Fix of RTL text rendering: http://terrainformatica.com/forums/topic.php?id=1179&page&replies=2
  • Fix of flow:horizontal-flow for children with min/max-width:auto;
  • New, support of background-clip CSS.3 attribute. The background-clip is especially useful with the border-radius.
  • Fix of glow outline rendering in some cases.
  • Fix of STATE_DRAG_SOURCE and STATE_MOVING flags coexistence, ATTN!: values of these flags were changed in include/htmlayout_dom.h
  • Fix of behavior:date and behavior:time initialization on elements other than WIDGET and INPUT, e.g. on table cells.
  • New, CSS, support of the @font-face rule. Sample is in /html_samples/@font-face.
  • @font-face support is not full though:
    • only 'font-family' and 'src' attributes are supported,
    • font-family value shall match exactly font name declared in TTF file itself.
    Fonts loaded by @font-face can be used only inside the process.
Builds: win32, win64 and mobile. 12-12-2009
  • New: min/max-width:auto in children of flow:horizontal-flow containers. auto value means width of widest child element. This allows to organize elements in grids. TOC panel (on the right) in Sciter help system demonstrates this layout.
  • Update: scrolling and smooth scrolling were redesigned, it is more smooth now. Especially for containers having solid (single color) background.
    • New concept of integral scrolling step, new CSS attribute scroll-manner and function scroll-manner() that allows to configure various aspects of scrolling behavior.
      See: http://www.terrainformatica.com/htmlayout/cssmap.whtm and
      scroll-manner-*** samples in sciter/sdk/samples/html-and-css/css-plus/ folder.
    • overflow[-x/y] CSS attribute was extended to support scroll-manner() function.
    • New, MOUSE_WHEEL handling is using sort of kinetic algorithm with adjustable acceleration.
  • Fix of scrollToView() implementation for the richtext.
  • Fix of Ctrl+C/V in masked-edit and date/time inputs.
  • Update: HTMLayoutUpdateView() API function was renamed to HTMLiteUpdateView()
  • New, Windows Aero DWM support:
    • new option in HTMLayoutSetOption(hwnd,HTMLAYOUT_TRANSPARENT_WINDOW, TRUE). Used with the calls of Windows Vista/7 functions: ::DwmExtendFrameIntoClientArea() and ::DwmEnableBlurBehindWindow()
    • Sample w7aero that demonstrates all this.
  • Fix of border-radius rendering on dark and complex backgrounds.
Builds: win32, win64 and mobile. 29-11-2009
  • New, behavior:time ( <input type="time"> ) supports no-seconds attribute.
  • New, support of theme:tab-item-leftmost-*** and theme:tab-item-rightmost-*** images. See: /htmlayoutsdk/html_samples/css-plus/theme-images.htm and /htmlayoutsdk/html_samples/forms/tabs.htm
  • Update, support of calc() expressions in margin and padding CSS attributes.
  • Fix, behavior:time ( <input type="time"> ), now element.value=undefined is causing the element to be cleared.
  • New, HTMLayoutGetElementHtmlCB() and HTMLayoutGetElementTextCB() functions, better handling of return values of inner html and text. These functions are not using internal static buffers. This allows to use them in multiple threads running separate instances of the engine.
  • Fix of MOUSE_UP handling in behavior:richtext.
  • Fix of ALTGR issue : http://terrainformatica.com/forums/topic.php?id=1153&page&replies=1
  • Update, vertical-list was removed from supported values of the flow CSS attribute.
Builds: win32, win64 and mobile. 14-11-2009
  • Fix of VK_BACKSPACE handling in masked edit + derrived ctls.
  • Fix of Absolute Position Resize Bug
  • Fix of <input type="progress"> rendering. Note that width:max-intrinsic for the element will set its width to widest menu item now.
    • New element <progress> from HTML5 element set. <progress> is just a short form of <input type="progress">.
  • Fix of GDI handle leak in .ICO files rendering code.
  • Fix of selection rendering in behavior:htmlarea.
Builds: win32, win64 and mobile. 08-11-2009
Builds: win32, win64 and mobile. 24-10-2009
  • Fix of HTMLayoutInsertElement function, case when element is already a child of the element.
  • Fix of behavior:slider, MOUSE_DOWN handling.
  • New behavior:switch, variation of behavior:radio but switch happens on MOUSE_DOWN rather after MOUSE_UP.
  • Fix of behavior:edit, case :empty state after IME input.
  • Fix of behavior:htmlarea (selection in html), auto scroll in overflow:auto elements.
  • Fix of flow:grid and flow:"template" layout managers - proper accounting of margins of children.
  • Fix, vertical-align: top | middle | bottom in <p> and <text> elements.
  • Fix of HTMLayoutSetElementHtml, SIH_INSERT_BEFORE | SIH_INSERT_AFTER modes. See: insert TR in a TABLE is not working
  • Fix of scrollbar rendering in skin.exe on Vista and 7.
  • Fix of rendering of some icons in skin.exe.
  • New in CSSS!: built-in function pixels(length)-converts give length value to CSS pixels.
  • Fix of issue: Window Maximize/Restore not working correctly
  • + Fix of mouse hit test in spanned table cells.
Builds: win32, win64 and mobile. 10-10-2009
  • Update, use of HTMLayoutTranslateMessage(MSG* msg) function is optional now on desktop Windows editions. To be precise: on desktop versions of the engine this function is just a stub that does nothing. On Mobile versions in order popups to work properly it must be called.
  • Fix of columns in tables removal from code.
  • Fix of flow:vertical-list opeartion.
  • Fix of dynamic style resolution of :nth-child() selectors when elements are inserted or deleted.
Builds: win32, win64 and mobile. 02-10-2009
  • Fixes of flow:horizontal-flow and vertical-flow layout managers.
  • Fix of possible AV in IME handling.
  • Fix of focus state rendering in html_samples/forms/input-text-and-button.htm
  • Fix, elimination of redundant WM_TIMER messages generated by the engine.
Builds: win32, win64 and mobile. 15-09-2009
  • Fix of tooltip appearance when application is inactive.
  • Fix of context menu handling in <textarea> and <plaintext>.
  • Fix of ALT+char handling in editing widgets.
Builds: win32, win64 and mobile. 12-09-2009
  • <table> layout module was susbtantionally redesigned:
    • fixed tables work significanty faster now.
    • to define fixed and non-fixed table you can use now flow CSS attribute: flow:table-fixed and flow:table.
    • <table>s support <tbody>, <thead>, <tfoot> and <caption> elements. <tbody>, <thead>, <tfoot> may contain their own <tbody>, <thead>, <tfoot> and <caption> subelements. Note that the engine is not rearranging <tfoot> elements to be at the bottom of the table/page.
    • Examples: htmlayoutsdk/html_samples/fixed-table/
  • Update of animation support in CSSS!:
    • Function element.start-animation( [duration] ) got additional optional parameter duration - number of seconds this animation should take. Example:
      element.start-animation( 0.4s )
      will start 400 ms animation cycle.
    • There is a function morph() available in context of animation-step! event handler (CSSS!). This function takes three parameters: res = morph("ease-function-name", start-value, end-value ) and produces value according to the ease function and internal animation progress state variable.
      Here is a list of names of ease functions supported by the morph():
      • "bounce-in", "bounce-out", "bounce-in-out",
      • "back-in", "back-out", "back-in-out",
      • "elastic-in", "elastic-out", "elastic-in-out",
      • "circ-in", "circ-out", "circ-in-out",
      • "expo-in", "expo-out", "expo-in-out",
      • "sine-in", "sine-out", "sine-in-out",
      • "quint-in", "quint-out", "quint-in-out",
      • "quart-in", "quart-out", "quart-in-out",
      • "cubic-in", "cubic-out", "cubic-in-out",
      • "quad-in", "quad-out", "quad-in-out"
    • The morph() function is demonstrated in following samples:
      • htmlayoutsdk/html_samples/csss!/animate-bounce.htm
      • htmlayoutsdk/html_samples/csss!/animate-cubic.htm
      • htmlayoutsdk/html_samples/csss!/animate-ease-list.htm
    • Note!: animations now occur in separate thread of multimedia timer. If you want them to run in main GUI thread (as before) you should call HTMLayoutSetOption(HTMLAYOUT_ANIMATION_THREAD,1) explicitly.
  • New function HTMLayoutTranslateMessage(MSG* msg) that must be called before system TranslateMessage() call in order to support popup and tool windows orginated from htmlayout.
    • In WTL HTMLayoutTranslateMessage call is wrapped in CHTMLayoutMessageLoop class (wtl_htmlayout.h)
    • In plain API this call may look like simply as:
      // Main message loop:
      while (GetMessage(&msg, NULL, 0, 0))
      if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    • Tool windows feature: HTMLayoutMoveElement[Ex] functions create so called tool windows now. Such windows exist until position CSS attribute of their DOM element is not set to position: static | absolute | fixed.
      Example (in Sciter) sciter/sdk/samples/ideas/moveable-windows/ demonstrates how tool and docking windows can be done using HTMLayoutMoveElement[Ex].
Builds: win32, win64 and mobile. 29-08-2009
  • Fix of Fix of whitespace handling in paragraphs (double space issue).
  • Fix in behavior:date, value is valid in SELECT_SELECTION_CHANGED event handler.
  • Fix of AV in HTMLayoutTrackPopupAt() while main window is getting closed inside the track loop.
  • Update: 'mode' parameter of HTMLayoutTrackPopupAt() and HTMLayoutShowPopupAt() is extended to support placement of the popup relative to the anchor point given by pos parameter.
  • Fix of possible AV in animators when the element gets destroyed while in animation step.
  • Fix of intrinsic height calculation of <select> in disabled state.
  • Fix of possible AV in Detach/DestroyElement method when they are called for elements owning active popups.
  • Fix of select.value for <option value="">, it returns json::value::is_null() now.
  • Update of border-radius CSS3 attribute rendering.  See demos in sdk/html_samples/border-radius/.
Builds: win32, win64 and mobile. 22-08-2009
  • Fixes  in behavior:richtext and behavior:plaintext:
    • proper \t symbols handling;
    • better handling of long strings.
  • Fix in flow:h-flow layout manager. Correct accounting of margins in children.
  • Fix, better handling of float: left | right elements.
  • New, support of border-radius CSS3 attribute. See demos in sdk/html_samples/border-radius/
    Please use this feature responsively, for complex cases expandable backgrounds without stretched sections are better. And yet try to avoid use of background images with alpha where they are not needed.
Builds: win32, win64 and mobile. 08-08-2009
  • Fix of get_style_attribute("opacity")
  • Fix of AV when CSS selectors A + B used in presence of tables.
  • Fix of scrolling in htmlayoutsdk/html_samples/behaviors/dropdown-with-select.htm
  • Fix of possible hangup in parsing of some RTL text.
  • Fix of drag&drop issue.
  • Fix of animation hang-up in some circumstances. All DOM events are generated strictly from the GUI thread.
  • Fixes of pagination (PrintEx). It should not miss any text now.
  • Fix of utf16 surrogate pairs handling in behavior:edit and behavior:password.
  • Fix of margin accounting for children of h-flow element.
  • New. CSSS!: calc() supports CSS constants (declared by @const at-rule) in expressions.
  • New API functions in HTMLite (for integration with Java/Swing):
    • HTMLiteAdvanceFocus (*)
    • HTMLiteGetFocusElement (*)
    • HTMLiteGetElementHTMLITE (*)
    • HTMLiteAttachEventHandler
    • HTMLiteDetachEventHandler
    • HTMLiteGetNextFocusable
Builds: win32, win64 and mobile. 18-07-2009
  • Fix of HTMLiteLoadHtmlFromFile(path) so this function can accept external URLs as a path of the document.
  • Fix. Better dynamic update performance when elements being updated are inside display:none elements.
  • Fix of context menu handling when the menu is defined as external resource: context-menu: url(some-file);
  • Fix of self::opacity CSS attribute handling in CSSS!.
  • Update: support of rgb() and rgba() functions in CSSS! scripts.
  • Fix in <richtext>: background-color CSS attribute is honored now for inline elements. Borders and margins are still not.
  • behavior behavior_lb_dialog.cpp and /html_samples/behaviors/light-box-dialog.htm has been added. That is so called document-modal dialog box implementation.
Builds: win32, win64 and mobile. 12-07-2009
  • Fix of dynamic behavior:edit assignment;
  • Fix of dynamic updates of elements having flow:"template";
  • Fix of url(data:;base64,chars) when chars contain '/' symbols.
  • New API functions:
    • HTMLayoutUrlEscape and HTMLayoutUrlUnescape - handling of urls containing non-ascii (unicode) characters.
    • HTMPrintLoadHtmlFromFileW - wide version of HTMPrintLoadHtmlFromFile.
    • HTMLayoutGetElementIntrinsicWidths  - get min-intrinsic and max-intrinsic widths of the element.
    • HTMLayoutGetElementIntrinsicHeight  - get min-intrinsic height of the element calculated for forWidth.
Builds: win32, win64 and mobile. 04-07-2009
  • Fix of HTMLayoutInsertElement() & co., it works significantly faster now.
  • New: support of the "data" URL schema. See: html_samples/goodies/data-url.htm
  • ATTN, Update of flow CSS attribute behavior:
    • if equal to vertical-list then element is using delayed measurement - this mode is good for elements that has large content and are resized frequently. Example: panels of <frameset> with resizing splitter between them will behave better when this style is set.
    • if it has explicit vertical value then element uses standard just-in-time measurement.
    • if flow undefined and content of the element is quite large then it will be measured as vertical-list otherwise as vertical.
  • Fix of HTMLayoutGetElementInnerText16() for <script> elements.
Builds: win32, win64 and mobile. 01-07-2009
  • Fix of the issue with ref-counter in HTMLayoutCloneElement() and HTMLayoutCreateElement() Remember these functions implicitly call HTMLayout_UseElement() so returned HELEMENT has ref-counter equal to 1. If you use plain API then you need to call HTMLayout_UnUseElement() on that handle. Otherwise you will get memory leak. I suggest to use C++ wrapper where this situation is handled properly.
  • Fix of dynamic remeasuring issue of elements that have dimensions given in flexes.
  • Fix in behavior:column-resizer.
Builds: win32, win64 and mobile. 30-06-2009
  • Update. DOM elements use separate ref-counter for HTMLayout_UseElement/UnUseElement. This prevents DOM element destruction when it is still in the DOM. HTMLayout_UnUseElement() returns HLDOM_OPERATION_FAILED in attempt to free element with ref-counter equal or less than zero.
  • Update. Engine generates WM_FORWARDMSG messages while it is running popup tracking loops.
  • Update. flow:h[orizontal]-flow is not using sum-of-flexes > 100 as a row wrapping condition. Row wrapping occurs if there is not enough space in the row or elements have clear:left | right | both defined.
  • Fix of flow:h-flow intrinsic height computation, details.
  • Update, behavior:edit is using multilevel undo/redo now.
  • Update, tooltip is shown now even for inactive htmlayout window.
  • Fix of outline:glow on text inside <button> elements.
  • Update, elements with explicitly defined flow attribute will not use margin collapsing.
Builds: win32, win64 and mobile. 20-06-2009
  • Minor fixes
  • New, support of <tbody>, <thead> and <tfoot> elements in tables. See: /html_samples/grid/table-tbody-thead.htm
  • New, support of disabled DOM attribute on <link> and <style>. Setting/clearing of element.set_state(STATE_DISABLED) for such elements also supported allowing to disable/[re]load group of styles in runtime without DOM reloading. Useful if you have themed UI where users can choose theme in runtime, use something like this in runtime:
    link.set_state(STATE_DISABLED); // disable old one
    link.set_attribute("href", L"new-theme.css"); // set new url
    link.set_state(0,STATE_DISABLED); // enable it
    See: html_samples/csss!/styles-link-activation.htm
Builds: win32, win64 and mobile. 04-06-2009
  • Fix of internal find_element(mouse_position) function, among other cases fixes tabs.htm samples.
Builds: only win32. 29-05-2009
  • Fix of possible AV case introduced in
Builds: win32, win64 and mobile. 28-05-2009
  • improvements of measurement speed and implementation of delayed measure of elements having overflow:auto|scroll and explicit width/height values. See: html_samples/frames/large-content-in-frames.htm
Builds: win32, win64 and mobile. 16-05-2009
  • Fix of discrepancies in intinsic dimension calculation of elements introduced in previous build
  • Fix of behavior:frame-set when one of panels is set to display:none in runtime.
  • Fix of mouse wheel handling on scrollbar.
  • printex, demo of drawing behavior. See: htmlayoutsdk/wtl/printex/behavior_drawing.cpp and htmlayoutsdk/wtl/printex/custom-drawing-behavior-printing.htm
  • Slightly better implementation of smooth scrolling.
  • HTMLayoutSetOption(NULL,HTMLAYOUT_SMOOTH_SCROLL, TRUE|FALSE) sets smooth scrolling on/off for all newly created htmlayout windows.
  • Custom scrollbar styling respects min-height/min-width CSS attributes for the .slider element.
Builds: win32, win64 and mobile. 09-05-2009
  • Fix of AV in some erroneous cases of RTL/LTR sequences.
  • Fix of float:right elements replacement inside table cells.
  • Fix of HTMLayoutGetElementInnerText for the <script> element.
  • Fix of "spacer" images rendering. ( e.g. www.blocknote.net front page ).
  • Fix of selection replacement in behavior:richtext|plaintext in htmlayoutsdk/html_samples/richtext/richtext-list.htm.
  • Fix of sizing/scrollbar issues in behavior:richtext|plaintext running in sideless/bottomless modes.
  • Fix of behavior:decimal [invalid] and :empty detection.
  • Fix of parsing of <include> content that starts with UTF-8 BOM.
  • Fix of possible AV in Windows7.
  • Updater module is using less agressive algorithm now. This should speed up dynamic update of elements. As a result of this changes cases #2 and #3 in htmlayoutsdk/html_samples/optimizations/dyn-updates.htm should take the same amount of CPU (and it should be close to the case #1). I expect that in some cases algorithm will not be smart enough so call of HTMLayoutUpdateElement(he, TRUE) will be required when changes will lead to the change of elements dimensions. Let me know if you will find such cases.
  • New API function HTMLayoutCommitUpdates(HWND hWndHTMLayout). Function applies all pending updates but without calling UpdateWindow() at the end (as does HTMLayoutUpdateWindow()).
    After call of this function it is safe to call HTMLayoutGetElementLocation() as at this moment all elements will get their positions calculated. This function is intended to be used in cases when htmlayout is not able to process messages from input queue or when you need to call HTMLayoutGetElementLocation() immediately after some DOM changes.
  • class PrintEx is derived now from public htmlayout::notification_handler<PrintEx>. Thus it will create custom behaviors for elements that have them defined. You can use custom behaviors for the implementation of custom drawing while printing. ATTN: this feature is not tested yet, let me know if you will find problems there.
Builds: win32, win64 and mobile. 25-04-2009
  • fixes in behavior:plaintext:
    • backspace in very first position,
    • selection after paste.
  • fix of click on dropdown-select when it is inside menu item, yeah that happens :)
  • fix of context menu position on multihomed systems when secondary monitor is on the left of primary;
  • fix of text selection in behavior:htmlarea, see this topic;
  • fix of popup limitation being less than half screen.
  • win32 sample, loading resources.
Builds: win32, win64 and mobile. 18-04-2009
  • Fix of http/https loading after server redirection. 30x HTTP responses.
  • Fix in animation initialization. The first step sometimes "jumps" noticeably.
  • Fix of old issue about background-repeat:repeat-x/y http://terrainformatica.com/forums/topic.php?id=56&page&replies=6
  • Fix of outline rendering on popup elements.
  • Fix of AV in context menus on top of <frameset>.
  • Fix of behavior:decimal, @format handling.
  • Fix of image animation when there are multiple instances of the same image are on the page.
  • 64bit version, fix of memory leak.
  • background-color-top-left, background-color-top-right, background-color-bottom-right and background-color-bottom-left CSS attributes are now accessible independently in CSS and CSSS!
  • behavior:plaintext/richtext:
    • support of "side-less" mode, width: max-intrinsic. See: /html_samples/richtext/plaintext-modes.htm
    • support overflow-x:none - breaking words that do not fit. See: /html_samples/richtext/plaintext-modes.htm
Builds: win32, win64 and mobile. 02-04-2009
  • Fix of grid units (N#) handling.  grid units used with flow:grid.
Builds: win32, win64 and mobile. Note: version number is not changed. 01-04-2009
  • Fix of interaction between behavior:sizer and behavior:dropdown;
  • Fix of popup (by HTMLayoutShowPopup()) on another popup element.
  • CSSS! Fix of recursive function calls. See: html_samples/csss!/loops.htm
  • Fix of width:auto calculation in tables. See: html_samples/stress/complex_tables.htm
  • Fix of possible AV in HTMLayoutSetElementInnerText16() when element has position: relative children.
  • behavior:richtext: fix of various issues including empty <td> representation.
  • Better handling of input in <input type=url>.
  • Fix of word wrapping in following text "(A), (B), (C)". It used to wrap between ')' and ','. Not anymore.
  • Fix of dynamic updates of elements having overflow:hidden; but no height:xxx set. Such elements are not stopping cascading measure. I suggest to use overflow:hidden with explicit declaration of height attribute.
  • Fix of popup appearance on multi-monitor system. Now it should appear on the monitor that contains anchor element.
  • Fix of Japanese IME caret positioning in some cases.
  • Fix of dib32 stretch in htmlayoutsdk/html_samples/back/alpha-back.htm
  • New length unit in CSS: dip. dip is so called Device Independent Pixel and is a logical unit, 1 dip == 1/96 inch. So it is one physical pixel on 96dpi screen. See /html_samples/csss!/dip-units.htm
  • New HTMLayoutSetEventRoot() API function, useful for things light lightbox dialogs. It allows to implement modal windowless dialogs similar to /sciter/sdk/samples/tests/basics/test-lightbox-dialog.html
  • New feature in CSSS! - ranges and therefore loops. Example:
    0..10 -> @(i) debug(i);
    will output numbers 0 ... 10. See: html_samples/csss!/loops.htm.
  • New feature in CSS - flow:"template". Documentation is coming, for a while see: /html_samples/flows/demo-at-w3c.htm . That is pretty much flow:grid but with different method of defining grid layout. Idea of template definitions is borrowed from this proposal http://www.w3.org/TR/css3-layout/ .
  • behavior:frame, new methods that are accessible from CSSS!: frame.load() and frame.clear(). See: htmlayoutsdk/html_samples/csss!/frame-loading.htm
  • Support for fore|background-repeat:repeat for animated images, see: htmlayoutsdk/html_samples/csss!/progress.htm
  • special handling in behavior:column-resizer for tables having overflow-x: auto|scroll - now column resizing works close to Windows ListView in LVS_REPORT mode.
Builds: win32, win64 and mobile. 15-03-2009
  • Better support of GB-18030;
  • Clipping on skin.exe alike surfaces (layered windows)
  • Support of rgba() colors (with alpha) in gradients. See: html_samples/css-plus/opacity.htm and skin.exe.
Builds: win32, win64 and mobile. 05-03-2009
  • support of background-color: argb(R,G,B,0.5) - that is semi-transparent colors of backgrounds and borders.
  • Better ClearType fonts rendering on surfaces with alpha, e.g. while blend animations. Not perfect but sufficient. See: skin.exe example for semi-transparent backgrounds and font rendering on them.
  • fixes;
  • new method string.substr(start, length), see csss! doc and  sdk/html_samples/csss!/textarea-method-calls.htm
  • various bug fixes including so called bottomless mode operation;
  • CSS, e.g. added support for compound selectors in its mini-CSS implementation. See file scapps/blocknote.net/config/richtext-editing.css - default CSS style used for WYSIWYG editing.
  • New .searchNext() and replaceBy() methods. See Ctrl-F/Ctrl-R implementation in scapps/blcoknote.net. File: scapps/blocknote.net/code/searchbar.tis
  • New .getStyleRules()/.getStyleRule() methods that allow to explore loaded CSS, start of mini CSSOM implementation.
Builds: win32, win64 and mobile. 13-02-2009
Fixes of:
  • PrintEx was broken in Now it works as before.
  • behavior:calendar and date - click on "today" does not work if the ctl is inside some table. In "days" view click on "year" should go to list of years but not months.
  • AV while handling IME messages in Japanese Windows.
  • behavior:richtext, problems with html parsing and table handling.
  • behavior:grid, row selection issues in multiselect mode.
  • Incorrect drawing of transparent htmlayout (html {background-color:transparent;}) when parent is RTL window.
  • Optimization of the case when elements with solid background are used with outline:glow.  See:  stress/grid-1000-outline-glow.htm - it used to be terribly slow. Now it works reasonably fast.
  • calc() function, enabled use of back/foreground-image-width/height() functions. Documentation added: htmlayoutsdk/doc/csss!-calc-function.htm
  • wtl/toolbar sample added. It demonstrates use of htmlayout as a toolbar on standard Windows rebar.
  • CSSS!, new global function length(str) has been added. It allows to convert/parse string to length value.
  • htmlayout_behavior.h, new items in enum BEHAVIOR_METHOD_IDENTIFIERS: GET_VALUE and SET_VALUE. These methods allow to implement value property of custom behaviors for CSSS! and methods like dom::element::get/set_value().
Builds: win32, win64 and mobile. 03-02-2009
Fixes of:
  • HTMLite completely broken in Now it works as before.
  • Sub-menu appearance delay is too large on popup menus. Fixed.
  • Wrong cursor over scrollbars in <textarea>,<plaintext> and <richtext>.
  • csss!, the calc() function. Enabled use of text-width(), next(), prev() and child(n) functions inside the calc(). Example: /html_samples/csss!/calc-dom.htm
Builds: win32, win64 and mobile. 01-02-2009
  • Animations are running in GUI thread again - changes in made in this respect were reverted back. Reason: animation may produce event generation and not all systems (e.g. Ruby runtime) are able to handle this.
  • Table column resizer moved to named behavior:column-resizer; This is made for the purpose of disabling this thing when it is not needed. ATTN: if you use behavior:grid with column resizing then you need to update your style with this:
    behavior:grid column-resizer;
  • Column resizing behavior by itself is updated - it works more predictable now, especially on cases when flex columns are involved.
Fixes of:
  • <textarea>/<plaintext> scrollbar handling;
  • Problem with animated non-transparent gifs rendering with scale factor <> 1.0;
  • current date outlining in <input type="date">;
  • behavior:file-icon clipping on scrollables on layred windows;
  • tabindex="-1" is not honored;
  • behavior:grid - incorrect handling of first Ctrl+Click.
Builds: win32, win64 and mobile. 25-01-2009
Fixes of:
  • VK_TAB sets focus on disabled elements.
  • Image rendering of repeat:stretch is very slow.
  • Wrong scrollbar positioning in <plaintext>/<richtext>.
  • Row height calculation in <table fixedlayout>.
  • Handling of WM_SIZE on HTMLayout window is slow on HTML32.htm sample.
  • CSS tint() function returns wrong values for system colors.
  • behavior: popup-selector, implementation of intrinsic value handling. It is compatible now with the <select>.
  • Animations are running in separate thread.
  • CSS, implementation of the calc() function. Expressions inside the calc() use a subset of the CSS Script language (CSSS!). See: /html_samples/csss!/calc-basic.htm and /html_samples/csss!/calc-ext.htm.
Builds: win32, win64 and mobile. 18-01-2009
  • Fix of <img height=100%> case.
  • Fix of hyperlink click handling inside <frame>.
  • Fix of Alt+Space handling in buttons.
  • Fix of "multiple context menus" issue.
  • Fix of z-index handling.
  • Fix of CSSS! next() and previous() functions.
  • MIDDLE_MOUSE_BUTTON processing.
  • Fix of children margin calculation in flow:h-flow containers.
  • Fix of position:relative elements inside fixed rows of scrollable table.
  • Fix of content dimensions calculation in scrollables.
  • Fix of outline rendering issues.
  • Stack overflow in /stress/grid-fixed-10000.htm
  • Fix of overflow: auto; and width:max-intrinsic bugs mentioned here: http://terrainformatica.com/forums/topic.php?id=799&page&replies=4
  • VC++ 2005 compatibility bug mentioned here: http://rsdn.ru/forum/message/3248250.1.aspx
  • htmlayout_dialog.hpp is *not* using now internal HTMLayoutDialog().
  • htmlayout_queue.hpp was updated. htmlayout::queue is now class-singleton.
  • Support of page-break-inside:avoid
Builds: win32, win64 and mobile. 24-12-2008 new build of with animation fixes. 23-12-2008
  • float:left|right layout calculations;
  • <img width=100%> layout calculation;
  • intrinsic width calculation of <table>s;
  • fix of D&D notifications, in particular for the drop:recycle case;
  • outline:glow on aposition:absolute issues;
  • scrolling in grids;
  • update of abs positioned elements, border/padding is not properly calculated in some circumstances.
  • CSSS! functions min(), max(), limit(). See /doc/csss!.htm
  • CSSS! animation, new and updated samples. I've made these samples modular - they use style set blocks that you can reuse:
    • csss!/animation-expand.htm
    • csss!/animation-expand-horz.htm
    • animations/sliding-bar-csss!.htm - equivalent of animations/sliding-bar.htm that use customizeable csss!
    • animations/h-sliding-bar-csss!.htm
  • Support of for=selector and at=parent-selector DOM and CSS attributes. Used when you have buttons bound with some other control. buttons with for/at do not steal the focus from master ctl. See: /html_samples/for-at/

Happy New Year, guys!

Builds: win32, win64 and mobile. 13-12-2008
  • htmlayout_queue.h has been updated. ATTN: Signature of queue::push() methods was changed.
  • CSSS! new event size-changed! is generated when size of element is changed. See: sdk/html_samples/csss!/size-changed.htm
Builds: win32, win64 and mobile. 06-12-2008
  • AV in HTMLayout HTMLayoutSelectElements/HTMLayoutSelectParents;
  • WM_KEYUP/VK_SPACE handling in hyperlinks and buttons;
  • behavior_expandable_list.cpp tunings.
  • Fix of { display:inline-block; width:XX%%; min-height:YYpx; }, details.
  • Fix of draggable:only-copy with drop:append|prepend;
  • Fix of <textarea>/<plaintext> parsing;
  • HTMLayoutSetElementHtml fix;
  • Fix of image clipping on 32bpp surface;
  • Fix on inline-block rendering;
  • Fix of dynamic changes of display:none for inline elements;
  • Fix of element::set_state(STATE_COLLAPSED) handling;
  • Fix of table tr {display:none} measurement;
  • Fix of behavior:history hyperlink handling;
  • Fix of behavior:select intrinsic height calculation;
  • Fix of behavior:date , set_value() in presence of @novalue;
  • htmlayout_dom.hpp improvements, in particular dom::element::find_all(vector<dom::element>& all, selector, ...) method.
Builds: win32, win64 and mobile. 30-11-2008
  • RTL fix, rendering of Niqqud.
  • Word breaks for ideographs. See: http://terrainformatica.com/forums/topic.php?id=734&page
  • Fix of value-changed! (CSSS!) generation for dropdown selects.
  • background-repeat:expand images rendering artefacts while scrolling on WS_EX_LAYRED windows.
  • Fix of style resolution inside frames.
  • New behavior:history - maintains navigation history in frames. Simply declare <frame history> or <frameset history> on top-level frame or frameset. See /html_samples/frames/frame.htm for an example. behavior:history supports ALT+LEFT/RIGHT keys for navigation through history. Use it when you need e.g. help micro browser kind of functionality.
  • AxHTMLayout.dll and project updates. DOM elements are now supporting events.
    Simply define Dim WithEvents elem as HTMLayoutCtl.Element in VB to handle DOM events there. vb sample was updated accordingly.
Builds: win32, win64 and mobile. 23-11-2008
  • fix of background-position: top left; parsing (is not standard version of background-position: left top; but this haapens e.g. on wikipedia.org and w3schools.com).
  • fix of background-image/display:inline rendering.
  • fix of color:indigo; parsing.
  • AxHTMLayout compatibility fixes.
  • <richtext>/<plaintext> use IE word breaking rules.
  • fixes in behavior:date and behavior:dropdown-select.
Builds: win32, win64 and mobile. 16-11-2008
  • more standard handling of float:left/right elements;
  • float number parsing in CSSS!;
  • behavior:textarea, Enter on last but one character in string - unexpected result;
  • IME handling, see: small ime bug.
Builds: win32, win64 and mobile. 11-11-2008
  • Mobile, cannot select items in <select> by stylus.
  • Scrollbar is loosing capture when mouse moves outside.
  • Printing, print output is using wrong scale when screen is set to higher DPI than normal.
  • All tabs in SDK source files were replaced by two spaces.
  • <option disabled> can be selected programmatically. But not from UI.
  • <object>/<param> elements are recognized now by the parser. Engine does not interpret this element except of sending HLN_CREATE_CONTROL for it thus its final handling is left to host application.
Builds: win32, win64 and mobile. 09-11-2008

RTL support: engine is using "Pretty Good Bidi Algorithm" now. It does not follow unicode.org rules but as its name stands is pretty good. RTL editing in <textarea>/<richtext> is not yet using it. But will.

Popup implementation is substantially redesigned to match better behavior of the OS.

  • Element <picture>, see: html_samples/goodies/picture.htm
    • that is intrinsically display:block element (<img> is display:inline-block element);
    • <picture> does not cache image data that is defined by src attribute thus it can be used in cases when you need e.g. show list of photos (images that are unique for the document).
  • Drag-n-drop:
    • :drop-marker state flag - is "on" for synthetic element that designates drop insertion point;
    • drag-n-drop from/to popup elements, in particular for menu elements. See : /html_samples/drag-n-drop/menu-dd.htm.
  • New ValueCompare() API function - compares two VALUEs.
  • New HTMLayoutTrackPopupAt() API function. Close to ::TrackPopupMenu() but for menus defined in HTML.
  • Various fixes of bugs reported on forums.
Builds: win32, win64 and mobile. 04-10-2008
  • Issues in internal update queue implementation - elements are not always updated properly.
  • flow:h-flow, incorrect children position calculation when they use margins.
  • New Value*** family of functions that replace previous implementation of VALUE/json::value. Thus VALUE structure can be used by other than C++ htmlayout wrappers - e.g. D, .NET and various incarnations of BASIC.
  • API functions ValueFromString and ValueToString allow to parse and emit JSON literals. These functions support so called JSON+ (extended) specification that I'll publish later. E.g. it supports color values in the form #RRGGBB (type T_INT/UT_COLOR), date time literals in the form 0dYYYY-MM-DD (type T_DATE/DT_HAS_DATE), currency (T_CURRENCY) as 1000$00 and other features. Consider JSON+ as a better alternative to INI files and XML in some circumstances.
  • behavior:form is implemented internally now. ATTN: in order to enable it you need to exclude behaviors/behavior_form.cpp file from your project. See sdk/html_samples/forms/form-submission.htm
    • The form behavior handles HTMLayoutControlGetValue(heForm)/HTMLayoutControlSetValue(heForm) calls specifically - value of the form is a VALUE of type T_MAP - collection of named values. Consider this as a method to gather multiple values in one call of dom::element::get_value(). Forms may have sub-forms when used in application. For external submission inner forms are prohibited.
    • behavior:form generates FORM_SUBMIT and FORM_RESET events passing form data in BEHAVIOR_EVENT_PARAMS::data field.
    • You can use the form for submission data to web sites or internally (you need to handle and consume FORM_SUBMIT event in this case).
Builds: win32, win64 and mobile. 20-09-2008
  • Wrong rendering background-repeat:stretch + background-image-transform:... combination.
  • image-transform does not work on layered (transparent) window.
  • Images are not clipped in scrollable areas on layered (transparent) window.
  • Massive updates of rows in tables cause significant delays (high CPU).
  • Context menus on popup elements are not working.
  • Fix of MOUSE_WHEEL handling on popup menus with scrollbars.
  • Added support of :incomplete flag in <frame> elements (behavior:frame) thus:
    • frame:busy matches frame when it is downloading document;
    • frame:not(:busy):incomplete matches frame after it failed to download the document;
Builds: win32, win64 and mobile. 13-09-2008
  • :hover handling, see: http://terrainformatica.com/forums/topic.php?id=659&page&replies=1
  • Clipboard was not emptied before putting there text in htmlayout.
  • pasting of multi-line text in <textarea>, last line is messed.
  • Problems with MOUSE_DCLICK handling in <select>.
  • Multiple issues with popup menus. Note: html_samples/menu/std-menu.css has been updated.
  • CSSS!: blind conversion of attributes from strings. Use int(elem.attribute) and float(elem.attribute) conversion function to convert explicitly values of attributes.
  • Fixes in PrintEx.  Note: /htmlayoutsdk/mfc/MFCMDIPrintPreview was updated to avoid unnessesary remeasures of the document.
  • Bug in <select> when it contains <options> (so dropdown tree view). See (new) sdk/forms/dropdown-select-tree.htm sample.
  • <include> inside <pre> does not work.
  • Wrong rendering of system theme:name images on WS_EX_LAYERED windows (e.g. skin.exe ). Fix provided by Dmitrii Yakimov - The Screw Master :)
  • support of dom::editbox.selected_text() method for <input type=text> elements.
  • support of column resizing in non fixed tables. E.g. <table fixedrows=N> support columns resizing too.
  • Themes: added theme:column-header-normal, theme:column-header-hover, theme:column-header-pressed images. See: /forms/listview.htm
  • New API function HTMLayoutSetDataLoader - it allows to register "primordial" sycnhronous loader of resources. That loader can be used for loading local machine resources (res: or file:) including the ones used in Master CSS. See: /wtl/browse.cpp for its example.
  • New CSS pseudo-classes:
    • h-smile core specific:
      • :has-child-of-type(T) - element has exactly one child of type T among other children;
      • :has-children-of-type(T) - element has one or more children of type T among other children;
    • Standard, CSS3 defined:
      • :only-child - the element is the only child of its parent;
      • :only-of-type - the element has no other children of its type in its parent;
Introduction of :has-children-of-type(T) selector makes use of <options> element unnecessary. Hierarchical options can be represented now as:
<option>Sub tree caption
<option>Sub option 1</option>
<option>Sub option 2</option>
By using selectors like option:has-children-of-type(option) engine is capable to distinguish sub-tree nodes from leaf nodes without using artificial <options> element. See: htmlayoutsdk/html_samples/forms/tree-views.htm for an example.

Builds: win32, win64 and mobile. 01-09-2008
  • Incorrect rendering of elements with style { text-indent:XXX; text-align:justify; }
  • Impossible to redefine font styling for tooltip/popup elements. Now you can define styling of tooltips of by using follwong selectors:
    • popup[role="tooltip"] - for ordinary tooltips that appear if title attribute defined for some element.
    • popup[role="overflow-tooltip"] - for tooltips that appear for elements with text-overflow:ellipsis.
Builds: win32, win64 and mobile. 30-08-2008
  • Incorrect color rendering of transparent bitmaps on WS_EX_LAYRED windows (with transparency).
  • AV in printex when document contains animated images.
  • AV when copied text is pasted in comctl32.dll controls.
Builds: win32, win64 and mobile. 24-08-2008
  • SVG images rendered upside-down.
  • Wrong renedering in /html_samples/drag-n-drop/tabs-reordering.htm after drag-n-drop.
  • Stress tests, condition "not enough GDI resources". AV in some circumstances.
  • WS_EX_LAYERED window (skin.exe alike)
    • is not updated after loading new document.
    • wrong rendering of background-repeat: repeat[-x/y] images. See discussion.
  • Animation module, various problems.
  • PrintEx, wrong output when height:100%% used with overflow:hidden;
  • wrong detection of td:hover in tables with fixed rows (in some cases).
  • CSSS! support of url value type. Sample: self::background-image = url(images/brick.png);
Builds: win32, win64 and mobile. 10-08-2008
  • Pasting of long text in <input type=text> when no maxlength set yields to AV after some editing actions in that field.
  • Fix of scrollbar rendering in behavior:richtext/textarea.
  • htmlayoutsdk/html_samples/menu/context-menu.htm, wrong rendering of popup menus.
  • "Cut" item in context menu is enabled in readonly inputs.
Builds: win32, win64 and mobile. 03-08-2008
  • Wrong mouse position detection for position:fixed elements.
  • Outline is not rendered in header cells of scrollable table.
  • Wrong initialization of <select size=1> when it is on tab.
  • RTL, wrong position of popup element when it is need to be shown on top of anchor element.
  • Wrong text-overflow:ellipsis rendering on popups.
  • Get source HTML generation inserts line-feeds after DOM modifications.
  • API function: HTMLayoutMoveElement / dom::element::move(x,y) used for custom implementations of Drag-n-Drop methods. When element is moved outside of HTMLayout window this method will create popup window for that element. For the demo see Sciter sample sciter-sdk/samples/ideas/moveable-windows/child-windows.htm (in Sciter).
  • New dom::element::clear_all_style_attributes() - will clear all style attributes set in runtime by dom::element::set_style_attribute() method.
Builds: win32, win64 and mobile. 27-07-2008


  • behavior:calendar - week days has to be rendererd with three letter abbreviations.
  • Problems of smooth scroll of transparent containers on popups.
  • Wrong computation of intrinsic dimensions of <img> elements.
  • Wrong measurement of <table overflow:auto> when such a table is updated dynamically.
  • Wrong measurement of <table fixedlayout> when first row is hidden.
  • behavior:calendar should use localized string for "Today" on non-English OS.
  • Cannot resize table column when h-scrollbar is present and in some circumstances.
  • printex - scrollbar appears on the root element while printing.
  • browse.exe -  "Probe" mode - reports class names of dom elements.
Builds: win32, win64 and mobile. 19-07-2008
  • Tooltips do not go away in some circumstances.
  • <frameset dir=rtl> does not work properly.
  • browse.exe, recent files list and non-ascii named files caused problems #if !defined(UNICODE).
  • icon is not rendered when image placeholder is less than smallest image in the icon.
  • default SET_FOCUS event generation happens now after MOUSE_DOWN event.
  • New implementation of behavior:calendar and so <input type="date"> and <input type="calendar">. Now it behaves close to the one in Vista. Implementation provided by Dmitriy Yakimov from ActiveKitten
  • API functions:
    • HTMLayoutSelectParentW - widechar counterpart of HTMLayoutSelectParent
    • HTMLayoutSelectElementsW - widechar counterpart of HTMLayoutSelectElements
      dom::element was updated accordingly.
  • CSSS!, new function element.text-width("string") - returns width of the string in pixels measured using current font of the element. See: /html_samples/csss!/text-width.htm
Builds: win32, win64 and mobile. 13-07-2008
  • drawing of position:relative inside scrollables.
  • drawing of position:absolute children of blocks with opacity (opacity < 1.0).
  • background: url(...) repeat;  rendering while scrolling.
  • CSSS!, x-view() / y-view() and friends return wrong coordinates.
  • Support of APNG - better alternative of animated GIFs. Examples are in: /html_samples/animated-png/ folder.
  • Support of .ICO (windows icons). Example is in: /html_samples/goodies/icon.htm
Builds: win32, win64 and mobile. 06-07-2008
  • AV when element::set_text() or self:value = "..." is called for non-text container element.
  • :hover flag handling after set_html and other mutating methods.
  • dom::element::swap optimization for the case when elements are "twins" - children of the same parent and are elements of the same type.
  • Updates of wtl/browse.exe by YangQi @ Maxthon (many thanks!):
    1. toolbar has been updated:
      1. Open a new window
      2. Show recent file list
      3. View Source Code
      4. Go back
      5. Go forward
      6. refresh/reload
    2. When load a file, the caption of the browser will show the file name, and the address bar will show the full file name.
    3. The browser will be shown at the position where it was closed the last time.
Builds: win32, win64 and mobile. 01-07-2008
  • Various fixes in the updater mechanism:
    1. scrollbar rendering when scrollables are getting updated.
    2. element.scroll_to_view() is forcing updater to update. Needed when scroll_to_view (ensure_vidsible) is called for just added items.
  • Fix of stack overflow when CSS rule:  * { position:fixed } is used.  Idea of it is hidden from me but stack overflow is not good.
  • Fix of infinite loop when CSSS! is running assigned!: handlers that are causing assigned! to be invoked again.
  • refresh issue with focus on/off states.
  • html emitter, _service tag should not be emitted.
  • AV in root.update(true) call in some circumstances.
  • Fix of the case when </style> is the very last token in input file.
  • Fix of width:auto calculation for popup elements.
  • CSSS!: string.length, string.toUpper() and string.toLower() attributes and methods.
  • CSSS!: element.show-popup() method, see csss!/show-popup.htm. Method allows to show popups in various ways.
  • CSSS! is capabale now to call xcalls - so called scripting methods of intrinsic behaviors, see csss!/behavior-method-calls.htm
  • CSSS! animation-start!, animation-tick! and animation-end! action handlers. See CSSS:DOM element events and samples csss!/animation-***.htm. Animation uses so called multimedia handlers on Windows that are more granular that ordinary GUI timers (WM_TIMER, etc).  
  • API, new functions:
    1. BOOL HLAPI HTMLayoutUpdateWindow(HWND hwnd )
      This function executes following sequence:
      1. Execites all pending (posted) events (including CSSS: assigned!).
      2. Exectues batch update of all pending DOM mutations.
      3. Calls ::UpdateWindow();
    2. BOOL HLAPI HTMLiteUpdateView(HTMLITE hlite )
      This function executes following sequence:
      1. Execites all pending (posted) events (including CSSS: assigned!).
      2. Exectues batch update of all pending DOM mutations.
  • behavior:menu-bar, is now handles ACTIVATE_CHILD and so has support of @accesskey for menu items (<li> elements) - descendants of menu-bar.
Builds: win32, win64 and mobile. 14-06-2008
  • AV in root.update(true);
  • input type=number, rendering of spin buttons;
  • fix of /stress/table-10000.htm rendering - second was not rendered at all;
  • HTML parsing, fix of <pre> parsing;
  • Various fixes in the updater - that is about dynamic updates.
  • Fix of intinsic styles for <th> elements.
  • CSS:content parsing for locales different from default.
  • <select editable novalue="something"> case handling.
  • stack overflow when update() is called from behavior::on_size() handler.
  • selector specificity calculation fix, see override imported css topic.
  • CSS attributes: background-offset[-top|left|right|bottom] - offset from padding edge of area of background rendering;
  • CSS attributes: foreground-offset[-top|left|right|bottom] - offset from padding edge of area of foreground image rendering;
  • CSSS!:
    • element.scroll-to-view() method. See DOM element in CSSS!
    • is-on-icon() global function for active-on() and double-click() events.
    • sample /csss!/animation-fade.htm
  • Initial implementation of CSS support in the <richtext>. Styles of the content are defined as an external CSS file/resource and are attached to the content through the content-style="url of the css file" attribute. content style CSS can contain only rules with simple selectors: tag[.class] { .... }.
Redesign of HTMLayoutUpdateElement(he, TRUE) handling, now and beyound it will not cause immediate updates - it rather places the element into the batch update queue for later updates. Use HTMLayoutUpdateElementEx(,REDRAW_NOW) if you need forced update. In principle calls of HTMLayoutUpdateElement(Ex) are optional now. While handling calls of mutating DOM methods (e.g. HTMLayoutSetAttribute) engine will place affected element in the queue for batch updates.
Builds: win32, win64 and mobile. 01-06-2008
  • Fix of outline rendering when scrollables are present.
  • HTMLiteSetDataReady signature fix.
  • Multiple fixes in internal batch updating mechanism implementation.
  • Fix of <input type=date value="....."> initialization.
  • Fix of <input type=number> attributes interpretation.
  • Fix of backspace handling in richtext|plaintext.
  • Fix of dom::editbox::select() handling in plaintext.
  • Fix of rendering of span backgrounds in RTL texts.
  • New, keyboard handling in CSSS! Samples: csss!/keyboard-handling.htm, csss!/grid-with-collapsibles.htm.
  • New, /bin64/htmlayout.dll - win64 version of the DLL.

Mobile version was also updated in this build. 22-05-2008
  • New, Support of resizeable columns in <table fixedlayout>. Use min/max-width to establish sizing constraints.
  • New, support of "auto-height" mode in <richtext> (<plaintext>, <textarea>). Use richtext { height:min-intrinsic } to set this mode. Sample: sdk/html_samples/forms/plaintext.htm  
  • New, CSSS!, support of sort function for sets of elements returned by $() function. For an example of how to define sortable grid using custom function defined in CSSS! see sdk/html_samples/csss!/grid-sortable.htm
  • Fix of a + b selector when b is getting position:absolute|fixed style.
  • New folder sdk/html_samples/optimizations/. It is dedicated to samples that explain optimization technics.
  • Update: Code under HTMLayoutUpdateElement[Ex] function was significantly redesigned. In short: call of HTMLayoutUpdateElement[Ex] is optional now. All changes of DOM (SetState, SetAttribute, SetStyleAttribute, etc) are getting queued and batch processed as a whole. That allowed to increase processing speed especially in complex updates. 13-05-2008
  • Fix of random AV errors while running CSSS! scripts.
  • Fix of signature of HTMLiteSetDataReadyAsync() function. url is of type LPCWSTR now.
  • Fix of back/forground-image-transformation attribute interpretation. Note that there is also
    colorize(color) transformation function. It calculates luminance of each pixel and applies it to the color. 11-05-2008
  • Fix/Update of flow:grid layout algorithm - better handling of spanned cells.
  • RTL Fix: HOME/END key handling in behavior:edit for RTL input elements.

New major feature: support of CSSS! - css scripting language in h-smile core.

CSSS! allows to implement lightweight event handlers (behavioral styles) directly in CSS. I would recommend to scan samples in html_samples/csss!/ folder for the ideas. CSSS! implemented as a simple stack based virtual machine that executes bytecodes. Compilation happens at CSS parsing.

CSSS! can be extended by code in event_handler. There is a new virtual method:
virtual BOOL on_script_call(HELEMENT he, LPCSTR name, UINT argc, json::value* argv, json::value& retval);
that is used for implementation of custom methods for CSSS!.
See: behavior_chart.cpp and html_samples/csss!/chart-custom-methods.htm for how to do this.

Please note: CSSS! is not intended to replace native behaviors. CSSS! and behaviors are extensions of each other. Use CSSS! when creation of separate behavior is too much.

Formal (well, almost) definition of CSSS! - css scripting language looks probably complicated but that is not so. It is very simple in fact.

Further CSSS! related directions:

  • Support of calc() feature from CSS3 using the same interpretting engine;
  • Support of media queries;
  • Better support of customizeable animations.

log file of 3.2.*.* series

log file of versions prior


HTMLayout distribution is not available. Use Sciter Engine instead.