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