r17984 - gnucash/trunk/src/register/register-gnome - Bug #523982: Fix the Enter key in double-line mode. The register had wrongly assumed one physical row per virtual row.

Charles Day cedayiv at cvs.gnucash.org
Mon Mar 9 14:23:25 EDT 2009


Author: cedayiv
Date: 2009-03-09 14:23:25 -0400 (Mon, 09 Mar 2009)
New Revision: 17984
Trac: http://svn.gnucash.org/trac/changeset/17984

Modified:
   gnucash/trunk/src/register/register-gnome/gnucash-sheet.c
Log:
Bug #523982: Fix the Enter key in double-line mode. The register had wrongly assumed one physical row per virtual row.


Modified: gnucash/trunk/src/register/register-gnome/gnucash-sheet.c
===================================================================
--- gnucash/trunk/src/register/register-gnome/gnucash-sheet.c	2009-03-09 17:17:57 UTC (rev 17983)
+++ gnucash/trunk/src/register/register-gnome/gnucash-sheet.c	2009-03-09 18:23:25 UTC (rev 17984)
@@ -1819,6 +1819,7 @@
 {
         GnucashSheet *sheet;
         VirtualLocation virt_loc;
+        int start_virt_row;
 
         g_return_if_fail (reg != NULL);
         g_return_if_fail (GNUCASH_IS_REGISTER(reg));
@@ -1827,8 +1828,14 @@
 
         gnucash_cursor_get_virt (GNUCASH_CURSOR(sheet->cursor), &virt_loc);
 
-        if (!gnc_table_move_vertical_position (sheet->table, &virt_loc, 1))
-                return;
+        /* Move down one physical row at a time until we
+         * reach the next visible virtual cell. */
+        start_virt_row = virt_loc.vcell_loc.virt_row;
+        do
+        {
+          if (!gnc_table_move_vertical_position (sheet->table, &virt_loc, 1))
+            return;
+        } while (start_virt_row == virt_loc.vcell_loc.virt_row);
 
         if (virt_loc.vcell_loc.virt_row >= sheet->num_virt_rows)
                 return;



More information about the gnucash-changes mailing list