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