I can reproduce this consistently on Windows 11 with current source.
Steps:
1) Open calibre. The first row is selected. First col: title. Second col: authors.
2) Press down-arrow twice to select the third row.
3) Press F2. The title editor is opened.
4) Press right arrow to remove the selection. This signals a change so model.set_data() is called
5) Press Tab. Title is closed, authors is edited.
6) Press ESC to close the editor
At this point everything is still OK. The correct book is displayed in book details.
7) Press left arrow to go to the title, still on line 3.
8) Press F2 to edit the title.
9) Press right arrow to remove the selection.
10) Press Tab to move the editor to authors.
At this point book details shows the first row book, but authors on the third book is being edited.
Tracing it, it seems that the "extra" editor being opened (see views.closeEditor()) is changing the current index to the first row. When the correct editor is later opened, new_bookdisplay_data isn't emitted, perhaps because something doesn't realize the current row was previously changed. The signal chain is long and complicated.
The following change to edit() at line 1657 in views.py fixes it by telling book details to show the "real" current book. Unfortunately I don't know what side effects it might have. I haven't seen any.
I can reproduce this consistently on Windows 11 with current source.
Steps:
1) Open calibre. The first row is selected. First col: title. Second col: authors.
2) Press down-arrow twice to select the third row.
3) Press F2. The title editor is opened.
4) Press right arrow to remove the selection. This signals a change so model.set_data() is called
5) Press Tab. Title is closed, authors is edited.
6) Press ESC to close the editor
At this point everything is still OK. The correct book is displayed in book details.
7) Press left arrow to go to the title, still on line 3.
8) Press F2 to edit the title.
9) Press right arrow to remove the selection.
10) Press Tab to move the editor to authors.
At this point book details shows the first row book, but authors on the third book is being edited.
Tracing it, it seems that the "extra" editor being opened (see views.closeEdit or()) is changing the current index to the first row. When the correct editor is later opened, new_bookdisplay _data isn't emitted, perhaps because something doesn't realize the current row was previously changed. The signal chain is long and complicated.
The following change to edit() at line 1657 in views.py fixes it by telling book details to show the "real" current book. Unfortunately I don't know what side effects it might have. I haven't seen any.
def edit():
self. setCurrentIndex (index)
self. edit(index)
self. _model. current_ changed( index, None) # added
@kovid, let me know if I can run tests for you.