Topics

Multiselection in Thunderbird message list

Alberto Buffolino
 

Hi all,
hopefully fixed multiselection support in sysListView32 yesterday, now I have problems with same functionality in Thunderbird message list.
Apparently (from my web searches), even if the list supports multiselection, there is no way to provide it programmatically, but it sounds me very strange. IAccessible accSelect is present, but it not seems to accept same parameters of the version for sysListView32, and I cannot find references, and selectRow determines unselection of all other rows...
For the moment, I have written this workaround (res is the item list):
***
if useMultipleSelection:
api.setNavigatorObject(res)
runSilently(commands.script_navigatorObject_moveFocus, res)
inputManager.emulateGesture(KeyboardInputGesture.fromName("space"))
else:
table = self.parent.IAccessibleTable2Object
resIndex = res.positionInfo["indexInGroup"]-1
table.selectRow(resIndex)
***
I not like it, but it works, even if unfortunately the emulation stops NVDA reading of list item, quite unconfortable.
Do you have suggestions? Maybe Jamie, or Marco Zehe, if subscribed to this list... yes, I know Thunderbird is not under Mozilla evermore, but, well...
Thanks in advance.
Alberto

Alberto Buffolino
 

Alberto Buffolino via Groups.Io, il 29/05/2019 12.18, ha scritto:
IAccessible accSelect is present, but it not seems to accept same parameters of the version for sysListView32, and I cannot find references
Alberto:
fixed. Just for reference, accSelect is present and working, as specified here:
https://developer.mozilla.org/en-US/docs/Mozilla/Tech/Accessibility/AT-APIs/MSAA/Interfaces#accSelect
but it not seems to accept xor of flagsSelect, so you surely can do:
nav.IAccessibleObject.accSelect(oleacc.SELFLAG_ADDSELECTION | oleacc.SELFLAG_TAKEFOCUS, 0)
but only focus flag is honored. So, split calls:
nav.IAccessibleObject.accSelect(oleacc.SELFLAG_ADDSELECTION, 0)
nav.IAccessibleObject.accSelect(oleacc.SELFLAG_TAKEFOCUS, 0)
Note: 0 is the constant IAccessibleChildID.
Alberto