During Gramps startup, it is possible to start two modal dialogs;
the 'Family Trees' and the 'Update Addons' (when preferences is set
to check on startup). Both are modal.
This upgrades the Window manager and ManagedWindow to support this
case. If this occurs, then the most recent modal window is left
that way, a previous modal window is temporarily downgraded to
non-modal, and the newest window is set 'transient' for the previous
modal window, even if it was not the parent.
This means that there can be only one modal window, and it is always
on top and active.
This change was initiated to correct status bar and popup dialogs
that were coming up in the wrong place under Windows.
Upgrade to Managedwindow allows for size/position config, correct
popup of subordinate dialogs, and better window management in
relation to other dialogs.
The Glade change allows the transient parent function to work.
Note that UpdateAddons remains a modal dialog.
While performing a Merge Family that results in an error, the Error
dialog appears as normally initially.
However, if the user switches to another application and back, the
Error dialog can disappear (it is under the Merge dialog in the UI).
The mouse cannot clear this up (although the keyboard 'enter' or
'Esc' keys will be directed to the Error dialog and close everything.
Originally the progress bar and associated text was shown on the
summary page, but it was never seen since it was shown during the
Gtk assistant 'prepare' stage, before the page was shown.
Unmanaged dialogs are often called for errors, warnings, info etc.
On Windows, If called from a modal parent window, they can be a bit
confusing, since the parent window appears to still be active. This
fix makes the parent window non-modal for the duration of the dialog,
and then returns it to its original state.
Certain multiple commit transactions can leave the db in an inconsistent
state in between commits. If signals are emitted at each commit, GUI
elements can see the inconsistent state and report errors. This fix
delays the signal emission until all the commits are complete, presuming
that the db is consistent before and after the complete transaction.