v2.1.0rc0-568-g974a9e3 from master, Qt 5.5.1 on Arch Linux x86_64.
Now that the UAT dialog does not crash anymore, the other UX bugs mentioned in https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=11031#c6 are still present:The UAT dialog implementation in Qt has some changes/regressions from Gtk: - Using Tab/Enter to switch between fields does not work. (Enter always focuses the first column when not editing and does nothing when already editing) Expected behavior: Enter stops editing, tab moves to the next field - Empty values can be entered which will then be accepted (Try "Add" in the SSL keys dialog without modifying fields). Expected behavior: empty values should be discarded. What about missing values? Should those rows also be discarded?The comments in uat_dialog.cpp suggest to make a UatModel. Maybe that could be done to avoid re-implementing the focus functionality inhttps://doc.qt.io/qt-5/focus.html. On the short term, we could try intercepting Tab and Shift+Tab though.
Important issues that need to be fixed that currently cause crashes: - Validation of a full record after editing (see also other improvements below). - Block OK button if an edited/added row is bad (*1). - As a special case, ignore newly added rows which were not modified - Prevent a removed row from being checked/used when the editor closes. (*1) do not do this for every existing item because of bug 7471? (people may still want to add new entries even if the existing entries are bad, for example due to a missing USB drive for filename fields?)Other possible UX improvements: - On pressing Enter while Editing, the dialog should not close, only the editor. - Likewise for pressing Escape while editing. - Color a full row if some field within the record is bad. - On selecting a cell, display its error message or the error message for other fields in the same record when the current cell is good. - Alternatively, when individual cells also get a highlight, just show the error message only when the cell is selected. - (minor) Stop editing when the field focus is gone? (click in empty area) - Allow resize of columns, the USER DLT UAT for example currently shows an ellipsis due to its use of a select menu which needs more space to fit. - Maybe it is also time to fix "Add drag reordering to UAT dialog". - Add one empty row that can be used to immediately add a new entry, suggested at http://ux.stackexchange.com/a/15637/91459 - Currently, when the validation fails, the last input is used (e.g. if you type "ff" in a field that must be non-empty, then delete characters one by one, the last potentially valid input is used ("f")). This is not very intuitive.The dialog looks inspired by the OS X user interface (+/- button, inline editing). However the only example I could find was in the keyboard dialog where you can add spelling corrections. In that dialog you can enter a word to be matched (min. length 2) and a replacement word. - If you add a new entry and just enter one of the two fields, then change to a different tab and return, the new row is gone. (The row was invalid as one of the two fields was empty). - You can only add one new row at a time. - When adding a row, as long as some fields are not fully filled in, the record validation is not triggered (i.e. requiring min. length) - When editing an existing field, and the replacement word is cleared, a warning dialog is displayed after which the original contents is restored. - Interestingly, when a new, incomplete row (i.e. with only one field filled) exists, and an existing row is removed, then the new row is also gone.Let's see if a sane UatModel can be designed. Resources:https://doc.qt.io/qt-5/model-view-programming.htmlhttps://doc.qt.io/qt-5/modelview.html