And:
- Rework a few ZP functions to take items arrays instead of always
acting on selected items
- Move string to Fluent
- Build entire Add to Collection menu programmatically
- Section buttons, Locate, and Notes in the sidenav are focusable
- itemPane section buttons are combined into one focusable
group. Those buttons by themselves don't mean anything in
the context of keyboard navigation as they just scroll
to the section in the itemPane. In fact, having info,
abstract, attachments, etc. focusable and announceable by
screen readers is just confusing. However, we do want the group
of those buttons to be focusable to switch back to
zotero-context-pane-item-deck from zotero-context-pane-notes-deck
if the notes button in the sidenav is pressed.
- sidenav can be reached by tabbing into it from the end of itemPane
or via shift-tab from the focused tab
- sidenav buttons can be navigated with up/down arrows
- notes list in the context pane can be activated via the button in the
sidenav and navigated via up/down arrows
- use command vs onclick listener for notes list context menus to work
with keyboard-triggered clicks as well
- focus itemPane when tabs are switched in sidenav
Do not try to re-select a previously selected item
if it was filtered out from itemTree, e.g. after
it was removed from currently selected collection.
Otherwise, quick search gets cleared in an attempt to
re-select the item.
Fixes: #4616
Unify plugin API classes
Add info box custom row API tests
Refactor itemBox.js create element
Wrap hooks in API for safe call
Add test for item tree api and hook error handling
Remove try/catch from #4816
Move plugin API definitions to xpcom/pluginAPI
If you unlinked your sync account and then relinked, the ZFS storage
controller would still have the old API key and file-sync requests would
fail. Since that was never supposed to be possible, it resulted in
"Group with libraryID 1 does not exist" errors during file syncing until
you restarted the app.
Move handling of tabs' renaming when an item is
modified from Reader into Zotero_Tabs, so that the titles of
unloaded tabs can get properly renamed.
Have the Reader and Zotero_Tabs share Zotero.Item#getTabTitle()
to handle title updates in both tabs and standalone reader windows.
Fixes: #4646
When items are selected, itemTree scrolls to them. Depending on the
arrangement of items, it will often default to scrolling to
the top-most item in the selection, which is not the focused row
in case of duplicates view. To scroll to focused row without
unnecessary scrolling or items visibly jumping to one row and then
another, added option to skip scrolling in itemTree.selectItems.
Only move focus out of the reader iframe on tab/shift-tab
if the reader instance is opened within a tab, meaning the
sync button and the contextPane exist. If the reader
is opened in a standalone window, do nothing.
Fixes: #4823
LightweightThemeConsumer interacts with the color scheme,
so disabling it prevents the color scheme from changing
whenever zoteroPrint runs.
Fixes: #4782
This seems to be a Firefox bug that exists even in Firefox 132.0a1 (2024-09-29).
Note that right-clicking to open the context menu on a contenteditable element also triggers an update to the Edit menu.
The fix updates all Edit menu options except Redo, which cannot be enabled due to ProseMirror modifying the contenteditable state after each change.
Partial fix for #3398
I think this was only in Everything for historical reasons -- in the
initial implementation of search modes, tags, notes, and (old)
annotations were all in Everything, but tags and notes were later moved
to All Fields & Tags. The old `annotation` condition wasn't moved, and
when I added `annotationComment` and `annotationText`, I just left them
in the same place. But if we match notes in All Fields & Tags, we should
match annotation comments, and if we're matching comments, we might as
well match annotation text as well.
https://forums.zotero.org/discussion/119123/note-annotations-zotero-search-and-zotero-pdf-viewer-search