This fix rewrites the Ancestor-of +/- N filters to remove the try/except
and removes the recursion. The recursion would only be a problem
on very deep trees, but the try/except was hiding a variety of
problems. Most directly, if a person did not have a main family
then it would exit out of the loop.
(I don't have a test database to break the code other than my
real data, so you'll have to do that part.)
I also made sure that the meaning of N is consistent in
both filters:
1 - root person
2 - root person's parents
3 - root person's grandparents
[EOFError: Ran out of input] for Clipboard when you drag and
drop the bolded lines in selected tabs of Person Edit
Attempt to drag and drop any of the "bolded lines" in the Events or
Names tabs into the clipboard window. The unbolded lines drag and drop
ok.
Fixes#8788.
I copied 7 items from the Media List to the clipboard. I then opened a
Person, and dragged one Media Item to the Gallery. I then clicked and
dragged to highlight the remaining 6 items at once. On dragging them to
the gallery, it crashed.
2989475: ERROR: grampsapp.py: line 145: Unhandled exception
Traceback (most recent call last):
File "C:\Program
Files\GrampsAIO64-4.2.5\gramps\gui\editors\displaytabs\gallerytab.py",
line 475, in drag_data_received
(mytype, selfid, obj, row_from) = pickle.loads(sel_data.get_data())
ValueError: too many values to unpack (expected 4)
Fixes#9984.
Allows dnd of textual values from clipboard and shows icon of
target-type during dragging instead of row image, except for text target
shows actual text as drag icon.
Fixes#7532.
Crash happen when checking for "event.string" in "treeview_keypress"
function in "gramps/gui/widgets/interactivesearchbox.py"
Note that
https://lazka.github.io/pgi-docs/Gdk-3.0/classes/EventKey.html#Gdk.EventKey
says it is deprecated and should never be used.
Gdk.keyval_to_unicode return the corresponding unicode character, or 0
if there is no corresponding character.
Fixes#9130.
The mixed type of handles has been a constant source of bugs.
Converting them all to str in the database API should make
maintenance easier. The key to BSDDB tables must still be bytes
in the database layer.
The term "Delete" should be used when an object is deleted from
the database. The term "Remove" should be used when an object is
removed from a list, but not actually deleted.