PBToolboxAI AcheterBuyKaufenAcquistaComprarComprar

← Historique de tous les composants← History of every component← Versionsverlauf aller Komponenten← Cronologia di tutti i componenti← Historial de todos los componentes← Histórico de todos os componentes

L'historique des versions est publié en anglais.Version history is published in English.Der Versionsverlauf wird auf Englisch veröffentlicht.La cronologia delle versioni è pubblicata in inglese.El historial de versiones se publica en inglés.O histórico de versões é publicado em inglês.

Breadcrumb — version history

u_pbt_breadcrumb · Introduced in 3.0

The breadcrumb bar: where the user is, and a way back to any level in one click. Introduced in 3.0.

4.0 — October 2026 #

New #

  • of_add_children(as_keys, as_child_keys[], as_texts[] {, as_images[]}) adds a whole row of sibling branches in one call: a folder with 30,000 sub-folders no longer takes more than 20 seconds to open its menu.
  • of_has(as_keys) accepts an address (or a bare key carried by a single segment) and searches among the segments.
  • Every native menu of the component (like every native menu of the library) lets the user type the first letters of an entry to jump to it, read through the keyboard layout; a menu with more than 500 entries only draws what is visible.
  • OVERFLOW_SCROLL: the mouse wheel slides the strip, reversed in right-to-left reading.
  • The chevron that opens a menu and the "…" say to a screen reader that they open a menu, and whether it is open.
  • n_pbt_utils.of_dir_folders(as_dir, ref as_names[]) lists the sub-folders of a folder as File Explorer shows them, sorted, in one pass, without changing the application's current folder; n_pbt_utils.of_dir_has_subfolders(as_dir, ab_include_hidden) can also count hidden and system folders and junctions.
  • [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.

Fixed #

  • Reading a handle at a deep address (of_item("a/b/c").is_text) reads that segment; it read the last level only, and came back empty when the key was repeated.
  • ii_max_visible = 1 no longer folds away the current location.
  • Width-driven folding folds the middle first; the current location is only shortened as a last resort (down to one letter and "…"), then the first segment, and nothing overflows the bar any more, even a very narrow one.
  • OVERFLOW_SHRINK no longer caps every label at 12 characters when there is room: the middle gives way first, the first segment and the current location last.
  • Folding is measured again when the content changes width (separator, a chevron that appears or disappears, a segment enabled or disabled).
  • A disabled segment is inert as a whole: its chevron no longer opens and it no longer accepts a drop.
  • Enter on a segment clicks only that segment (it also pressed the window's default button); the focus stays on the same segment across a redraw.
  • A redraw during typing no longer throws away the text being typed in the path field.
  • The chevron no longer stays lit after an empty answer to ue_children_needed, and a menu answer that arrives after the trail was rebuilt is ignored.
  • A file drop (ib_allow_drop) raises ue_drop_files alone (no more ue_drag_leave before it), with full paths beyond 260 characters; of_reset removes the drop target (ib_allow_drop back to false).
  • A right-click on a segment raises only ue_item_rclicked, no longer a second, component-level event.
  • n_pbt_utils.of_dir_has_subfolders no longer counts hidden or system folders and junctions by default (a trail would show a chevron with nothing visible behind it), and reads long paths.
  • The colours and tooltips of a segment follow it when segments are inserted or removed, leave with it when it is removed, and are shared by its bare key and its address.
  • In right-to-left reading, native menus hang from the right edge of their title and cascades open to the left (Left opens, Right closes).
  • Reading back il_back_color_hover or il_text_color_hover of an item never coloured returns -1 (the theme's colour), like the other item colours (it returned 0, black).
  • Enter or Esc pressed in the component, when it does not use them, goes back to the window: the PowerBuilder Default or Cancel CommandButton fires (the key was lost).
  • A disabled component (ib_enabled = false) leaves the Tab order; enabled again (or after of_reset), it takes its place back.
  • A language set by PBT_SetLanguage applies from the very next order given to the component: a text of an event raised by that order no longer comes in the old language.
  • With no language chosen by the application, the component announces English to screen readers (it announced French).
  • is_theme_style, is_theme_mode and il_theme_accent read back the style and mode shown and the component's own accent (-1 when 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.
  • Rich text: a closing tag closes its own tag only ([b]A[i]B[/b]C leaves C in italics only), a ] escaped by of_escape_markup right after a tag no longer breaks the formatting around it, and [picture=…] accepts a data URI and a file name containing a comma.

Behavior changes #

  • of_path() returns the address of the current location, whole — a hidden segment stays in it, and so do the first segments cut in the demo version: of_truncate(of_path()) lands right, and the path field starts from the same address.
  • of_keys_at(n) returns the segment's address (it returned the bare key).
  • of_truncate, of_remove_item, of_clear_children, of_remove_child on an unknown address or an ambiguous bare key, of_add_child under a missing segment or on a branch already taken, and of_add_item / of_insert_item on an address that would land elsewhere return -5 (they returned 0 and did nothing).
  • A handle kept after of_clear, of_remove_item, of_truncate, of_clear_children or of_remove_child is released (IsValid() returns false); after an of_insert_item in the middle of the trail, ask again for the handles of the segments that follow.
  • of_edit() without ib_editable returns -4 (it returned 0 and nothing opened).
  • The path field: leaving it without changing anything, or switching to another application while typing, no longer raises ue_path_entered (the text typed is kept); leaving it for another control of the application with a modified text validates it, like Enter.
  • of_count returns a long and of_keys_at takes a long rank.
  • See the 3 → 4 migration guide, sections 11.3, 11.12 and 11.41.
  • Rich text: a markup image on a network share ([picture=\\server\share\x.png]) is no longer shown: go through of_icon(), which embeds it.

3.0 — September 2026 #

New #

  • First release: segments by key or address (of_add_item, of_insert_item, of_remove_item, of_clear), and of_truncate, the gesture a breadcrumb exists for. A click reports (ue_item_clicked with the full address) without cutting the trail: the application decides.
  • Sibling menus: of_add_child puts branches under a segment, whose separator becomes a chevron; ue_child_clicked returns the chosen branch's address, ready to go back into of_add_item. Branch handle n_pbt_breadcrumb_child (of_child): text, icon, enabled, visible.
  • Branches on demand: a segment marked ib_has_children shows its chevron with nothing behind it; opening it raises ue_children_needed, where the branches are added, and the menu opens when the event returns.
  • Typing the path: ib_editable (click on the empty part of the bar, F2 or of_edit()), field pre-filled with the address, ue_path_entered on Enter; ii_edit_skip keeps the first N segments out of the field and puts them back in front of the text typed.
  • Long paths: is_overflow_mode (OVERFLOW_COLLAPSE into a "…" menu, OVERFLOW_SCROLL following the current location, OVERFLOW_SHRINK) and ii_max_visible; is_separator flips by itself in right-to-left languages.
  • Files dropped from File Explorer on a segment (ib_allow_drop, ue_drop_files(as_keys, as_files[])), the targeted segment lighting up during the drag.
  • The bar reports the height it needs (ue_auto_height); a segment with no text shows its icon alone; segment handle n_pbt_breadcrumb_item (of_item): text, icon, enabled, visible, ib_has_children.
  • Keyboard: arrows between segments, Down arrow opens the branches.
  • n_pbt_utils.of_dir_has_subfolders(as_dir) answers "at least one sub-folder?" without listing the folder, to mark a segment without reading it.
  • ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.
  • of_set_property, of_get_property and of_component_name: drive a property by its name (settings screen, saved configuration).
  • of_count, of_keys_at and of_has: what the component holds can be asked, at every level.