If the horizontal scrollbar is present for a register and you start to
tab from one cell to the next one that is not in view the sheet does
not scroll to keep the active cell in view.
This commit fixes that by getting the active cell horizontal offset and
width and comparing it to the sheet width and window width.
To reproduce this, with an existing list of four recently opened files,
open a fifth file whose name must differ from those already in the list
and you will observe that the file history list is not updated.
This was down to when doing the 'File->Open', a call is made to
gnc_close_gui_component_by_session which closes the existing pages and
as part of that the preference callbacks for the history plugin page
were being removed along with some others like for tab placement.
To fix this added the removal inside an if statement that checks to see
if the window is quitting or not.
Wrapping the std::vector to hold the log flags is unneeded and actually harmful.
Just work on the vector directly. If user doesn't specify any '--log' options
the vector will just be empty.
With GnuCash's main libraries now linked at startup instead of being
dlopened at runtime except by Guile we can restrict the library path
renaming to Gnu Libtool's environment variable.
Windows build failed on creating gchar *format with g_strdup_printf
parameter '%ld' expects argument of type 'long int', but argument 3 has
type 'size_t' {aka 'unsigned int'}
Fixed by replacing strlen with g_utf8_strlen.
With GnuCash's main libraries now linked at startup instead of being
dlopened at runtime except by Guile we can restrict the library path
renaming to Gnu Libtool's environment variable.
This reverts commit afcf1765f6.
Not satisfactory. Introduces unacceptable delay after each
keystroke. Will try again when knapsack algorithm is improved to
generate toclear_list as GHashTable value.
When you duplicate a transaction, the dialog presented has a
GtkSpinbutton for the number field and non-numeric values are being
discarded. The register and transfer dialog have a GtkEntry for this
field so change this dialog to using them also.
This is responsible for test failures on DST transition days.
See the comments in gnc-timezone.cpp for an explanation of why this is
correct. The rubric was tested on macOS, Arch Linux, Debian Unstable,
Fedora 33, and Ubuntu 18.04 to confirm universal applicability.
If you have more than one Gnucash window open is is very easy to close
the wrong window with the 'x' and in doing so change your saved pages.
The way to save the configuration of all windows and pages is to use
'File->Quit'.
Add ability to do key combination Ctrl+Alt+Menu to bring up the main
notebook menu so pages can be selected.
Also add Ctrl+Alt+a to jump to the Accounts page with the 'a' being
translatable.
With the focus on the webkit webview, this key sequence can be used to
scroll the view. For the key sequence to work for tab page switching a
callback is connected to the 'key-press-event' for the webkit view and
checked for the sequence and passed to the notebook if required.
If you have report pages that are left open when the current book is
'Saved' and then use the 'File->Open' to open a new book Gnucash may
crash. This was traced to the use of a g_idle_add to delay loading the
reports in the pages that was not being cleared when the first book was
closed.
To fix this the g_idle_add has been removed and the loading of the
report has been moved to the page focus function. By using a flag to
indicate when pages are being restored, the report loading is delayed
until the page is focused which has also decreased book loading time
especially if no report pages were the current page when the book was
closed.
There are two functions used for starting the import-main-matcher, one
using dialogs and one for it being embedded in an assistant. These two
functions gnc_gen_trans_list_new and gnc_gen_trans_assist_new share
some common code so factor out that part to ease maintenance.
When OFX import is first used and the file chosen, an account select
dialog will be shown but the parent was being obtained from a hidden
import-main-matcher dialog. This fails so get the parent from the
transient parent of the import-main-matcher dialog.