Connect to the GtkEntry's preedit-changed signal and stash the preedit
length.
Uses the PangoLayout's text instead of the GtkEntry's because the former
includes the current preedit string and the latter does not. Add the
preedit length to the cursor position so that the cursor is drawn to the
right (left in RTL languages) of the preedit.
several speed ups
1. split->owner will now cache results, bypassing
gncOwnerGetOwnerFromLot and gncInvoiceGetInvoiceFromLot for repeated
calls to the same split.
2. previously each call to split->owner would allocate a new
gncOwner. now a new gncOwner is only allocated during a cache
miss. the list of gncOwners is maintained and is purged when
split->owner is called with #f. There is no need to maintain a tofree
list of gncOwners anymore.
3. instead of slow gncOwnerReturnGUID to test equality, use gncOwnerEqual
Instead of using the sheet row height as the basis of obtaining the
popup height use the treeview cellrenderer height instead. This has the
advantage that any CSS font change applied to the treeview will be used
to get the correct height.
As the popup_item is cell dependant, the popup size-allocate check
callback needs to be setup when entering a cell and removed when
leaving so move this to the gnc_item_edit_set_popup function.
When item_edit is destroyed it tries to remove a signal handler based
on the saved id for the size-allocate signal for popups. If there have
been no popup used this id value is 0 so to prevent this error check
for id number greater than 0 before being used.
When using type-ahead, it clears the tmp_store in gnc_combo_cell_enter
so clearing the action list. Change this to only clear the tmp_store
when using quickfill or type-ahead.
A GtkScrolledWindow in automatic mode reserves at least enough space for
its vertical scrollbar even if it's empty. This causes the combo to be
at least two rows tall even when there's only one item, which is ugly.
Worse, it caused check_popup_height_is_true to fail resulting in an
infinite loop because it's predicated on there being a size error that
can be fixed by calling gnc_item_edit_update, which will cause a redraw
and call check_popup_height_is_true again.
In an account register, scrolling stops working when the mouse pointer
re-enters the scrollbar after leaving it. This was caused by a fix for
the scrollbar not being updated in earlier versions of Gtk+. Having
removed this earlier fix and tried on Windows 10 and two flavours of
Linux with the current version of Gtk+ the earlier problem is not
evident so this commit removes that fix.
Once the transfer account is selected and control returned to the
Generic main matcher window the transaction rows will now be unselected.
This commit reselects the appropriate rows.
cannot delete splits, unable to tab complete account name.
The final piece, commits the currently selected item in the PopBox
when tabbing out of a register combocell in type-ahead mode.
Don't clear the selection before passing the event to the entry's
keypress handler. Instead set the sheet selection from the entry
when the handler returns.
Change the Options GtkCheckBox to use its own built-in label and remove
the label in the first column. The GtkCheckBox will still be placed in
the second column and aligned with the other widgets.
1. taxtables? was a hack to disable tax display; this is now obsolete
since bug 573645 was fixed with 8221aada. the equivalent
taxinvoice.eguile.scm hack was removed with 0eb2c2b3 but never removed
in receipt.eguile.scm
2. break out date<? comparator
3. use lispy for-each instead of pythonic for
3. compact code
1. break out date<? comparator
2. the (if (not (null? opt-invoice)) ...) section is always run
because display-report is only called when opt-invoice isn't null
3. use lispy for-each instead of pythonic for loops
error in commit 710b559cc4
xaccSplitGetSharePrice is priced in the transaction
currency. gnc-account-get-currency-or-parent would only output the
correct price currency if the chart of accounts was set up properly.
also: for Dr/Cr display, small modification to ensure a "$0.00" is
rendered when the split value is neither positive nor negative.