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