r14532 - gnucash/branches/register-rewrite/src/gnome-utils - Get better behavior when tabbing out of a blank split by creating a new blank

Chris Shoemaker chris at cvs.gnucash.org
Sun Jul 16 22:33:12 EDT 2006


Author: chris
Date: 2006-07-16 22:33:12 -0400 (Sun, 16 Jul 2006)
New Revision: 14532
Trac: http://svn.gnucash.org/trac/changeset/14532

Modified:
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c
   gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h
Log:
  Get better behavior when tabbing out of a blank split by creating a new blank
  split to move to.


Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c	2006-07-17 02:04:59 UTC (rev 14531)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view-transaction.c	2006-07-17 02:33:12 UTC (rev 14532)
@@ -1567,6 +1567,7 @@
     GtkTreeView *tv = GTK_TREE_VIEW(treeview);
     GtkTreeViewColumn *col;
     GtkTreePath *path = NULL;
+    gboolean wrapped, tabbed = FALSE;
 
     if (event->type != GDK_KEY_PRESS) return TRUE;
 
@@ -1574,16 +1575,25 @@
     case GDK_Tab:
     case GDK_ISO_Left_Tab:
     case GDK_KP_Tab:
+        tabbed = TRUE;
+        break;
     case GDK_Return:
     case GDK_KP_Enter:
-        gtk_tree_view_get_cursor(tv, &path, &col);
-        if (!path) return TRUE;
-        finish_edit(col);
         break;
     default: return TRUE;
     }
-    gnc_tree_view_keynav(GNC_TREE_VIEW(tv), &col, path, event);
 
+    gtk_tree_view_get_cursor(tv, &path, &col);
+    if (!path) return TRUE;
+    finish_edit(col);
+    wrapped = gnc_tree_view_keynav(GNC_TREE_VIEW(tv), &col, path, event);
+
+    if (wrapped && tabbed) {
+        mark_split_dirty(GNC_TREE_VIEW_TRANSACTION(tv), NULL, NULL);
+        gtk_tree_view_get_cursor(tv, &path, &col);
+        wrapped = gnc_tree_view_keynav(GNC_TREE_VIEW(tv), &col, path, event);
+    }
+
     if (!path || !gnc_tree_view_path_is_valid(GNC_TREE_VIEW(tv), path)) {
         /* no need to restore cursor because we won't move. */
         transaction_changed_confirm(GNC_TREE_VIEW_TRANSACTION(tv), NULL);

Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c	2006-07-17 02:04:59 UTC (rev 14531)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.c	2006-07-17 02:33:12 UTC (rev 14532)
@@ -2103,22 +2103,23 @@
     return gtk_tree_model_get_iter(s_model, &iter, path);
 }
 
-void
+gboolean
 gnc_tree_view_keynav(GncTreeView *view, GtkTreeViewColumn **col, 
                      GtkTreePath *path, GdkEventKey *event)
 {
     GtkTreeView *tv = GTK_TREE_VIEW(view);
     gint depth;
-    gboolean shifted;
+    gboolean shifted, wrapped;
 
-    if (event->type != GDK_KEY_PRESS) return;
+    if (event->type != GDK_KEY_PRESS) return FALSE;
 
     switch (event->keyval) {
     case GDK_Tab:
     case GDK_ISO_Left_Tab:
     case GDK_KP_Tab:
         shifted = event->state & GDK_SHIFT_MASK;
-        if (get_column_next_to(tv, col, shifted)) {
+        wrapped = get_column_next_to(tv, col, shifted); 
+        if (wrapped) {
             /* This is the end (or beginning) of the line, buddy. */
             depth = gtk_tree_path_get_depth(path);
             if (shifted) {
@@ -2140,6 +2141,7 @@
 
     case GDK_Return:
     case GDK_KP_Enter:
+        wrapped = TRUE;
         if (gtk_tree_view_row_expanded(tv, path)) {
             gtk_tree_path_down(path);
         } else {
@@ -2153,7 +2155,7 @@
         }
         break;
     }
-    return;
+    return wrapped;
 }
 
 gboolean

Modified: gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h
===================================================================
--- gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h	2006-07-17 02:04:59 UTC (rev 14531)
+++ gnucash/branches/register-rewrite/src/gnome-utils/gnc-tree-view.h	2006-07-17 02:33:12 UTC (rev 14532)
@@ -392,8 +392,8 @@
 /* Takes a GdkEventKey and the current path and column for the
  * treeview.  Interprets the event as something that might move the
  * cursor.  Returns the new column and the possibly changed (if
- * navigation wrapped a row) path. */
-void
+ * navigation wrapped a row) path.  Returns TRUE if the path changed. */
+gboolean
 gnc_tree_view_keynav(GncTreeView *view, GtkTreeViewColumn **col, 
                      GtkTreePath *path, GdkEventKey *event);
 



More information about the gnucash-changes mailing list