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.

Dock container — version history

u_pbt_dockcontainer · Introduced in 1.0

Dockable panels in the style of Visual Studio — drag and drop, tabbed stacks, splitters, floating windows, auto-hide — each one hosting a real PowerBuilder control, with saving and restoring of the layout. Introduced in 1.0.

4.0 — October 2026 #

New #

  • The layout (of_get_layout, ue_layout_changed, of_set_layout) remembers floating panels and the position of their window: on restore they reopen at the same place, brought back onto an existing screen if the second monitor is gone. Moving or resizing a floating window raises ue_layout_changed.
  • of_select_panel shows the panel wherever it is: on a panel collapsed into a side tab, its flyout slides in; on a floating panel, its window comes to the front.
  • An unpinned panel (ib_pinned = false) now opens on hover of its side tab (after 400 ms) as well as on click; opened on hover, it collapses when the mouse leaves it without the focus being inside, opened by a click it stays.
  • ue_layout_changed is also raised when a panel is closed, hidden, selected or renamed, and when the main panel changes: a layout saved in this event no longer forgets a closed panel or the active tab.
  • Dragging a splitter or a tab is cancelled by Esc (or when the window loses the focus): nothing moves.
  • The tooltips of the flyout buttons follow the application language.
  • [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.
  • A double click on a panel header or on a tab detaches the panel into a floating window; a double click on the floating window's title bar docks it back in its place.
  • A right click on a panel header or on a tab opens a menu: Float, Close, Close others (the other closable panels of the same group).
  • ib_veto_close and ue_panel_closing(as_key): return false to keep a panel open (unsaved work) — asked before its close button, the panel menu, a sliding panel's close button and of_close_panel; off by default.
  • of_close_panel(as_key): closes a panel from your code like its close button; returns -4 when ue_panel_closing refuses, -5 for an unknown key, the main panel, a hidden panel or one that cannot close.
  • n_pbt_dock_panel.ib_closable: whether the user can close the panel, changed at any time (its close buttons and the menu follow).

Fixed #

  • of_add_panel refuses (-5) an unknown as_relative_to, a control that is already hosted, a key containing / or |, an unknown position and POSITION_STACK on the main panel; the control is then left untouched. In 3.0 the panel was docked against the root, hosted twice, or stayed invisible.
  • of_move_panel returns -5 for an unknown target or position and for a stack involving the main panel (the main panel stacked on another one made that one invisible).
  • of_float_panel returns -5 for the main panel or a hidden panel, and of_select_panel for a hidden panel (they returned 0 and did nothing).
  • of_remove_panel and of_reset give the control back at its place, with its size and the visibility it had before of_add_panel (it came back hidden, at the size of the dock). The handle of the removed panel is freed.
  • is_main set before of_add_panel is kept and applied when the panel is added; is_main = "" removes the main panel; a panel that becomes the main one leaves its stack, and its neighbors stay visible. A layout that names no main panel keeps the current one.
  • of_set_layout with a layout that knows none of the panels no longer empties the dock (the panels stay, placed next to the others), and returns -5 on a text that is not a layout.
  • A standard PowerBuilder control (MultiLineEdit, button…) in a floating panel receives its notifications again (modified, clicked, colors).
  • Hiding a floating panel (ib_visible = false) closes its window; shown again, it comes back docked at its place. The floating window has the size of the panel (its title bar no longer eats into it), stays on screen, displays its title as text, keeps the focus of the hosted control, and hides when the dock's window is no longer visible.
  • A tab dropped on an outer edge guide goes to that edge.
  • Clicking the tab or header of another group closes the open flyout.
  • Clicking the tab of the panel that is already active no longer raises ue_panel_selected: the event reports a change.
  • A splitter moved from the keyboard starts from its displayed position (the first arrow made it jump to 50%); only the left mouse button drags it.
  • ib_pinned reads back right after a move; the keyboard focus stays on the tab or header button after a refresh.
  • A panel added without a title reads back is_title = "" (the tab shows its key); the main panel shows or drops its header according to its title.
  • The "(N)" counter of of_notify_panel no longer reappears once on a panel that becomes visible again.
  • Colors: the active panel of a stack keeps its colors (il_back_color, il_text_color) instead of taking the accent color; header icons, notification badge and hovered side tabs are readable in every theme.
  • Right-to-left reading: the arrows of the tab strip are reversed.
  • Two docks open: opening the flyout of one closes the flyout of the other.
  • 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.
  • 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.

Behavior changes #

  • The new refusals (-5) of of_add_panel, of_move_panel, of_float_panel and of_select_panel should be tested where your keys or positions come from data — see "Migrating from 3.0 to 4.0", section 11.19.
  • A call from your code (of_select_panel, of_float_panel, ib_pinned) raises the same event as the matching user gesture (ue_panel_selected, ue_panel_floated, ue_panel_pinned), as SelectTab does in PowerBuilder.
  • of_count returns a long and of_keys_at takes a long rank.
  • 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 #

  • of_set_property, of_get_property and of_component_name: drive a property by its name (settings screen, saved configuration).

Fixed #

  • A hovered tab and the notification badge stay readable in the Office 2007 theme, light and dark.
  • A colour read back through a handle (il_back_color, il_text_color…) returns the colour that was set, and -1 for the theme's (it returned 0, black).
  • 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 #

  • of_move_panel(key, target, position, index) counts the place from 1; 0 or less puts the panel last (in 2.0: 0 = first, -1 = last) — see "Migrating from 2.0 to 3.0".

2.0 — September 2026 #

New #

  • of_count, of_keys_at and of_has: the panels held by the dock are asked of the component.
  • ue_script_error: a script error in the page reaches PowerBuilder with its message instead of being lost.

Fixed #

  • of_get_layout returned an empty string: it returns the layout, ready to be saved.
  • The panel pinned on the left keeps its right border above 100% display scaling.
  • Hovering a tab also colors its text (in Office 2007 dark, the text stayed light gray on amber).

Behavior changes #

  • The handle of a panel is obtained with of_panel(as_key) (instead of of_item(as_id)) — see "Migrating from 1.0 to 2.0".

1.0 — August 2026 #

New #

  • Panels added with of_add_panel, each hosting a real PowerBuilder control (user object, DataWindow, another component); docking at the start, at the end, above, below or stacked as tabs (POSITION_*), resizable splitters.
  • Rearranged by the user with drag and drop, or by code (of_move_panel); a main panel (is_main) that can be neither detached nor hidden.
  • Floating windows (of_float_panel), auto-hide into side tabs (ib_pinned), closable or non-closable panels.
  • Saving and restoring the layout (of_get_layout, of_set_layout, ue_layout_changed).
  • Badge for unseen content on a background panel (of_notify_panel, of_clear_notify); short title (is_short_title), header and border colors per panel.
  • Keyboard on tabs and splitters; events ue_panel_selected, ue_panel_closed, ue_panel_pinned, ue_panel_floated, ue_panel_docked.