Stepbar — version history
The step trail of a wizard: the steps passed, the current one and those to come, horizontal or vertical. Introduced in 2.0.
4.0 — October 2026 #
New #
[symbol=name]tag in rich text: eighteen monochrome glyphs that follow the text colour (clock,location,person,calendar,phone,mail,warning…); an unknown name stays as text.STATE_WARNING: a step passed with something to check (amber bullet with an exclamation mark).STATE_SKIPPED: a step the user went past (hollow bullet with a dashed ring and a dash).NAV_VISITED: every step already reached stays clickable (except the current one), also ahead of the current step after your code went back.
Fixed #
- Setting
ii_currentraisesue_step_changedwhen the bar moves, as the documentation promised. - An
ii_currentset before the steps exist is kept and applied as soon as the step exists (it fell back to the first step). of_previousfrom "all done", after a step was removed, starts again from the last step.- Only one step is "current" for a screen reader and for tabbing, even when another step is forced to
STATE_CURRENT. scrollmode: the current step is brought into view, right-to-left included; in right-to-left reading, the Left and Right arrows swap.- In the demo version, the tab stop and the arrows no longer target a step beyond the displayed limit.
- Compacted bar (
OVERFLOW_AUTO): the label stays on the current step even when its state is forced to error, and a step forced toSTATE_CURRENTno longer gets one. OVERFLOW_SHRINK: a label stays on one line and ends with "…" instead of wrapping onto several lines cut mid-word.POSITION_BOTTOM: the second line (is_description) goes under the label, above the dot.- Hovering a disabled or out-of-reach step no longer lights its hover colour: it will not answer the click.
- The colours and tooltip of a removed step (
of_remove_step,of_clear_steps) no longer come back on a step re-created under the same key; anis_stateset on an unknown key no longer waits for the step that will be born under that name. NAV_NONE: each step's state is still announced to a screen reader.- A disabled step is readable in every light theme (at least 3:1 contrast); the halo of the current step and the error state follow the theme, dark mode included.
- Rich text: a closing tag closes its own tag only (
[b]A[i]B[/b]CleavesCin italics only), a]escaped byof_escape_markupright after a tag no longer breaks the formatting around it, and[picture=…]accepts a data URI and a file name containing a comma. - Reading back
il_back_color_hoveroril_text_color_hoverof an item never coloured returns-1(the theme's colour), like the other item colours (it returned0, black). - Enter or Esc pressed in the component, when it does not use them, goes back to the window: the PowerBuilder
DefaultorCancelCommandButtonfires (the key was lost). - A disabled component (
ib_enabled = false) leaves the Tab order; enabled again (or afterof_reset), it takes its place back. - With no language chosen by the application, the component announces English to screen readers (it announced French).
is_theme_style,is_theme_modeandil_theme_accentread back the style and mode shown and the component's own accent (-1when it has none); an unknown or badly written value is ignored instead of leaving the component without a theme, and an axis left empty follows the application's theme.- The application accent (
PBT_SetDefaultThemeAccent) survives a change of theme, is followed as long as the component has no accent of its own, and repaints everything derived from it (hover, pressed, selections); Windows high contrast is supported.
Behavior changes #
- The current step is tracked by its identity, no longer by its rank: removing, inserting or moving a step before it no longer changes the current step; removing the current step moves to the next reachable one and raises
ue_step_changed. - "All done" is anchored on the last step: a step added after it becomes the current step and raises
ue_step_changed; inserted before, nothing changes. of_clear_stepsstarts again on the first step.of_add_stepandof_insert_stepreturn-5on an empty key, a key already taken or one containing/or|;of_move_stepandof_remove_stepreturn-5on an unknown key.of_insert_step(…, 0)inserts at the head (it appended at the end);of_add_stepstill appends at the end.- A handle kept after
of_remove_steporof_clear_stepsis released:IsValid()returnsfalse. of_countreturns alongandof_keys_attakes alongrank.- Rich text: a markup image on a network share (
[picture=\\server\share\x.png]) is no longer shown: go throughof_icon(), which embeds it. - See the 3 → 4 migration guide, sections 11.3 and 11.23.
3.0 — September 2026 #
New #
of_set_property,of_get_propertyandof_component_name: drive a property by its name (settings screen, saved configuration).
Fixed #
- A step's colours read back through its handle returned
0(black), set or not: they return the colour that was set, and-1for the theme's. - Rich text: a
[word]that is not a tag is shown as typed (report[final].pdf) instead of disappearing with the rest of the text.
Behavior changes #
- The positions of
of_insert_stepandof_move_stepcount from 1, like the events (2 → 3 migration guide, section 10.1).
2.0 — September 2026 #
New #
- First release: steps by key (
of_add_step,of_insert_step,of_move_step,of_remove_step,of_clear_steps), with an icon in place of the rank and a second line (is_description). ii_currentplaces the bar (number of steps + 1 = all done);of_nextandof_previousmove on, skipping hidden and disabled steps.- A click reports (
ue_step_clicked) without moving the bar: the application decides;ue_step_changedgives the step left and the step reached, by rank and by key. is_navigation_mode(NAV_FREE,NAV_BACKWARD,NAV_NONE) filters what a click can reach;is_overflow_mode(OVERFLOW_AUTO,OVERFLOW_SCROLL,OVERFLOW_SHRINK) handles a lack of room.is_position: horizontal trail (POSITION_TOP,POSITION_BOTTOM) or vertical (POSITION_START,POSITION_END, logical in right-to-left).- Step handle
n_pbt_stepbar_step(of_step(key)):is_state(forced or computed state),is_text,is_description,is_image,ib_enabled,ib_visible. - A single tab stop: arrows, Home and End move the focus, Enter or Space report the click.
ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.of_count,of_keys_atandof_has: what the component holds can be asked, at every level.