We encountered the following issue:
1. Create a simple app with QWebEngineView as the main window and open a FIDO2 authentication page, it works fine with the Yubikey.
2. If we put the QWebEngineView into a QDialog, and do the same FIDO2 authentication test, it does not work.
Basically, a modal Qt dialog does not work, but the same thing works in a non-modal window.
After debugging the program, we figured out that the issue is this line of program (as shown in the attached screenshot) in QCocoaEventDispatcher::processEvents. If we change the NSModalPanelRunLoopMode into NSDefaultRunLoopMode, then the issue is fixed.
Apparently, with NSModalPanelRunLoopMode (currently being used by the Qt modal dialog event loop), the modal dialog cannot process all the events. This is preventing the Qt modal dialog from working correctly for the FIDO2 authentication.
In general, Qt model dialog cannot pick up and handle all the events does put a limitation on its usage, and this limitation is not well documented, and it is not straightforward to resolve.
Should this issue be addressed by Qt?