r22296 - gnucash/trunk/src/gnome - Bug #677859 - Allow space to (un)reconcile in the reconcile window

Geert Janssens gjanssens at code.gnucash.org
Wed Aug 8 12:25:22 EDT 2012


Author: gjanssens
Date: 2012-08-08 12:25:21 -0400 (Wed, 08 Aug 2012)
New Revision: 22296
Trac: http://svn.gnucash.org/trac/changeset/22296

Modified:
   gnucash/trunk/src/gnome/reconcile-view.c
Log:
Bug #677859 - Allow space to (un)reconcile in the reconcile window
This got lost in the conversion from clists to gtktreeview
Patch by Robert Fewell

Modified: gnucash/trunk/src/gnome/reconcile-view.c
===================================================================
--- gnucash/trunk/src/gnome/reconcile-view.c	2012-08-08 05:42:23 UTC (rev 22295)
+++ gnucash/trunk/src/gnome/reconcile-view.c	2012-08-08 16:25:21 UTC (rev 22296)
@@ -27,6 +27,7 @@
 
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
 
 #include "gnc-date.h"
 #include "qof.h"
@@ -59,6 +60,7 @@
 static void gnc_reconcile_view_line_toggled (GNCQueryView *qview, gpointer item, gpointer user_data);
 static void gnc_reconcile_view_double_click_entry (GNCQueryView *qview, gpointer item, gpointer user_data);
 static void gnc_reconcile_view_row_selected (GNCQueryView *qview, gpointer item, gpointer user_data);
+static gboolean gnc_reconcile_view_key_press_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_data);
 
 
 GType
@@ -129,6 +131,8 @@
                       G_CALLBACK (gnc_reconcile_view_double_click_entry), view);
     g_signal_connect (G_OBJECT (qview), "row_selected",
                       G_CALLBACK (gnc_reconcile_view_row_selected), view);
+    g_signal_connect(G_OBJECT (qview), "key_press_event",
+                     G_CALLBACK(gnc_reconcile_view_key_press_cb), view);
 }
 
 GtkWidget *
@@ -444,6 +448,56 @@
 }
 
 
+static gboolean
+gnc_reconcile_view_key_press_cb (GtkWidget *widget, GdkEventKey *event,
+                            gpointer user_data)
+{
+    GNCReconcileView  *view = GNC_RECONCILE_VIEW(user_data);
+    GNCQueryView      *qview = GNC_QUERY_VIEW(widget);
+    GtkTreeModel      *model;
+    GtkTreeIter        iter;
+    gpointer           entry, pointer;
+    gboolean           valid, toggle;
+
+    switch (event->keyval)
+    {
+    case GDK_space:
+        g_signal_stop_emission_by_name (widget, "key_press_event");
+
+        entry = gnc_query_view_get_selected_entry (qview);
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (qview));
+        valid = gtk_tree_model_get_iter_first (model, &iter);
+
+        while (valid)
+        {
+            /* Walk through the list, reading each row, column 0
+               has a pointer to the required entry */
+            gtk_tree_model_get (model, &iter, 0, &pointer, -1);
+
+            if(pointer == entry)
+            {
+                /* Column 5 is the toggle column */
+                gtk_tree_model_get (model, &iter, 5, &toggle, -1);
+
+                if(toggle)
+                    gtk_list_store_set (GTK_LIST_STORE (model), &iter, 5, 0, -1);
+                else
+                    gtk_list_store_set (GTK_LIST_STORE (model), &iter, 5, 1, -1);
+            }
+            valid = gtk_tree_model_iter_next (model, &iter);
+        }
+        gnc_reconcile_view_toggle (view, entry);
+
+        return TRUE;
+        break;
+
+    default:
+        return FALSE;
+    }
+}
+
+
 static void
 gnc_reconcile_view_finalize (GObject *object)
 {



More information about the gnucash-changes mailing list