gnucash master: Bug 797760 - Broken register split activity...
John Ralls
jralls at code.gnucash.org
Mon May 18 17:16:56 EDT 2020
Updated via https://github.com/Gnucash/gnucash/commit/279a632b (commit)
from https://github.com/Gnucash/gnucash/commit/07325f79 (commit)
commit 279a632b408befe4c63cee3092c21d94d15d3704
Author: John Ralls <jralls at ceridwen.us>
Date: Mon May 18 14:14:08 2020 -0700
Bug 797760 - Broken register split activity...
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.
diff --git a/gnucash/register/register-gnome/combocell-gnome.c b/gnucash/register/register-gnome/combocell-gnome.c
index f36376009..704da882c 100644
--- a/gnucash/register/register-gnome/combocell-gnome.c
+++ b/gnucash/register/register-gnome/combocell-gnome.c
@@ -718,6 +718,14 @@ gnc_combo_cell_direct_update (BasicCell* bcell,
/* fall through */
case GDK_KEY_Tab:
case GDK_KEY_ISO_Left_Tab:
+ if (gnc_item_list_using_temp (box->item_list))
+ {
+ char* string = gnc_item_list_get_selection (box->item_list);
+ g_signal_emit_by_name (G_OBJECT (box->item_list), "change_item",
+ string, (gpointer)bcell);
+ g_free (string);
+ return FALSE;
+ }
if (! (event->state & GDK_CONTROL_MASK) &&
!keep_on_going)
return FALSE;
diff --git a/gnucash/register/register-gnome/gnucash-item-list.c b/gnucash/register/register-gnome/gnucash-item-list.c
index 09b50c3fc..0002167bf 100644
--- a/gnucash/register/register-gnome/gnucash-item-list.c
+++ b/gnucash/register/register-gnome/gnucash-item-list.c
@@ -201,6 +201,22 @@ gnc_item_list_select (GncItemList* item_list, const char* string)
g_free (to_find_data);
}
+char*
+gnc_item_list_get_selection (GncItemList *item_list)
+{
+ GtkTreeIter iter;
+ GtkTreeModel* model;
+ gchar* string;
+
+ GtkTreeSelection *selection =
+ gtk_tree_view_get_selection (item_list->tree_view);
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter))
+ return FALSE;
+
+ gtk_tree_model_get (model, &iter, 0, &string, -1);
+ return string;
+}
+
void
gnc_item_list_show_selected (GncItemList* item_list)
@@ -326,21 +342,13 @@ static gboolean
gnc_item_list_key_event (GtkWidget* widget, GdkEventKey* event, gpointer data)
{
GncItemList* item_list = GNC_ITEM_LIST (data);
- GtkTreeSelection* selection = NULL;
- GtkTreeIter iter;
- GtkTreeModel* model;
gchar* string;
gboolean retval;
switch (event->keyval)
{
case GDK_KEY_Return:
- selection = gtk_tree_view_get_selection (item_list->tree_view);
- if (!gtk_tree_selection_get_selected (selection, &model, &iter))
- return FALSE;
-
- gtk_tree_model_get (model, &iter, 0, &string, -1);
-
+ string = gnc_item_list_get_selection (item_list);
g_signal_emit (G_OBJECT (item_list),
gnc_item_list_signals[ACTIVATE_ITEM],
0,
diff --git a/gnucash/register/register-gnome/gnucash-item-list.h b/gnucash/register/register-gnome/gnucash-item-list.h
index 2be05f28e..74e7d7bd0 100644
--- a/gnucash/register/register-gnome/gnucash-item-list.h
+++ b/gnucash/register/register-gnome/gnucash-item-list.h
@@ -80,6 +80,13 @@ void gnc_item_list_select (GncItemList *item_list, const char *string);
void gnc_item_list_show_selected (GncItemList *item_list);
+/** Retrieve the selected string from the item_list's active GtkListStore.
+ *
+ * @param item_list the GncItemList
+ * @return the string value. It must be freed with g_free().
+ */
+char* gnc_item_list_get_selection (GncItemList *item_list);
+
int gnc_item_list_autosize (GncItemList *item_list);
void gnc_item_list_set_temp_store (GncItemList *item_list, GtkListStore *store);
Summary of changes:
gnucash/register/register-gnome/combocell-gnome.c | 8 +++++++
.../register/register-gnome/gnucash-item-list.c | 26 ++++++++++++++--------
.../register/register-gnome/gnucash-item-list.h | 7 ++++++
3 files changed, 32 insertions(+), 9 deletions(-)
More information about the gnucash-changes
mailing list