Skip to content

Add tab ordering to the extensible group UI (table)

Extensible group items are displayed in a Qt table widget instance with one row for each subgroup. Previously, the table widget would not respond to tab key input (typically used for navigating between cells). This has been corrected for most mainstream cases: double items, integer items, string items, and reference items (dropdown box format). Tab-ordering also works with the discrete and expression versions of value items.

There are some cases that have not yet been implemented. The overall tab order might not be consistently preserved between the table widget and other items before and after it in the attribute editor. For optional items, the checkbox is not reliably included in the tab order. The tab behavior is also not defined for discrete items that include conditional children.

Internally, the code essentially does a brute-force tab reordering when a row is added to the table and when the f(x) button is toggled for items that support both value and expression representations. (Interestingly, there is no additional code for removing rows. For the current test template, the Qt code just works.) This branch adds virtual methods qtItem::lastEditor() and qtItem::updateTabOrder() for most of the work, plus a qtItem::editingWidgetChanged signal for indicating when the widget displayed to the user has changed.

A new tabOrder.sbt file is added for test and debug.

image

Edited by John Tourtellott

Merge request reports