Open notepad in Kleopatra and start encryption with symmetric passphase.
The pinentry window pops up and NVDA reads (according to speech log)
```
pinentry-qt5 dialog Enter passphrase
Passphrase: edit protected blank
pinentry-qt5 dialog Enter passphrase
```
where the second line isn't audible. Maybe it's canceled/skipped in favor of the third line.
```
INFO - __main__ (17:04:31.564) - MainThread (5092):
Starting NVDA version 2025.1.2 x86
[...]
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.376) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_DialogUIAWindowNVDAObject object at 0x05DB3E10>
name: pinentry-qt5
role: DIALOG
event: foreground
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinEntryDialog
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.376) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_DialogUIAWindowNVDAObject object at 0x0941AA90>
name: pinentry-qt5
role: DIALOG
event: focusEntered
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinEntryDialog
IO - speech.speech.speak (17:05:59.444) - MainThread (5092):
Speaking [LangChangeCommand ('en_GB'), 'pinentry-qt5', 'dialog', 'Enter passphrase\n', CancellableSpeech (still valid)]
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.446) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionUIA object at 0x013F81F0>
name: Passphrase:
role: EDITABLETEXT
event: gainFocus
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinLineEdit
DEBUG - NVDAObjects.NVDAObject._get_placeholder (17:05:59.455) - MainThread (5092):
Potential unimplemented child class: <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionUIA object at 0x013F81F0>
IO - speech.speech.speak (17:05:59.471) - MainThread (5092):
Speaking [LangChangeCommand ('en_GB'), 'Passphrase:', 'edit', 'protected', CancellableSpeech (still valid), 'blank']
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.476) - MainThread (5092):
EvtTracker: object: <NVDAObjects.IAccessible.Button object at 0x013F8E50>
name: pinentry.exe - 1 running window
role: BUTTON
event: stateChange
states: 16, 8192, 16777216
app module: AppModule(explorer, appName='explorer', processID=4632)
window class name: MSTaskListWClass
IAccessible accName: 'pinentry.exe - 1 running window'
IAccessibleChildID: 13
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.478) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_EditableTextWithAutoSelectDetectionUIA object at 0x013F81F0>
name: Passphrase:
role: EDITABLETEXT
event: loseFocus
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinLineEdit
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.479) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_DialogUIAWindowNVDAObject object at 0x095E3E50>
name: pinentry-qt5
role: DIALOG
event: gainFocus
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinEntryDialog
IO - speech.speech.speak (17:05:59.561) - MainThread (5092):
Speaking [LangChangeCommand ('en_GB'), 'pinentry-qt5', 'dialog', 'Enter passphrase\n', CancellableSpeech (still valid)]
DEBUG - external:globalPlugins.evtTracker.GlobalPlugin.evtDebugLogging (17:05:59.564) - MainThread (5092):
EvtTracker: object: <NVDAObjects.Dynamic_DialogUIAWindowNVDAObject object at 0x013F8350>
name: pinentry-qt5
role: DIALOG
event: UIA_window_windowOpen
app module: AppModule(appModuleHandler, appName='pinentry', processID=7840)
window class name: Qt5159QWindowIcon
UIA Automation Id:
class name: PinEntryDialog
```
We see
* focusEntered for pinentry-qt5 dialog -> NVDA speaks `pinentry-qt5 dialog Enter passphrase`
* gainFocus for Passphrase input field -> NVDA speaks `Passphrase: edit protected blank`
* loseFocus for Passphrase input field
* gainFocus for pinentry-qt5 dialog -> NVDA speaks `pinentry-qt5 dialog Enter passphrase`
This could point to a bug in Qt with wrong order of events, e.g. focus event for dialog is sent after focus event for input field.
Update: This also happens with Qt 6 and with many secondary windows in kleopatra (e.g. Create New OpenPGP Certificate, Error windows, etc.).